]> git.ipfire.org Git - ipfire-2.x.git/commitdiff
Merge branch 'next' into fifteen
authorMichael Tremer <michael.tremer@ipfire.org>
Sun, 27 Oct 2013 12:12:12 +0000 (13:12 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Sun, 27 Oct 2013 12:12:12 +0000 (13:12 +0100)
307 files changed:
config/backup/backup.pl
config/backup/exclude
config/backup/include
config/cfgroot/ethernet-vlans
config/cfgroot/general-functions.pl
config/cfgroot/graphs.pl
config/cfgroot/header.pl
config/cfgroot/p2protocols [deleted file]
config/collectd/collectd.conf
config/firewall/convert-dmz [new file with mode: 0755]
config/firewall/convert-outgoingfw [new file with mode: 0755]
config/firewall/convert-portfw [new file with mode: 0755]
config/firewall/convert-xtaccess [new file with mode: 0755]
config/firewall/firewall-lib.pl [new file with mode: 0755]
config/firewall/firewall-policy [new file with mode: 0755]
config/firewall/p2protocols [new file with mode: 0644]
config/firewall/rules.pl [new file with mode: 0755]
config/fwhosts/customservices [new file with mode: 0644]
config/fwhosts/icmp-types [new file with mode: 0755]
config/kernel/kernel.config.armv5tel-ipfire-kirkwood
config/kernel/kernel.config.armv5tel-ipfire-multi [new file with mode: 0644]
config/kernel/kernel.config.armv5tel-ipfire-omap [deleted file]
config/kernel/kernel.config.armv5tel-ipfire-rpi
config/kernel/kernel.config.i586-ipfire
config/kernel/kernel.config.i586-ipfire-pae
config/kernel/kernel.config.i586-ipfire-xen [deleted file]
config/menu/50-firewall.menu
config/outgoingfw/defaultservices [deleted file]
config/outgoingfw/outgoingfw.pl [deleted file]
config/rootfiles/common/apache2
config/rootfiles/common/armv5tel/dracut
config/rootfiles/common/armv5tel/initscripts
config/rootfiles/common/armv5tel/installer [deleted file]
config/rootfiles/common/armv5tel/linux-kirkwood
config/rootfiles/common/armv5tel/linux-multi [new file with mode: 0644]
config/rootfiles/common/armv5tel/linux-omap [deleted file]
config/rootfiles/common/armv5tel/rpi-firmware
config/rootfiles/common/armv5tel/u-boot
config/rootfiles/common/armv5tel/u-boot-panda [new file with mode: 0644]
config/rootfiles/common/as86 [deleted file]
config/rootfiles/common/compat-drivers [deleted file]
config/rootfiles/common/configroot
config/rootfiles/common/cyrus-sasl
config/rootfiles/common/fireinfo
config/rootfiles/common/i586/initscripts
config/rootfiles/common/i586/mISDN [deleted file]
config/rootfiles/common/iptables
config/rootfiles/common/jquery [new file with mode: 0644]
config/rootfiles/common/libnl
config/rootfiles/common/libxml2
config/rootfiles/common/lzo
config/rootfiles/common/mbr [deleted file]
config/rootfiles/common/misc-progs
config/rootfiles/common/mysql [deleted file]
config/rootfiles/common/mysql-libs [new file with mode: 0644]
config/rootfiles/common/pakfire
config/rootfiles/common/paxctl [new file with mode: 0644]
config/rootfiles/common/stage2
config/rootfiles/common/vim
config/rootfiles/common/xz
config/rootfiles/core/73/filelists/GeoIP [deleted file]
config/rootfiles/core/73/filelists/hwdata [deleted file]
config/rootfiles/core/73/filelists/php [deleted symlink]
config/rootfiles/core/fifteen/exclude [moved from config/rootfiles/core/70/exclude with 100% similarity]
config/rootfiles/core/fifteen/filelists/armv5tel/glibc [new symlink]
config/rootfiles/core/fifteen/filelists/coreutils [new symlink]
config/rootfiles/core/fifteen/filelists/files [new file with mode: 0644]
config/rootfiles/core/fifteen/filelists/firewall [new file with mode: 0644]
config/rootfiles/core/fifteen/filelists/i586/glibc [new symlink]
config/rootfiles/core/fifteen/filelists/jquery [new symlink]
config/rootfiles/core/fifteen/filelists/libxml2 [new symlink]
config/rootfiles/core/fifteen/filelists/lzo [new symlink]
config/rootfiles/core/fifteen/filelists/misc-progs [new symlink]
config/rootfiles/core/fifteen/filelists/strongswan [moved from config/rootfiles/core/72/filelists/strongswan with 100% similarity]
config/rootfiles/core/fifteen/filelists/vim [new symlink]
config/rootfiles/core/fifteen/meta [moved from config/rootfiles/core/70/meta with 100% similarity]
config/rootfiles/core/fifteen/update.sh [moved from src/paks/linux-xen/update.sh with 56% similarity]
config/rootfiles/oldcore/66/filelists/files
config/rootfiles/oldcore/70/exclude [moved from config/rootfiles/core/71/exclude with 100% similarity]
config/rootfiles/oldcore/70/filelists/armv5tel/linux-kirkwood [moved from config/rootfiles/core/70/filelists/armv5tel/linux-kirkwood with 100% similarity]
config/rootfiles/oldcore/70/filelists/armv5tel/linux-omap [moved from config/rootfiles/core/70/filelists/armv5tel/linux-omap with 100% similarity]
config/rootfiles/oldcore/70/filelists/armv5tel/linux-rpi [moved from config/rootfiles/core/70/filelists/armv5tel/linux-rpi with 100% similarity]
config/rootfiles/oldcore/70/filelists/crda [moved from config/rootfiles/core/70/filelists/crda with 100% similarity]
config/rootfiles/oldcore/70/filelists/files [moved from config/rootfiles/core/70/filelists/files with 100% similarity]
config/rootfiles/oldcore/70/filelists/i586/grub.conf [moved from config/rootfiles/core/70/filelists/i586/grub.conf with 100% similarity]
config/rootfiles/oldcore/70/filelists/i586/linux [moved from config/rootfiles/core/70/filelists/i586/linux with 100% similarity]
config/rootfiles/oldcore/70/filelists/iw [moved from config/rootfiles/core/70/filelists/iw with 100% similarity]
config/rootfiles/oldcore/70/filelists/libjpeg [moved from config/rootfiles/core/70/filelists/libjpeg with 100% similarity]
config/rootfiles/oldcore/70/filelists/wireless-regdb [moved from config/rootfiles/core/70/filelists/wireless-regdb with 100% similarity]
config/rootfiles/oldcore/70/meta [moved from config/rootfiles/core/71/meta with 100% similarity]
config/rootfiles/oldcore/70/update.sh [moved from config/rootfiles/core/70/update.sh with 100% similarity]
config/rootfiles/oldcore/71/exclude [moved from config/rootfiles/core/73/exclude with 100% similarity]
config/rootfiles/oldcore/71/filelists/GeoIP [moved from config/rootfiles/core/71/filelists/GeoIP with 100% similarity]
config/rootfiles/oldcore/71/filelists/curl [moved from config/rootfiles/core/71/filelists/curl with 100% similarity]
config/rootfiles/oldcore/71/filelists/files [moved from config/rootfiles/core/71/filelists/files with 100% similarity]
config/rootfiles/oldcore/71/filelists/hwdata [moved from config/rootfiles/core/71/filelists/hwdata with 100% similarity]
config/rootfiles/oldcore/71/filelists/jwhois [moved from config/rootfiles/core/71/filelists/jwhois with 100% similarity]
config/rootfiles/oldcore/71/filelists/oinkmaster [moved from config/rootfiles/core/71/filelists/oinkmaster with 100% similarity]
config/rootfiles/oldcore/71/filelists/snort [moved from config/rootfiles/core/71/filelists/snort with 100% similarity]
config/rootfiles/oldcore/71/filelists/squid [moved from config/rootfiles/core/71/filelists/squid with 100% similarity]
config/rootfiles/oldcore/71/filelists/usb_modeswitch [moved from config/rootfiles/core/71/filelists/usb_modeswitch with 100% similarity]
config/rootfiles/oldcore/71/filelists/usb_modeswitch_data [moved from config/rootfiles/core/71/filelists/usb_modeswitch_data with 100% similarity]
config/rootfiles/oldcore/71/meta [moved from config/rootfiles/core/72/meta with 100% similarity]
config/rootfiles/oldcore/71/update.sh [moved from config/rootfiles/core/71/update.sh with 100% similarity]
config/rootfiles/oldcore/72/exclude [moved from config/rootfiles/core/72/exclude with 100% similarity]
config/rootfiles/oldcore/72/filelists/daq [moved from config/rootfiles/core/72/filelists/daq with 100% similarity]
config/rootfiles/oldcore/72/filelists/files [moved from config/rootfiles/core/72/filelists/files with 100% similarity]
config/rootfiles/oldcore/72/filelists/i586/strongswan-padlock [moved from config/rootfiles/core/72/filelists/i586/strongswan-padlock with 100% similarity]
config/rootfiles/oldcore/72/filelists/snort [moved from config/rootfiles/core/72/filelists/snort with 100% similarity]
config/rootfiles/oldcore/72/filelists/squid [moved from config/rootfiles/core/72/filelists/squid with 100% similarity]
config/rootfiles/oldcore/72/filelists/strongswan [new symlink]
config/rootfiles/oldcore/72/meta [moved from config/rootfiles/core/73/meta with 100% similarity]
config/rootfiles/oldcore/72/update.sh [moved from config/rootfiles/core/72/update.sh with 100% similarity]
config/rootfiles/oldcore/73/exclude [new file with mode: 0644]
config/rootfiles/oldcore/73/filelists/HTML-Template [moved from config/rootfiles/core/73/filelists/HTML-Template with 100% similarity]
config/rootfiles/oldcore/73/filelists/armv5tel/ath-modul [moved from config/rootfiles/core/73/filelists/armv5tel/ath-modul with 100% similarity]
config/rootfiles/oldcore/73/filelists/files [moved from config/rootfiles/core/73/filelists/files with 100% similarity]
config/rootfiles/oldcore/73/filelists/i586/ath-modul [moved from config/rootfiles/core/73/filelists/i586/ath-modul with 100% similarity]
config/rootfiles/oldcore/73/filelists/squid [moved from config/rootfiles/core/73/filelists/squid with 100% similarity]
config/rootfiles/oldcore/73/meta [new file with mode: 0644]
config/rootfiles/oldcore/73/update.sh [moved from config/rootfiles/core/73/update.sh with 100% similarity]
config/rootfiles/packages/clamav
config/rootfiles/packages/iotop [new file with mode: 0644]
config/rootfiles/packages/linux-xen [deleted file]
config/rootfiles/packages/mysql
config/rpi-firmware/config.txt
config/u-boot/boot.scr
config/u-boot/boot.script
config/vdr/etc/setup.conf
config/vim/vimrc [new file with mode: 0644]
config/w_scan/w_scan_start
config/xen-image/README
config/xen-image/ipfire.cfg
config/xen-image/xen-image-maker.sh [new file with mode: 0644]
doc/language_issues.de
doc/language_issues.en
doc/language_issues.es
doc/language_issues.fr
doc/language_issues.nl
doc/language_issues.pl
doc/language_issues.ru
doc/language_issues.tr
doc/language_missings
html/cgi-bin/ddns.cgi
html/cgi-bin/dmzholes.cgi [deleted file]
html/cgi-bin/firewall.cgi [new file with mode: 0755]
html/cgi-bin/fwhosts.cgi [new file with mode: 0755]
html/cgi-bin/index.cgi
html/cgi-bin/netinternal.cgi
html/cgi-bin/optionsfw.cgi
html/cgi-bin/outgoingfw.cgi [deleted file]
html/cgi-bin/ovpnmain.cgi
html/cgi-bin/p2p-block.cgi [new file with mode: 0755]
html/cgi-bin/portfw.cgi [deleted file]
html/cgi-bin/proxy.cgi
html/cgi-bin/speed.cgi
html/cgi-bin/upnp.cgi
html/cgi-bin/vpnmain.cgi
html/html/include/jquery-1.9.1.min.js [deleted file]
html/html/themes/ipfire/include/functions.pl
html/html/themes/maniac/include/functions.pl
langs/de/cgi-bin/de.pl
langs/de/install/lang_de.c
langs/en/cgi-bin/en.pl
langs/en/install/lang_en.c
langs/es/cgi-bin/es.pl
langs/es/install/lang_es.c
langs/fr/cgi-bin/fr.pl
langs/fr/install/lang_fr.c
langs/nl/cgi-bin/nl.pl
langs/nl/install/lang_nl.c
langs/pl/cgi-bin/pl.pl
langs/pl/install/lang_pl.c
langs/ru/cgi-bin/ru.pl
langs/ru/install/lang_ru.c
langs/tr/install/lang_tr.c
lfs/binutils
lfs/bridge-utils
lfs/cdrom
lfs/clamav
lfs/configroot
lfs/cpufrequtils
lfs/cyrus-sasl
lfs/dracut
lfs/ffmpeg
lfs/fireinfo
lfs/flash-images
lfs/gcc
lfs/glibc
lfs/grub
lfs/hostapd
lfs/initscripts
lfs/iotop [moved from lfs/as86 with 91% similarity]
lfs/iptables
lfs/iw
lfs/jquery [moved from lfs/linux-xen with 54% similarity]
lfs/keepalived
lfs/libnl
lfs/libxml2
lfs/linux
lfs/linux2 [deleted file]
lfs/lzo
lfs/memtest
lfs/miniupnpd
lfs/mysql
lfs/net-tools
lfs/openvmtools
lfs/pakfire
lfs/paxctl [moved from lfs/mbr with 89% similarity]
lfs/rpi-firmware
lfs/rsync
lfs/samba
lfs/stage2
lfs/strongswan
lfs/transmission
lfs/u-boot
lfs/usb-stick [deleted file]
lfs/vdr
lfs/vim
lfs/w_scan
lfs/xen-image
lfs/xz
make.sh
src/initscripts/init.d/firewall
src/initscripts/init.d/firstsetup
src/initscripts/init.d/network
src/initscripts/init.d/network-vlans
src/initscripts/init.d/tor
src/install+setup/install/probenic.sh
src/install+setup/libsmooth/libsmooth.h
src/install+setup/libsmooth/netstuff.c
src/misc-progs/Makefile
src/misc-progs/backupctrl.c
src/misc-progs/fireinfoctrl.c
src/misc-progs/firewallctrl.c [moved from src/misc-progs/outgoingfwctrl.c with 57% similarity]
src/misc-progs/getconntracktable.c
src/misc-progs/iowrap.c
src/misc-progs/ipfiredeath.c
src/misc-progs/ipfirerebirth.c
src/misc-progs/ipfirereboot.c
src/misc-progs/ipsecctrl.c
src/misc-progs/netutil.h [new file with mode: 0644]
src/misc-progs/openvpnctrl.c
src/misc-progs/pakfire.c
src/misc-progs/rebuildhosts.c
src/misc-progs/setaliases.c
src/misc-progs/setdmzholes.c [deleted file]
src/misc-progs/setportfw.c [deleted file]
src/misc-progs/setuid.c
src/misc-progs/setuid.h
src/misc-progs/setxtaccess.c [deleted file]
src/misc-progs/smartctrl.c
src/misc-progs/syslogdctrl.c
src/misc-progs/wirelessctrl.c
src/paks/linux-xen/install.sh [deleted file]
src/paks/linux-xen/uninstall.sh [deleted file]
src/patches/binutils-2.22-pt-pax-flags-20111121.patch [new file with mode: 0644]
src/patches/bridge-utils-1.5-compile-fix-1.patch [new file with mode: 0644]
src/patches/coreutils-5.96-uname-1.patch
src/patches/fireinfo-2.1.7-testing.patch [new file with mode: 0644]
src/patches/gcc-4.4.7-texinfo-5.patch [new file with mode: 0644]
src/patches/glibc/glibc-rh804630.patch [deleted file]
src/patches/glibc/glibc-rh804686.patch [new file with mode: 0644]
src/patches/glibc/glibc-rh806404.patch [new file with mode: 0644]
src/patches/glibc/glibc-rh809726.patch [new file with mode: 0644]
src/patches/glibc/glibc-rh823909.patch [new file with mode: 0644]
src/patches/glibc/glibc-rh826149.patch [new file with mode: 0644]
src/patches/glibc/glibc-rh827362.patch [new file with mode: 0644]
src/patches/glibc/glibc-rh830127.patch [new file with mode: 0644]
src/patches/glibc/glibc-rh832516.patch [new file with mode: 0644]
src/patches/glibc/glibc-rh832694.patch [new file with mode: 0644]
src/patches/glibc/glibc-rh833717.patch [moved from src/patches/glibc/glibc-rh833716.patch with 100% similarity]
src/patches/glibc/glibc-rh837026.patch [deleted file]
src/patches/glibc/glibc-rh837695.patch [new file with mode: 0644]
src/patches/glibc/glibc-rh837918.patch [new file with mode: 0644]
src/patches/glibc/glibc-rh841787.patch [new file with mode: 0644]
src/patches/glibc/glibc-rh843673.patch [new file with mode: 0644]
src/patches/glibc/glibc-rh846342.patch [new file with mode: 0644]
src/patches/glibc/glibc-rh847932.patch [new file with mode: 0644]
src/patches/glibc/glibc-rh848082.patch [new file with mode: 0644]
src/patches/glibc/glibc-rh849203.patch [new file with mode: 0644]
src/patches/glibc/glibc-rh849651.patch [new file with mode: 0644]
src/patches/glibc/glibc-rh852445.patch [new file with mode: 0644]
src/patches/glibc/glibc-rh861167.patch [new file with mode: 0644]
src/patches/glibc/glibc-rh863453.patch [new file with mode: 0644]
src/patches/glibc/glibc-rh864322.patch [new file with mode: 0644]
src/patches/glibc/glibc-rh929388.patch [new file with mode: 0644]
src/patches/glibc/glibc-rh970992.patch [new file with mode: 0644]
src/patches/glibc/glibc-rh989558-2.patch [new file with mode: 0644]
src/patches/glibc/glibc-rh989558.patch [new file with mode: 0644]
src/patches/imq_kernel3.10.patch [new file with mode: 0644]
src/patches/linux-2.6-silence-acpi-blacklist.patch [new file with mode: 0644]
src/patches/linux-2.6.30-no-pcspkr-modalias.patch [new file with mode: 0644]
src/patches/linux-3.10-ipp2p-0.8.2-ipfire.patch [new file with mode: 0644]
src/patches/linux-3.10-smsc95xx-add_mac_addr_param.patch [new file with mode: 0644]
src/patches/linux-3.10.10-arm_kirkwood_setups.patch [new file with mode: 0644]
src/patches/linux-3.10.10-mv_cesa_disable_failing_hmac_sha1.patch [new file with mode: 0644]
src/patches/linux-3.10.9-ledtrig-netdev-1.patch [new file with mode: 0644]
src/patches/linux-3.7-disable-compat_vdso.patch [new file with mode: 0644]
src/patches/linux-3.9-dvbsky-wot2.patch [new file with mode: 0644]
src/patches/net-tools-1.60-kernel_headers-3.patch [new file with mode: 0644]
src/patches/netfilter_layer7_2.22_kernel3.10-no_proc_interface.patch [new file with mode: 0644]
src/patches/strongswan-5.0.2_ipfire.patch [moved from src/patches/strongswan-4.5.3_ipfire.patch with 91% similarity]
src/patches/vim-7.2-fixes-4.patch [deleted file]
src/patches/vim-7.2-mandir-1.patch [deleted file]
src/scripts/setddns.pl
tools/make-functions

index f9b8302af91af7c90c8fa9a8d9a5b63773542613..5424a1e123a8d443b3fcb135a30f25162ae44859 100644 (file)
@@ -22,7 +22,7 @@
 require '/var/ipfire/general-functions.pl';
 require "${General::swroot}/lang.pl";
 require "${General::swroot}/header.pl";
-
+use File::Path;
 my $debug = 1;
 my @include = "";
 my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat, $Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
@@ -64,7 +64,67 @@ elsif ($ARGV[0] eq 'restore') {
   system("cd / && tar -xvz -p -f /tmp/restore.ipf");
   #Here some converter scripts to correct old Backups (before core 65)
   system("/usr/sbin/ovpn-ccd-convert");
-}
+  #OUTGOINGFW CONVERTER
+  if( -d "${General::swroot}/outgoing"){
+         if( -f "${General::swroot}/firewall/config" ){
+                 unlink("${General::swroot}/firewall/config");
+                 system("touch ${General::swroot}/firewall/config");
+                 chown 99,99,"${General::swroot}/firewall/config";
+         }
+         if( -f "${General::swroot}/firewall/outgoing" ){
+                 unlink("${General::swroot}/firewall/outgoing");
+                 system("touch ${General::swroot}/firewall/outgoing");
+                 chown 99,99,"${General::swroot}/firewall/outgoing";
+         }
+         unlink("${General::swroot}/fwhosts/customgroups");
+         unlink("${General::swroot}/fwhosts/customhosts");
+         unlink("${General::swroot}/fwhosts/customgroups");
+         unlink("${General::swroot}/fwhosts/customnetworks");
+         unlink("${General::swroot}/fwhosts/customservicegrp");
+         unlink("${General::swroot}/fwhosts/customnetworks");
+         system("touch ${General::swroot}/fwhosts/customgroups");
+         system("touch ${General::swroot}/fwhosts/customhosts");
+         system("touch ${General::swroot}/fwhosts/customnetworks");
+         system("touch ${General::swroot}/fwhosts/customservicegrp");
+         #START CONVERTER "OUTGOINGFW"
+         system("/usr/sbin/convert-outgoingfw");
+         chown 99,99,"${General::swroot}/fwhosts/customgroups";
+         chown 99,99,"${General::swroot}/fwhosts/customhosts";
+         chown 99,99,"${General::swroot}/fwhosts/customnetworks";
+         chown 99,99,"${General::swroot}/fwhosts/customservicegrp";
+         #START CONVERTER "OUTGOINGFW"
+         rmtree("${General::swroot}/outgoing");
+  }
+  #XTACCESS CONVERTER
+  if( -d "${General::swroot}/xtaccess"){
+         if( -f "${General::swroot}/firewall/input" ){
+                 unlink("${General::swroot}/firewall/input");
+                 system("touch ${General::swroot}/firewall/input");
+         }
+         #START CONVERTER "XTACCESS"
+         system("/usr/sbin/convert-xtaccess");
+         chown 99,99,"${General::swroot}/firewall/input";
+         rmtree("${General::swroot}/xtaccess");
+  }
+  #DMZ-HOLES CONVERTER
+  if( -d "${General::swroot}/dmzholes" || -d "${General::swroot}/portfw"){
+         if( -f "${General::swroot}/firewall/config" ){
+                 unlink("${General::swroot}/firewall/config");
+                 system("touch ${General::swroot}/firewall/config");
+         }
+         #START CONVERTER "DMZ-HOLES"
+         system("/usr/sbin/convert-dmz");
+         chown 99,99,"${General::swroot}/firewall/config";
+         rmtree("${General::swroot}/dmzholes");
+  }
+  #PORTFORWARD CONVERTER
+  if( -d "${General::swroot}/portfw"){
+       #START CONVERTER "PORTFW"
+       System("/usr/sbin/convert-portfw");
+       rmtree("${General::swroot}/portfw");
+  }
+  system("/usr/local/bin/firewallctrl");
+ }
 elsif ($ARGV[0] eq 'restoreaddon') {
   if ( -e "/tmp/$ARGV[1]" ){system("mv /tmp/$ARGV[1] /var/ipfire/backup/addons/backup/$ARGV[1]");}
   system("cd / && tar -xvz -p -f /var/ipfire/backup/addons/backup/$ARGV[1]");
index 8103bb9d93c406270d8f0a9b90ca80c7074cb622..83db2348b9af77f03d3e5a36e2691bce6853bb09 100644 (file)
@@ -1,5 +1,6 @@
 *.tmp
 /var/ipfire/ethernet/settings
+/var/ipfire/firewall/bin/*
 /var/ipfire/proxy/calamaris/bin/*
 /var/ipfire/qos/bin/qos.pl
 /var/ipfire/urlfilter/blacklists/*/*.db
index c863a0e560ed525c74653fe612be75249a75a64f..1d55e4acd4890c2e6606b53659dcbaf50a74003c 100644 (file)
 /var/ipfire/auth/users
 /var/ipfire/dhcp/*
 /var/ipfire/dnsforward/*
+/var/ipfire/firewall
+/var/ipfire/fwhosts
 /var/ipfire/main/*
-/var/ipfire/outgoing/groups
-/var/ipfire/outgoing/macgroups
-/var/ipfire/outgoing/rules
-/var/ipfire/outgoing/p2protocols
-/var/ipfire/dmzholes
-/var/ipfire/xtaccess
-/var/ipfire/portfw
 /var/ipfire/ovpn
 /var/ipfire/ppp
 /var/ipfire/proxy
index 08cb36a7c695f17c6177f9646885c618aaf2cd3a..ae87bfe9eafb377ad4edc56da17cb73f00fbedfe 100644 (file)
@@ -1,9 +1,9 @@
-#GREEN_PARENT_DEV="eth0"
+#GREEN_PARENT_DEV=eth0
 #GREEN_VLAN_ID=20
-#GREEN_MAC_ADDRESS="00:11:22:33:44:55"
-#BLUE_PARENT_DEV="green0"
+#GREEN_MAC_ADDRESS=00:11:22:33:44:55
+#BLUE_PARENT_DEV=green0
 #BLUE_VLAN_ID=30
-#BLUE_MAC_ADDRESS="00:22:33:44:55:66"
-#ORANGE_PARENT_DEV="green0"
+#BLUE_MAC_ADDRESS=00:22:33:44:55:66
+#ORANGE_PARENT_DEV=green0
 #ORANGE_VLAN_ID=40
-#ORANGE_MAC_ADDRESS="00:33:44:55:66:77"
+#ORANGE_MAC_ADDRESS=00:33:44:55:66:77
index 41643d8d7451c25aebda2475600b0f9c170845a4..48d68a2cd9acbb497f2a8f53cd298978e3bbc823 100644 (file)
@@ -39,6 +39,90 @@ sub log
        $logmessage = $1;
        system('logger', '-t', $tag, $logmessage);
 }
+sub setup_default_networks
+{
+       my %netsettings=();
+       my $defaultNetworks = shift;
+       
+       &readhash("/var/ipfire/ethernet/settings", \%netsettings);
+       
+       # Get current defined networks (Red, Green, Blue, Orange)
+       $defaultNetworks->{$Lang::tr{'fwhost any'}}{'IPT'} = "0.0.0.0/0.0.0.0";
+       $defaultNetworks->{$Lang::tr{'fwhost any'}}{'NAME'} = "ALL";
+               
+       $defaultNetworks->{$Lang::tr{'green'}}{'IPT'} = "$netsettings{'GREEN_NETADDRESS'}/$netsettings{'GREEN_NETMASK'}";
+       $defaultNetworks->{$Lang::tr{'green'}}{'NAME'} = "GREEN";
+
+       if ($netsettings{'RED_DEV'} ne ''){
+               $defaultNetworks->{$Lang::tr{'fwdfw red'}}{'IPT'} = "$netsettings{'RED_NETADDRESS'}/$netsettings{'RED_NETMASK'}";
+               $defaultNetworks->{$Lang::tr{'fwdfw red'}}{'NAME'} = "RED";
+       }
+       if ($netsettings{'ORANGE_DEV'} ne ''){
+               $defaultNetworks->{$Lang::tr{'orange'}}{'IPT'} = "$netsettings{'ORANGE_NETADDRESS'}/$netsettings{'ORANGE_NETMASK'}";
+               $defaultNetworks->{$Lang::tr{'orange'}}{'NAME'} = "ORANGE";
+       }
+
+       if ($netsettings{'BLUE_DEV'} ne ''){
+               $defaultNetworks->{$Lang::tr{'blue'}}{'IPT'} = "$netsettings{'BLUE_NETADDRESS'}/$netsettings{'BLUE_NETMASK'}";
+               $defaultNetworks->{$Lang::tr{'blue'}}{'NAME'} = "BLUE";
+       }
+       
+       #IPFire himself
+       $defaultNetworks->{'IPFire'}{'NAME'} = "IPFire";
+
+       # OpenVPN
+       if(-e "${General::swroot}/ovpn/settings")
+       {
+               my %ovpnSettings = ();
+               &readhash("${General::swroot}/ovpn/settings", \%ovpnSettings);
+
+               # OpenVPN on Red?
+               if(defined($ovpnSettings{'DOVPN_SUBNET'}))
+               {
+                       my ($ip,$sub) = split(/\//,$ovpnSettings{'DOVPN_SUBNET'});
+                       $sub=&General::iporsubtocidr($sub);
+                       my @tempovpnsubnet = split("\/", $ovpnSettings{'DOVPN_SUBNET'});
+                       $defaultNetworks->{'OpenVPN ' ."($ip/$sub)"}{'ADR'} = $tempovpnsubnet[0];
+                       $defaultNetworks->{'OpenVPN ' ."($ip/$sub)"}{'NAME'} = "OpenVPN-Dyn";
+               }
+       } # end OpenVPN
+       # IPsec RW NET
+       if(-e "${General::swroot}/vpn/settings")
+       {
+               my %ipsecsettings = ();
+               &readhash("${General::swroot}/vpn/settings", \%ipsecsettings);
+               if($ipsecsettings{'RW_NET'} ne '')
+               {
+                       my ($ip,$sub) = split(/\//,$ipsecsettings{'RW_NET'});
+                       $sub=&General::iporsubtocidr($sub);
+                       my @tempipsecsubnet = split("\/", $ipsecsettings{'RW_NET'});
+                       $defaultNetworks->{'IPsec RW ' .$ip."/".$sub}{'ADR'} = $tempipsecsubnet[0];
+                       $defaultNetworks->{'IPsec RW ' .$ip."/".$sub}{'NAME'} = "IPsec RW";
+               }
+       }
+}
+sub get_aliases
+{
+       
+       my $defaultNetworks = shift;
+       open(FILE, "${General::swroot}/ethernet/aliases") or die 'Unable to open aliases file.';
+       my @current = <FILE>;
+       close(FILE);
+       my $ctr = 0;
+       foreach my $line (@current)
+       {
+               if ($line ne ''){
+                       chomp($line);
+                       my @temp = split(/\,/,$line);
+                       if ($temp[2] eq '') {
+                               $temp[2] = "Alias $ctr : $temp[0]";
+                       }
+                       $defaultNetworks->{$temp[2]}{'IPT'} = "$temp[0]";
+                       
+                       $ctr++;
+               }
+       }
+}
 
 sub readhash
 {
@@ -1053,4 +1137,23 @@ sub write_file_utf8 ($) {
        return; 
 }
 
+my $FIREWALL_RELOAD_INDICATOR = "${General::swroot}/firewall/reread";
+
+sub firewall_config_changed() {
+       open FILE, ">$FIREWALL_RELOAD_INDICATOR" or die "Could not open $FIREWALL_RELOAD_INDICATOR";
+       close FILE;
+}
+
+sub firewall_needs_reload() {
+       if (-e "$FIREWALL_RELOAD_INDICATOR") {
+               return 1;
+       }
+
+       return 0;
+}
+
+sub firewall_reload() {
+       system("/usr/local/bin/firewallctrl");
+}
+
 1;
index c51e882e20ff2267fae3c45381db6f2f4ed8b5cd..19c0546da2d3d16bcffdd17f4da7ccefece452b6 100644 (file)
@@ -602,22 +602,37 @@ sub updatefwhitsgraph {
                "--color=SHADEA".$color{"color19"},
                "--color=SHADEB".$color{"color19"},
                "--color=BACK".$color{"color21"},
-               "DEF:output=".$mainsettings{'RRDLOG'}."/collectd/localhost/iptables-filter-FORWARD/ipt_bytes-DROP_OUTPUT.rrd:value:AVERAGE",
-               "DEF:input=".$mainsettings{'RRDLOG'}."/collectd/localhost/iptables-filter-INPUT/ipt_bytes-DROP_INPUT.rrd:value:AVERAGE",
+               "DEF:output=".$mainsettings{'RRDLOG'}."/collectd/localhost/iptables-filter-POLICYOUT/ipt_bytes-DROP_OUTPUT.rrd:value:AVERAGE",
+               "DEF:input=".$mainsettings{'RRDLOG'}."/collectd/localhost/iptables-filter-POLICYIN/ipt_bytes-DROP_INPUT.rrd:value:AVERAGE",
+               "DEF:forward=".$mainsettings{'RRDLOG'}."/collectd/localhost/iptables-filter-POLICYFWD/ipt_bytes-DROP_FORWARD.rrd:value:AVERAGE",
                "DEF:newnotsyn=".$mainsettings{'RRDLOG'}."/collectd/localhost/iptables-filter-NEWNOTSYN/ipt_bytes-DROP_NEWNOTSYN.rrd:value:AVERAGE",
                "DEF:portscan=".$mainsettings{'RRDLOG'}."/collectd/localhost/iptables-filter-PSCAN/ipt_bytes-DROP_PScan.rrd:value:AVERAGE",
-               "CDEF:amount=output,input,newnotsyn,+,+",
-               "COMMENT:".sprintf("%-20s",$Lang::tr{'caption'}),
+               "COMMENT:".sprintf("%-26s",$Lang::tr{'caption'}),
                "COMMENT:".sprintf("%15s",$Lang::tr{'maximal'}),
                "COMMENT:".sprintf("%15s",$Lang::tr{'average'}),
-               "COMMENT:".sprintf("%15s",$Lang::tr{'minimal'}),
+               "COMMENT:".sprintf("%14s",$Lang::tr{'minimal'}),
                "COMMENT:".sprintf("%15s",$Lang::tr{'current'})."\\j",
-               "AREA:amount".$color{"color24"}."A0:".sprintf("%-20s",$Lang::tr{'firewallhits'}),
-               "GPRINT:amount:MAX:%8.1lf %sBps",
-               "GPRINT:amount:AVERAGE:%8.1lf %sBps",
-               "GPRINT:amount:MIN:%8.1lf %sBps",
-               "GPRINT:amount:LAST:%8.1lf %sBps\\j",
-               "STACK:portscan".$color{"color25"}."A0:".sprintf("%-20s",$Lang::tr{'portscans'}),
+               "AREA:output".$color{"color25"}."A0:".sprintf("%-25s",$Lang::tr{'firewallhits'}."-OUTPUT"),
+               "GPRINT:output:MAX:%8.1lf %sBps",
+               "GPRINT:output:AVERAGE:%8.1lf %sBps",
+               "GPRINT:output:MIN:%8.1lf %sBps",
+               "GPRINT:output:LAST:%8.1lf %sBps\\j",
+               "STACK:forward".$color{"color23"}."A0:".sprintf("%-25s",$Lang::tr{'firewallhits'}."-FORWARD"),
+               "GPRINT:forward:MAX:%8.1lf %sBps",
+               "GPRINT:forward:AVERAGE:%8.1lf %sBps",
+               "GPRINT:forward:MIN:%8.1lf %sBps",
+               "GPRINT:forward:LAST:%8.1lf %sBps\\j",
+               "STACK:input".$color{"color24"}."A0:".sprintf("%-25s",$Lang::tr{'firewallhits'}."-INPUT"),
+               "GPRINT:input:MAX:%8.1lf %sBps",
+               "GPRINT:input:AVERAGE:%8.1lf %sBps",
+               "GPRINT:input:MIN:%8.1lf %sBps",
+               "GPRINT:input:LAST:%8.1lf %sBps\\j",
+               "STACK:newnotsyn".$color{"color14"}."A0:".sprintf("%-25s","NewNotSyn"),
+               "GPRINT:newnotsyn:MAX:%8.1lf %sBps",
+               "GPRINT:newnotsyn:MIN:%8.1lf %sBps",
+               "GPRINT:newnotsyn:AVERAGE:%8.1lf %sBps",
+               "GPRINT:newnotsyn:LAST:%8.1lf %sBps\\j",
+               "STACK:portscan".$color{"color16"}."A0:".sprintf("%-25s",$Lang::tr{'portscans'}),
                "GPRINT:portscan:MAX:%8.1lf %sBps",
                "GPRINT:portscan:MIN:%8.1lf %sBps",
                "GPRINT:portscan:AVERAGE:%8.1lf %sBps",
index 9129c682c05f0d20be9798eee502fac7e61848fd..299d7664599290d5a7a4c828746d58c820d0d633 100644 (file)
@@ -88,15 +88,6 @@ if ( -d "/var/ipfire/langs/${language}/" ) {
     };
 };
 
-### Read IPFire Buildversion
-$FIREBUILD = "File not found: firebuild\n";
-if (open(MYFile, "<${swroot}/firebuild")) {
-    $FIREBUILD = <MYFile>;
-    chomp($FIREBUILD);
-    $FIREBUILD = "(Build: $FIREBUILD)";
-    close(MYFile);
-};
-
 require "${swroot}/langs/en.pl";
 require "${swroot}/langs/${language}.pl";
 eval `/bin/cat /srv/web/ipfire/html/themes/$settings{'THEME'}/include/functions.pl`;
@@ -149,11 +140,8 @@ sub genmenu {
     eval `/bin/cat /var/ipfire/menu.d/*.menu`;
     eval `/bin/cat /var/ipfire/menu.d/*.main`;
 
-    if (! blue_used() && ! orange_used()) {
-       $menu->{'05.firewall'}{'subMenu'}->{'40.dmz'}{'enabled'} = 0;
-    }
     if (! blue_used()) {
-       $menu->{'05.firewall'}{'subMenu'}->{'30.wireless'}{'enabled'} = 0;
+       $menu->{'05.firewall'}{'subMenu'}->{'60.wireless'}{'enabled'} = 0;
     }
     if ( $ethsettings{'CONFIG_TYPE'} =~ /^(1|2|3|4)$/ && $ethsettings{'RED_TYPE'} eq 'STATIC' ) {
        $menu->{'03.network'}{'subMenu'}->{'70.aliases'}{'enabled'} = 1;
diff --git a/config/cfgroot/p2protocols b/config/cfgroot/p2protocols
deleted file mode 100644 (file)
index 78c6101..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-Bittorrent;bit;on;
-Edonkey;edk;on;
-KaZaA;kazaa;on;
-Gnutella;gnu;on;
-DirectConnect;dc;on;
-Applejuice;apple;on;
-WinMX;winmx;on;
-SoulSeek;soul;on;
-Ares;ares;on;
\ No newline at end of file
index 67d9e19054da255ef327cd036496fed18f2b1411..14dd568c2ffd3369a13ef48e78800a5063357d48 100644 (file)
@@ -45,10 +45,11 @@ include "/etc/collectd.precache"
 </Plugin>
 
 <Plugin iptables>
-       Chain filter INPUT DROP_INPUT
-       Chain filter FORWARD DROP_OUTPUT
        Chain filter PSCAN DROP_PScan
        Chain filter NEWNOTSYN DROP_NEWNOTSYN
+       Chain filter POLICYFWD DROP_FORWARD
+       Chain filter POLICYOUT DROP_OUTPUT
+       Chain filter POLICYIN DROP_INPUT
 </Plugin>
 
 #<Plugin logfile>
diff --git a/config/firewall/convert-dmz b/config/firewall/convert-dmz
new file mode 100755 (executable)
index 0000000..0f7c68e
--- /dev/null
@@ -0,0 +1,193 @@
+#!/usr/bin/perl
+
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2013 Alexander Marx <amarx@ipfire.org>                        #
+#                                                                             #
+# This program is free software: you can redistribute it and/or modify        #
+# it under the terms of the GNU General Public License as published by        #
+# the Free Software Foundation, either version 3 of the License, or           #
+# (at your option) any later version.                                         #
+#                                                                             #
+# This program is distributed in the hope that it will be useful,             #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
+# GNU General Public License for more details.                                #
+#                                                                             #
+# You should have received a copy of the GNU General Public License           #
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+#                                                                             #
+# This script converts old dmz holes rules from old firewall                  #
+# to the new one. This is a 2-step process.                                   #
+# STEP1: read old config and normalize settings                               #
+# STEP2: check valid ip and save valid rules to new firewall                  #
+#                                                                             #
+###############################################################################
+my @current=();
+my @alias=();
+my %configdmz=();
+my %ifaces=();
+my %configfwdfw=();
+require '/var/ipfire/general-functions.pl';
+my $dmzconfig    = "${General::swroot}/dmzholes/config";
+my $fwdfwconfig   = "${General::swroot}/firewall/config";
+my $ifacesettings = "${General::swroot}/ethernet/settings";
+my $field0     = 'ACCEPT';
+my $field1     = 'FORWARDFW';
+my $field2     = ''; #ON or emtpy
+my $field3     = ''; #std_net_src or src_addr
+my $field4     = ''; #ALL or IP-Address with /32
+my $field5     = ''; #std_net_tgt or tgt_addr
+my $field6     = ''; #IP or network name
+my $field11    = 'ON'; #use target port 
+my $field12    = ''; #TCP or UDP
+my $field13    = 'All ICMP-Types';
+my $field14    = 'TGT_PORT';
+my $field15    = ''; #Port Number
+my $field16    = ''; #remark
+my $field26    = '00:00';
+my $field27    = '00:00';
+my $field28 = '';
+my $field29 = 'ALL';
+my $field30 = '';
+my $field31 = 'dnat';
+
+
+open(FILE, $dmzconfig) or die 'Unable to open config file.';
+my @current = <FILE>;
+close(FILE);
+#open LOGFILE
+open (LOG, ">/var/log/converters/dmz-convert.log") or die $!;
+&General::readhash($ifacesettings, \%ifaces);
+&General::readhasharray($fwdfwconfig,\%configfwdfw);
+&process_rules;
+sub process_rules{
+       foreach my $line (@current){
+               my $now=localtime;
+               #get values from old configfile
+               my ($a,$b,$c,$d,$e,$f,$g,$h) = split (",",$line);
+               $h =~ s/\s*\n//gi;
+               print LOG "$now Processing A: $a   B: $b   C: $c   D: $d   E: $e   F: $f   G: $g   H: $h\n";
+               #Now convert values and check ip addresses
+               $a=uc($a);
+               $e=uc($e);
+               $field2=$e if($e eq 'ON');
+               #SOURCE IP-check
+               $b=&check_ip($b);
+               if (&General::validipandmask($b)){
+                       #When ip valid, check if we have a network
+                       my ($ip,$subnet) = split ("/",$b);
+                       if ($f eq 'orange' && $ip eq $ifaces{'ORANGE_NETADDRESS'}){
+                               $field3='std_net_src';
+                               $field4='ORANGE';
+                       }elsif($f eq 'blue' && $ip eq $ifaces{'BLUE_NETADDRESS'}){
+                               $field3='std_net_src';
+                               $field4='BLUE';
+                       }elsif($f eq 'orange' && &General::IpInSubnet($ip,$ifaces{'ORANGE_NETADDRESS'},$ifaces{'ORANGE_NETMASK'})){
+                               $field3='src_addr';
+                               $field4=$b;
+                       }elsif($f eq 'blue' && &General::IpInSubnet($ip,$ifaces{'BLUE_NETADDRESS'},$ifaces{'BLUE_NETMASK'})){
+                               $field3='src_addr';
+                               $field4=$b;
+                       }else{
+                               print LOG "$now ->NOT Converted, source ip $b not part of source network $f \n\n";
+                               next;
+                       }
+               }else{
+                       print LOG "$now -> SOURCE IP INVALID. \n\n";
+                       next;
+               }
+               #TARGET IP-check
+               $c=&check_ip($c);
+               if (&General::validipandmask($c)){
+                       my $now=localtime;
+                       #When ip valid, check if we have a network
+                       my ($ip,$subnet) = split ("/",$c);
+                       if ($g eq 'green' && $ip eq $ifaces{'GREEN_NETADDRESS'}){
+                               $field5='std_net_tgt';
+                               $field6='GREEN';
+                       }elsif($g eq 'blue' && $ip eq $ifaces{'BLUE_NETADDRESS'}){
+                               $field5='std_net_tgt';
+                               $field6='BLUE';
+                       }elsif($g eq 'green' && &General::IpInSubnet($ip,$ifaces{'GREEN_NETADDRESS'},$ifaces{'GREEN_NETMASK'})){
+                               $field5='tgt_addr';
+                               $field6=$c;
+                       }elsif($g eq 'blue' && &General::IpInSubnet($ip,$ifaces{'BLUE_NETADDRESS'},$ifaces{'BLUE_NETMASK'})){
+                               $field5='tgt_addr';
+                               $field6=$c;
+                       }else{
+                               print LOG "$now ->NOT Converted, target ip $c not part of target network $g \n\n";
+                               next;
+                       }
+               }else{
+                       print LOG "$now -> TARGET IP INVALID. \n\n";
+                       next;
+               }
+               $field12=$a;
+               #convert portrange
+               $d =~ tr/-/:/;
+               $field15=$d;
+               $field16=$h;
+               my $key = &General::findhasharraykey (\%configfwdfw);
+               foreach my $i (0 .. 27) { $configfwdfw{$key}[$i] = "";}
+               $configfwdfw{$key}[0] = $field0;
+               $configfwdfw{$key}[1] = $field1;
+               $configfwdfw{$key}[2] = $field2;
+               $configfwdfw{$key}[3] = $field3;
+               $configfwdfw{$key}[4] = $field4;
+               $configfwdfw{$key}[5] = $field5;
+               $configfwdfw{$key}[6] = $field6;
+               $configfwdfw{$key}[7] = '';
+               $configfwdfw{$key}[8] = '';
+               $configfwdfw{$key}[9] = '';
+               $configfwdfw{$key}[10] = '';
+               $configfwdfw{$key}[11] = $field11;
+               $configfwdfw{$key}[12] = $field12;
+               $configfwdfw{$key}[13] = $field13;
+               $configfwdfw{$key}[14] = $field14;
+               $configfwdfw{$key}[15] = $field15;
+               $configfwdfw{$key}[16] = $field16;
+               $configfwdfw{$key}[17] = '';
+               $configfwdfw{$key}[18] = '';
+               $configfwdfw{$key}[19] = '';
+               $configfwdfw{$key}[20] = '';
+               $configfwdfw{$key}[21] = '';
+               $configfwdfw{$key}[22] = '';
+               $configfwdfw{$key}[23] = '';
+               $configfwdfw{$key}[24] = '';
+               $configfwdfw{$key}[25] = '';
+               $configfwdfw{$key}[26] = $field26;
+               $configfwdfw{$key}[27] = $field27;
+               $configfwdfw{$key}[28] = $field28;
+               $configfwdfw{$key}[29] = $field29;
+               $configfwdfw{$key}[30] = $field30;
+               $configfwdfw{$key}[31] = $field31;
+               print LOG "$Now -> Converted to $field0,$field1,$field2,$field3,$field4,$field5,$field6,,,,,$field11,$field12,$field13,$field14,$field15,$field16,,,,,,,,,,$field26,$field27\n";
+       }
+       &General::writehasharray($fwdfwconfig,\%configfwdfw);
+close (LOG);
+}
+
+sub check_ip
+{
+       my $adr=shift;
+       my $a;
+       #ip with subnet in decimal
+       if($adr =~ m/^(\d\d?\d?).(\d\d?\d?).(\d\d?\d?).(\d\d?\d?)\/(\d{1,2})$/){
+               $adr=int($1).".".int($2).".".int($3).".".int($4);
+               my $b = &General::iporsubtodec($5);
+               $a=$adr."/".$b;
+       }elsif($adr =~ /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/){
+               $adr=int($1).".".int($2).".".int($3).".".int($4);
+               if(&General::validip($adr)){
+                       $a=$adr."/32";
+               }
+       }
+       if(&General::validipandmask($adr)){
+               $a=&General::iporsubtodec($adr);
+       }
+       return $a;
+}
diff --git a/config/firewall/convert-outgoingfw b/config/firewall/convert-outgoingfw
new file mode 100755 (executable)
index 0000000..0d7f7d3
--- /dev/null
@@ -0,0 +1,704 @@
+#!/usr/bin/perl
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2013 Alexander Marx <amarx@ipfire.org>                        #
+#                                                                             #
+# This program is free software: you can redistribute it and/or modify        #
+# it under the terms of the GNU General Public License as published by        #
+# the Free Software Foundation, either version 3 of the License, or           #
+# (at your option) any later version.                                         #
+#                                                                             #
+# This program is distributed in the hope that it will be useful,             #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
+# GNU General Public License for more details.                                #
+#                                                                             #
+# You should have received a copy of the GNU General Public License           #
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+#                                                                             #
+# This script converts old groups and firewallrules                           #
+# to the new one. This is a 3-step process.                                   #
+# STEP1: convert groups ->LOG /var/log/converters                             #
+# STEP2: convert rules  ->LOG /var/log/converters                             #
+# STEP3: convert P2P rules                                                    #
+#                                                                             #
+###############################################################################
+
+require '/var/ipfire/general-functions.pl';
+
+use Socket;
+use File::Path;
+use File::Copy;
+
+my $ipgrouppath        = "${General::swroot}/outgoing/groups/ipgroups/";
+my $macgrouppath       = "${General::swroot}/outgoing/groups/macgroups/";
+my $outgoingrules      = "${General::swroot}/outgoing/rules";
+my $outfwsettings      = "${General::swroot}/outgoing/settings";
+my $host                       = "Converted ";
+my $confighosts                = "${General::swroot}/fwhosts/customhosts";
+my $confignets         = "${General::swroot}/fwhosts/customnetworks";
+my $configgroups       = "${General::swroot}/fwhosts/customgroups";
+my $ovpnsettings       = "${General::swroot}/ovpn/settings";
+my $ovpnconfig         = "${General::swroot}/ovpn/ovpnconfig";
+my $ccdconfig          = "${General::swroot}/ovpn/ccd.conf";
+my $fwdfwconfig                = "${General::swroot}/firewall/config";
+my $outfwconfig                = "${General::swroot}/firewall/outgoing";
+my $fwdfwsettings      = "${General::swroot}/firewall/settings";
+my @ipgroups = qx(ls $ipgrouppath);
+my @macgroups = qx(ls $macgrouppath);
+my @hostarray=();
+my %outsettings=();
+my %hosts=();
+my %nets=();
+my %groups=();
+my %settingsovpn=();
+my %configovpn=();
+my %ccdconf=();
+my %fwconfig=();
+my %fwconfigout=();
+my %fwdsettings=();
+my %ownnet=();
+my %ovpnSettings = ();
+&General::readhash("${General::swroot}/ovpn/settings", \%ovpnSettings);
+&General::readhash($outfwsettings,\%outsettings);
+&General::readhash("${General::swroot}/ethernet/settings", \%ownnet);
+#ONLY RUN if /var/ipfire/outgoing exists
+if ( -d "/var/ipfire/outgoing"){
+       &process_groups;
+       &process_rules;
+       &process_p2p;
+}
+system("/usr/local/bin/firewallctrl");
+sub process_groups
+{
+       if(! -d "/var/log/converters"){ mkdir("/var/log/converters");}
+       if( -f "/var/log/converters/groups-convert.log"){rmtree("var/log/converters");}
+       open (LOG, ">/var/log/converters/groups-convert.log") or die $!;
+       #IP Group processing
+       foreach my $group (@ipgroups){
+               my $now=localtime;
+               chomp $group;
+               print LOG "\n$now Processing IP-GROUP: $group...\n";
+               open (DATEI, "<$ipgrouppath/$group");
+               my @zeilen = <DATEI>;
+               foreach my $ip (@zeilen){
+                       chomp($ip);
+                       $ip =~ s/\s//gi;
+                       print LOG "$now Check IP $ip from Group $group ";
+                       my $val=&check_ip($ip);
+                       if($val){
+                               push(@hostarray,$val.",ip");
+                               print LOG "$now -> OK\n";
+                       }
+                       else{
+                               print LOG "$now -> IP \"$ip\" from group $group not converted (invalid IP) \n";
+                       }
+                       $val='';
+               }
+               &new_hostgrp($group,'ip');
+               @hostarray=();
+       }
+       $group='';
+       @zeilen=();
+       @hostarray=();
+       #MAC Group processing
+       foreach my $group (@macgroups){
+               chomp $group;
+               print LOG "\nProcessing MAC-GROUP: $group...\n";
+               open (DATEI, "<$macgrouppath/$group");
+               my @zeilen = <DATEI>;
+               foreach my $mac (@zeilen){
+                       chomp($mac);
+                       $mac =~ s/\s//gi;
+                       print LOG "$now Checking MAC $mac from group $group ";
+                       #MAC checking
+                       if(&General::validmac($mac)){
+                               $val=$mac;
+                       }
+                       if($val){
+                               push(@hostarray,$val.",mac");
+                               print LOG "$now -> OK\n";
+                       }
+                       else{
+                               print LOG "$now -> Mac $mac from group $group not converted (invalid MAC)\n";
+                       }
+                       $val='';
+               }
+               &new_hostgrp($group,'mac');
+               @hostarray=();
+               @zeilen=();
+       }
+       close (LOG);
+}
+sub check_ip
+{
+       my $adr=shift;
+       my $a;
+       #ip with subnet in decimal
+       if($adr =~ m/^(\d\d?\d?).(\d\d?\d?).(\d\d?\d?).(\d\d?\d?)\/(\d{1,2})$/){
+               $adr=int($1).".".int($2).".".int($3).".".int($4);
+               my $b = &General::iporsubtodec($5);
+               $a=$adr."/".$b;
+       }elsif($adr =~ /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/){
+               $adr=int($1).".".int($2).".".int($3).".".int($4);
+               if(&General::validip($adr)){
+                       $a=$adr."/255.255.255.255";
+               }
+       }
+       if(&General::validipandmask($adr)){
+               $a=&General::iporsubtodec($adr);
+       }
+       return $a;
+}
+sub new_hostgrp
+{
+       &General::readhasharray($confighosts,\%hosts);
+       &General::readhasharray($confignets,\%nets);
+       &General::readhasharray($configgroups,\%groups);
+       my $grp=shift;
+       my $run=shift;
+       my $name; #"converted"
+       my $name2;
+       my $name3; #custom host/custom net
+       foreach my $adr (@hostarray){
+               if($run eq 'ip'){
+                       my ($ip,$type)                  = split(",",$adr);
+                       my ($ippart,$subnet)    = split("/",$ip);
+                       my ($byte1,$byte2,$byte3,$byte4) = split(/\./,$subnet);
+                       if($byte4 eq '255'){
+                               print LOG "Processing SINGLE HOST $ippart/$subnet from group $grp\n"; 
+                               if(!&check_host($ip)){
+                                       my $key         = &General::findhasharraykey(\%hosts);
+                                       $name="host ";
+                                       $name2=$name.$ippart;
+                                       $name3="Custom Host";
+                                       $hosts{$key}[0] = $name2;
+                                       $hosts{$key}[1] = $type;
+                                       $hosts{$key}[2] = $ip;
+                                       $hosts{$key}[3] = '';
+                                       $hosts{$key}[4] = 1;
+                                       print LOG "->Host (IP) $ip added to custom hosts\n"
+                               }else{
+                                       print LOG "->Host (IP) $ip already exists in custom hosts\n";
+                                       $name="host ";
+                                       $name2=$name.$ippart;
+                                       foreach my $key (sort keys %hosts){
+                                               if($hosts{$key}[0] eq $name2){
+                                                       $hosts{$key}[4]++;
+                                               }
+                                       }
+                                       $name="host ";
+                                       $name2=$name.$ippart;
+                                       $name3="Custom Host";
+                               }
+                       }elsif($byte4 < '255'){
+                               print LOG "Processing NETWORK $ippart/$subnet from Group $grp\n";
+                               if(!&check_net($ippart,$subnet)){
+                                       #Check if this network is one one of IPFire internal networks
+                                       if (($ownnet{'GREEN_NETADDRESS'}                ne '' && $ownnet{'GREEN_NETADDRESS'}    ne '0.0.0.0') && &General::IpInSubnet($ippart,$ownnet{'GREEN_NETADDRESS'},$ownnet{'GREEN_NETMASK'}))
+                                       {
+                                               $name2='GREEN';
+                                               $name3='Standard Network';
+                                       }elsif (($ownnet{'ORANGE_NETADDRESS'}   ne '' && $ownnet{'ORANGE_NETADDRESS'}   ne '0.0.0.0') && &General::IpInSubnet($ippart,$ownnet{'ORANGE_NETADDRESS'},$ownnet{'ORANGE_NETMASK'}))
+                                       {
+                                               $name2='ORANGE';
+                                               $name3='Standard Network';
+                                       }elsif (($ownnet{'BLUE_NETADDRESS'}     ne '' && $ownnet{'BLUE_NETADDRESS'}     ne '0.0.0.0') && &General::IpInSubnet($ippart,$ownnet{'BLUE_NETADDRESS'},$ownnet{'BLUE_NETMASK'}))
+                                       {
+                                               $name2='BLUE';
+                                               $name3='Standard Network';
+                                       }elsif ($ippart eq '0.0.0.0')
+                                       {
+                                               $name2='ALL';
+                                               $name3='Standard Network';
+                                       }elsif(defined($ovpnSettings{'DOVPN_SUBNET'}) && "$ippart/".&General::iporsubtodec($subnet) eq $ovpnSettings{'DOVPN_SUBNET'})
+                                       {
+                                               $name2='OpenVPN-Dyn';
+                                               $name3='Standard Network';
+                                       }else{
+                                               my $netkey      =  &General::findhasharraykey(\%nets);
+                                               $name="net ";
+                                               $name2=$name.$ippart;
+                                               $name3="Custom Network";
+                                               $nets{$netkey}[0] = $name2;
+                                               $nets{$netkey}[1] = $ippart;
+                                               $nets{$netkey}[2] = $subnet;
+                                               $nets{$netkey}[3] = '';
+                                               $nets{$netkey}[4] = 1;
+                                               print LOG "->Network $ippart/$subnet added to custom networks\n";
+                                       }
+                               }else{
+                                       print LOG "Network $ippart already exists in custom networks\n";
+                                       $name="net ";
+                                       $name2=$name.$ippart;
+                                       foreach my $key (sort keys %nets){
+                                               if($nets{$key}[0] eq $name2){
+                                                       $nets{$key}[4]++;
+                                               }
+                                       }
+                                       $name="net ";
+                                       $name2=$name.$ippart;
+                                       $name3="Custom Network";
+                               }
+                       }
+                       if($name2 && !&check_grp($grp,$name2)){
+                               my $grpkey      = &General::findhasharraykey(\%groups);
+                               $groups{$grpkey}[0]     = $grp;
+                               $groups{$grpkey}[1]     = '';
+                               $groups{$grpkey}[2]     = $name2;
+                               $groups{$grpkey}[3]     = $name3;
+                               $groups{$grpkey}[4]     = 0;
+                               print LOG "->$name2 added to group $grp\n";
+                       }
+               }elsif($run eq 'mac'){
+                       #MACRUN
+                       my ($mac,$type)                         = split(",",$adr);
+                       print LOG "Processing HOST (MAC) $mac\n";
+                       if(!&check_host($mac)){
+                               my $key         = &General::findhasharraykey(\%hosts);
+                               $name="host ";
+                               $name2=$name.$mac;
+                               $name3="Custom Host";
+                               $hosts{$key}[0] = $name2;
+                               $hosts{$key}[1] = $type;
+                               $hosts{$key}[2] = $mac;
+                               $hosts{$key}[3] = '';
+                               $hosts{$key}[4] = 1;
+                               print LOG "->Host (MAC) $mac added to custom hosts\n";
+                       }else{
+                               print LOG "->Host (MAC) $mac already exists in custom hosts \n";
+                               $name="host ";
+                               $name2=$name.$mac;
+                               foreach my $key (sort keys %hosts){
+                                       if($hosts{$key}[0] eq $name2){
+                                               $hosts{$key}[4]++;
+                                       }
+                               }
+                               $name="host ";
+                               $name2=$name.$mac;
+                               $name3="Custom Host";
+                       }
+                       if($name2 && !&check_grp($grp,$name2)){
+                               my $grpkey      = &General::findhasharraykey(\%groups);
+                               $groups{$grpkey}[0]     = $grp;
+                               $groups{$grpkey}[1]     = '';
+                               $groups{$grpkey}[2]     = $name2;
+                               $groups{$grpkey}[3]     = $name3;
+                               $groups{$grpkey}[4]     = 0;
+                               print LOG "->$name2 added to group $grp\n";
+                       }
+               }
+       }
+       @hostarray=();
+       &General::writehasharray($confighosts,\%hosts);
+       &General::writehasharray($configgroups,\%groups);
+       &General::writehasharray($confignets,\%nets);
+
+}
+sub check_host
+{
+       my $ip=shift;
+       foreach my $key (sort keys %hosts)
+       {
+               if($hosts{$key}[2] eq $ip)
+               {
+                       return 1;
+               }
+       }
+       return 0;
+}
+sub check_net
+{
+       my $ip=shift;
+       my $sub=shift;
+       foreach my $key (sort keys %nets)
+       {
+               if($nets{$key}[1] eq $ip && $nets{$key}[2] eq $sub)
+               {
+                       return 1;
+               }
+       }
+       return 0;
+}
+sub check_grp
+{
+       my $grp=shift;
+       my $value=shift;
+       foreach my $key (sort keys %groups)
+       {
+               if($groups{$key}[0] eq $grp && $groups{$key}[2] eq $value)
+               {
+                       return 1;
+               }
+       }
+       return 0;
+}
+sub process_rules
+{
+       my ($type,$action,$active,$grp1,$source,$grp2,$useport,$port,$prot,$grp3,$target,$remark,$log,$time,$time_mon,$time_tue,$time_wed,$time_thu,$time_fri,$time_sat,$time_sun,$time_from,$time_to);
+       #open LOG
+       if( -f "/var/log/converters/outgoingfw-convert.log"){unlink ("/var/log/converters/outgoingfw-convert.log");}
+       open (LOG, ">/var/log/converters/outgoingfw-convert.log") or die $!;
+
+       &General::readhash($fwdfwsettings,\%fwdsettings);
+       if ($outsettings{'POLICY'} eq 'MODE1'){
+               $fwdsettings{'POLICY'}='MODE1';
+               $fwdsettings{'POLICY1'}='MODE2';
+               $type='ALLOW';
+               $action='ACCEPT';
+       }else{
+               $fwdsettings{'POLICY'}='MODE2';
+               $fwdsettings{'POLICY1'}='MODE2';
+               $type='DENY';
+               $action='DROP';
+       }
+       &General::writehash($fwdfwsettings,\%fwdsettings);
+       open (DATEI, "<$outgoingrules");
+       my @lines = <DATEI>;
+       foreach my $rule (@lines)
+       {
+               my $now=localtime;
+               chomp($rule);
+               $port='';
+               print LOG "$now processing: $rule\n";
+               my @configline=();
+               @configline = split( /\;/, $rule );
+               my @prot=();
+               if($configline[0] eq $type){
+                       #some variables we can use from old config
+                       if($configline[1] eq 'on'){ $active='ON';}else{$active='';}
+                       if($configline[3] eq 'all' && $configline[8] ne ''){ 
+                               push(@prot,"TCP");
+                               push(@prot,"UDP");
+                       }elsif($configline[3] eq 'all' && $configline[8] eq ''){
+                               push(@prot,"");
+                       }else{
+                               push(@prot,$configline[3]);
+                       }
+                       if($configline[4] ne ''){ 
+                               $configline[4] =~ s/,/;/g;
+                               $remark = $configline[4];
+                       }else{$remark = '';}
+                       if($configline[9] eq 'Active'){ $log='ON';}else{$log='';}
+                       if($configline[10] eq 'on' && $configline[11] eq 'on' && $configline[12] eq 'on' && $configline[13] eq 'on' && $configline[14] eq 'on' && $configline[15] eq 'on' && $configline[16] eq 'on'){
+                               if($configline[17] eq '00:00' && $configline[18] eq '00:00'){
+                                       $time='';
+                               }else{
+                                       $time='ON';                                     
+                               }
+                       }else{
+                               $time='ON';     
+                       } 
+                       $time_mon=$configline[10];
+                       $time_tue=$configline[11];
+                       $time_wed=$configline[12];
+                       $time_thu=$configline[13];
+                       $time_fri=$configline[14];
+                       $time_sat=$configline[15];
+                       $time_sun=$configline[16];
+                       $time_from=$configline[17];
+                       $time_to=$configline[18];
+                       ############################################################
+                       #sourcepart                     
+                       if ($configline[2] eq 'green') {
+                               $grp1='std_net_src';
+                               $source='GREEN';
+                       }elsif ($configline[2] eq 'orange') {
+                               $grp1='std_net_src';
+                               $source='ORANGE';
+                       }elsif ($configline[2] eq 'red') {
+                               $grp1='std_net_src';
+                               $source='IPFire';
+                               &General::readhash($fwdfwsettings,\%fwdsettings);
+                               $fwdsettings{'POLICY1'}=$outsettings{'POLICY'};
+                               $fwdsettings{'POLICY'}=$outsettings{'POLICY'};
+                               &General::writehash($fwdfwsettings,\%fwdsettings);
+                       }elsif ($configline[2] eq 'blue') {
+                               $grp1='std_net_src';
+                               $source='BLUE';
+                       }elsif ($configline[2] eq 'ipsec') {
+                               print LOG "$now -> Rule not converted, ipsec+ interface is obsolet since IPFire 2.7 \n";
+                               next;
+                       }elsif ($configline[2] eq 'ovpn') {
+                               print LOG "$now ->Creating networks/groups for OpenVPN...\n";
+                               &build_ovpn_grp;                
+                               $grp1='cust_grp_src';
+                               $source='ovpn'          
+                       }elsif ($configline[2] eq 'ip') {
+                               my $z=&check_ip($configline[5]);
+                               if($z){
+                                       my ($ipa,$subn) = split("/",$z);
+                                       $subn=&General::iporsubtocidr($subn);
+                                       $grp1='src_addr';
+                                       $source="$ipa/$subn";
+                               }else{
+                                       print LOG "$now -> Rule not converted, missing/invalid source ip \"$configline[5]\"\n";
+                                       next;
+                               }
+                       }elsif ($configline[2] eq 'mac') {
+                               if(&General::validmac($configline[6])){
+                                       $grp1='src_addr';
+                                       $source=$configline[6];
+                               }else{
+                                       print LOG"$now -> Rule not converted, invalid MAC \"$configline[6]\" \n";
+                                       next;
+                               }
+                       }elsif ($configline[2] eq 'all') {
+                               $grp1='std_net_src';
+                               $source='ALL';
+                       }else{
+                               foreach my $key (sort keys %groups){
+                                       if($groups{$key}[0] eq $configline[2]){
+                                               $grp1='cust_grp_src';
+                                               $source=$configline[2];
+                                       }
+                               }
+                               if ($grp1 eq '' || $source eq ''){
+                                       print LOG "$now -> Rule not converted, no valid source recognised\n";
+                               }
+                       }
+                       ############################################################
+                       #destinationpart
+                       if($configline[7] ne ''){
+                               my $address=&check_ip($configline[7]);
+                                if($address){
+                                        my ($dip,$dsub) = split("/",$address);
+                                        $dsub=&General::iporsubtocidr($dsub);
+                                        $grp2='tgt_addr';
+                                        $target="$dip/$dsub";
+                                }elsif(!$address){
+                                       my $getwebsiteip=&get_ip_from_domain($configline[7]);
+                                       if ($getwebsiteip){
+                                               $grp2='tgt_addr';
+                                               $target=$getwebsiteip;  
+                                               $remark.=" $configline[7]";
+                                       }else{
+                                               print LOG "$now -> Rule not converted, invalid domain \"$configline[7]\"\n";
+                                               next;
+                                       }
+                                }
+                       }else{
+                               $grp2='std_net_tgt';
+                               $target='ALL';
+                       }
+                       if($configline[8] ne '' && $configline[3] ne 'gre' && $configline[3] ne 'esp'){
+                               my @values=();
+                               my @parts=split(",",$configline[8]);
+                               foreach (@parts){
+                                       $_=~ tr/-/:/;
+                                       if (!($_ =~ /^(\d+)\:(\d+)$/)) {
+                                               if(&General::validport($_)){
+                                                       $useport='ON';  
+                                                       push (@values,$_);
+                                                       $grp3='TGT_PORT';
+                                               }else{
+                                                       print LOG "$now -> Rule not converted, invalid destination Port \"$configline[8]\"\n";
+                                                       next;
+                                               }
+                                        }else{
+                                               my ($a1,$a2) = split(/\:/,$_);
+                                               if (&General::validport($a1) && &General::validport($a2) && $a1 < $a2){
+                                                       $useport='ON';  
+                                                       push (@values,"$a1:$a2");
+                                                       $grp3='TGT_PORT';
+                                               }else{
+                                                       print LOG "$now -> Rule not converted, invalid destination Port \"$configline[8]\"\n"; 
+                                                       next;
+                                               } 
+                                        }
+                                }
+                               $port=join("|",@values);
+                               @values=();
+                               @parts=();
+                       }
+               }else{
+                       print LOG "-> Rule not converted because not for Firewall mode $outsettings{'POLICY'} (we are only converting for actual mode)\n";
+               }
+               &General::readhasharray($fwdfwconfig,\%fwconfig);
+               &General::readhasharray($outfwconfig,\%fwconfigout);
+               my $check;
+               my $chain;
+               foreach my $protocol (@prot){
+                       my $now=localtime;
+                       if ($source eq 'IPFire'){
+                               $chain='OUTGOINGFW';
+                       }else{
+                               $chain='FORWARDFW';
+                       }
+                       $protocol=uc($protocol);
+                       print LOG "$now -> Converted: $action,$chain,$active,$grp1,$source,$grp2,$target,,,,,$useport,$protocol,,$grp3,$port,$remark,$log,$time,$time_mon,$time_tue,$time_wed,$time_thu,$time_fri,$time_sat,$time_sun,$time_from,$time_to\n";
+                       #Put rules into system....
+                       ###########################
+                       #check for double rules
+                       foreach my $key (sort keys %fwconfig){
+                               if("$action,$chain,$active,$grp1,$source,$grp2,$target,,,,,$useport,$protocol,,$grp3,$port,$remark,$log,$time,$time_mon,$time_tue,$time_wed,$time_thu,$time_fri,$time_sat,$time_sun,$time_from,$time_to"
+                                       eq "$fwconfig{$key}[0],$fwconfig{$key}[1],$fwconfig{$key}[2],$fwconfig{$key}[3],$fwconfig{$key}[4],$fwconfig{$key}[5],$fwconfig{$key}[6],,,,,$fwconfig{$key}[11],$fwconfig{$key}[12],,$fwconfig{$key}[14],$fwconfig{$key}[15],$fwconfig{$key}[16],$fwconfig{$key}[17],$fwconfig{$key}[18],$fwconfig{$key}[19],$fwconfig{$key}[20],$fwconfig{$key}[21],$fwconfig{$key}[22],$fwconfig{$key}[23],$fwconfig{$key}[24],$fwconfig{$key}[25],$fwconfig{$key}[26],$fwconfig{$key}[27]"){
+                                               $check='on';
+                                               next;
+                               }
+                       }
+                       if($check ne 'on'){
+                               #increase groupcounter
+                               my $check1;
+                               if($grp1 eq 'cust_grp_src'){
+                                       foreach my $key (sort keys %groups){
+                                               if($groups{$key}[0] eq $source){
+                                                       $groups{$key}[4]++;
+                                                       $check1='on'; 
+                                               }
+                                       }
+                                       if($check1 eq 'on'){
+                                               &General::writehasharray($configgroups,\%groups);
+                                       }
+                               }
+                               if ($chain eq 'FORWARDFW'){
+                                       my $key = &General::findhasharraykey(\%fwconfig);
+                                       $fwconfig{$key}[0]      = $action;
+                                       $fwconfig{$key}[1]      = $chain;
+                                       $fwconfig{$key}[2]      = $active;
+                                       $fwconfig{$key}[3]      = $grp1;
+                                       $fwconfig{$key}[4]      = $source;
+                                       $fwconfig{$key}[5]      = $grp2;
+                                       $fwconfig{$key}[6]      = $target;
+                                       $fwconfig{$key}[11] = $useport;
+                                       $fwconfig{$key}[12] = $protocol;
+                                       $fwconfig{$key}[14] = $grp3;
+                                       $fwconfig{$key}[15] = $port;
+                                       $fwconfig{$key}[16] = $remark;
+                                       $fwconfig{$key}[17] = $log;
+                                       $fwconfig{$key}[18] = $time;
+                                       $fwconfig{$key}[19] = $time_mon;
+                                       $fwconfig{$key}[20] = $time_tue;
+                                       $fwconfig{$key}[21] = $time_wed;
+                                       $fwconfig{$key}[22] = $time_thu;
+                                       $fwconfig{$key}[23] = $time_fri;
+                                       $fwconfig{$key}[24] = $time_sat;
+                                       $fwconfig{$key}[25] = $time_sun;
+                                       $fwconfig{$key}[26] = $time_from;
+                                       $fwconfig{$key}[27] = $time_to;
+                                       $fwconfig{$key}[28] = '';
+                                       $fwconfig{$key}[29] = 'ALL';
+                                       $fwconfig{$key}[30] = '';
+                                       $fwconfig{$key}[31] = 'dnat';
+                               }else{
+                                       my $key = &General::findhasharraykey(\%fwconfigout);
+                                       $fwconfigout{$key}[0]   = $action;
+                                       $fwconfigout{$key}[1]   = $chain;
+                                       $fwconfigout{$key}[2]   = $active;
+                                       $fwconfigout{$key}[3]   = $grp1;
+                                       $fwconfigout{$key}[4]   = $source;
+                                       $fwconfigout{$key}[5]   = $grp2;
+                                       $fwconfigout{$key}[6]   = $target;
+                                       $fwconfigout{$key}[11]  = $useport;
+                                       $fwconfigout{$key}[12]  = $protocol;
+                                       $fwconfigout{$key}[14]  = $grp3;
+                                       $fwconfigout{$key}[15]  = $port;
+                                       $fwconfigout{$key}[16]  = $remark;
+                                       $fwconfigout{$key}[17]  = $log;
+                                       $fwconfigout{$key}[18]  = $time;
+                                       $fwconfigout{$key}[19]  = $time_mon;
+                                       $fwconfigout{$key}[20]  = $time_tue;
+                                       $fwconfigout{$key}[21]  = $time_wed;
+                                       $fwconfigout{$key}[22]  = $time_thu;
+                                       $fwconfigout{$key}[23]  = $time_fri;
+                                       $fwconfigout{$key}[24]  = $time_sat;
+                                       $fwconfigout{$key}[25]  = $time_sun;
+                                       $fwconfigout{$key}[26]  = $time_from;
+                                       $fwconfigout{$key}[27]  = $time_to;
+                                       $fwconfigout{$key}[28]  = '';
+                                       $fwconfigout{$key}[29]  = 'ALL';
+                                       $fwconfigout{$key}[30]  = '';
+                                       $fwconfigout{$key}[31]  = 'dnat';
+                               }
+                               &General::writehasharray($fwdfwconfig,\%fwconfig);
+                               &General::writehasharray($outfwconfig,\%fwconfigout);
+                       }
+               }
+               @prot=();
+       }
+       close(LOG);
+       @lines=();
+}
+sub get_ip_from_domain
+{
+       $web=shift;
+       my $resolvedip;
+       my $checked;
+       my ($name,$aliases,$addrtype,$length,@addrs) = gethostbyname($web);
+       if(@addrs){
+               $resolvedip=inet_ntoa($addrs[0]);
+               return $resolvedip;
+       }
+       return;
+}
+sub build_ovpn_grp
+{
+       my $now=localtime;
+       &General::readhasharray($confighosts,\%hosts);
+       &General::readhasharray($confignets,\%nets);
+       &General::readhasharray($configgroups,\%groups);
+       &General::readhasharray($ovpnconfig,\%configovpn);
+       &General::readhasharray($ccdconfig,\%ccdconf);
+       &General::readhash($ovpnsettings,\%settingsovpn);
+       #get ovpn nets
+       my @ovpnnets=();
+       if($settingsovpn{'DOVPN_SUBNET'}){
+               my ($net,$subnet)=split("/",$settingsovpn{'DOVPN_SUBNET'});
+               push (@ovpnnets,"$net,$subnet,dynamic");
+               print LOG "$now ->found dynamic OpenVPN net\n"; 
+       }
+       foreach my $key (sort keys %ccdconf){
+               my ($net,$subnet)=split("/",$ccdconf{$key}[1]);
+               $subnet=&General::iporsubtodec($subnet);
+               push (@ovpnnets,"$net,$subnet,$ccdconf{$key}[0]");
+               print LOG "$now ->found OpenVPN static net $net/$subnet\n";
+       }
+       foreach my $key (sort keys %configovpn){
+               if ($configovpn{$key}[3] eq 'net'){
+                       my ($net,$subnet)=split("/",$configovpn{$key}[27]);
+                       push (@ovpnnets,"$net,$subnet,$configovpn{$key}[2]");
+                       print LOG "$now ->found OpenVPN $net/$subnet $configovpn{$key}[2]\n";
+               }
+       }
+       #add ovpn nets to customnetworks/groups
+       foreach my $line (@ovpnnets){
+               my $now=localtime;
+               my ($net,$subnet,$name) = split(",",$line);
+               if (!&check_net($net,$subnet)){
+                       my $netkey      =  &General::findhasharraykey(\%nets);
+                       $name2=$name."(ovpn)".$net;
+                       $name3="Custom Network";
+                       $nets{$netkey}[0] = $name2;
+                       $nets{$netkey}[1] = $net;
+                       $nets{$netkey}[2] = $subnet;
+                       $nets{$netkey}[3] = '';
+                       $nets{$netkey}[4] = 1;
+                       print LOG "$now ->added $name2 $net/$subnet to customnetworks\n";
+               }else{
+                       print LOG "-> Custom Network with same IP already exist \"$net/$subnet\" (you can ignore this, if this run was manual from shell)\n"; 
+               }
+               if($name2){
+                       my $grpkey      = &General::findhasharraykey(\%groups);
+                       $groups{$grpkey}[0]     = "ovpn";
+                       $groups{$grpkey}[1]     = '';
+                       $groups{$grpkey}[2]     = $name2;
+                       $groups{$grpkey}[3]     = "Custom Network";
+                       $groups{$grpkey}[4]     = 0;
+                       print LOG "$now ->added $name2 to customgroup ovpn\n";
+               }
+               $name2='';
+       }
+       @ovpnnets=();
+       &General::writehasharray($confighosts,\%hosts);
+       &General::writehasharray($configgroups,\%groups);
+       &General::writehasharray($confignets,\%nets);
+       print LOG "$now ->finished OVPN\n";
+}
+sub process_p2p
+{
+       copy("/var/ipfire/outgoing/p2protocols","/var/ipfire/firewall/p2protocols");
+       chmod oct('0777'), '/var/ipfire/firewall/p2protocols';
+}
diff --git a/config/firewall/convert-portfw b/config/firewall/convert-portfw
new file mode 100755 (executable)
index 0000000..f6ddd25
--- /dev/null
@@ -0,0 +1,158 @@
+#!/usr/bin/perl
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2013 Alexander Marx <amarx@ipfire.org>                        #
+#                                                                             #
+# This program is free software: you can redistribute it and/or modify        #
+# it under the terms of the GNU General Public License as published by        #
+# the Free Software Foundation, either version 3 of the License, or           #
+# (at your option) any later version.                                         #
+#                                                                             #
+# This program is distributed in the hope that it will be useful,             #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
+# GNU General Public License for more details.                                #
+#                                                                             #
+# You should have received a copy of the GNU General Public License           #
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+#                                                                             #
+# This script converts old portforwarding rules from old Firewall             #
+# to the new one. This is a 3-step process.                                   #
+# STEP1: read old config and normalize settings                               #
+# STEP2: create new rules from old ones                                       #
+# STEP3: check if rule already exists, when not, put it into                  #
+#        /var/ipfire/firewall/config                                          #
+###############################################################################
+require '/var/ipfire/general-functions.pl';
+my @values=();
+my @built_rules=();
+my %nat=();
+my $portfwconfig       = "${General::swroot}/portfw/config";
+my $confignat          = "${General::swroot}/firewall/config";
+my ($key,$flag,$prot,$ipfireport,$target,$targetport,$active,$alias,$source,$remark);
+my ($key1,$flag1,$prot1,$ipfireport1,$target1,$targetport1,$active1,$alias1,$source1,$remark1);
+my $count=0;
+my $jump;
+if(! -d "/var/log/converters"){ mkdir("/var/log/converters");}
+open(FILE, $portfwconfig) or die 'Unable to open config file.';
+my @current = <FILE>;
+close(FILE);
+open (LOG, ">/var/log/converters/portfw-convert.log") or die $!;
+open(ALIAS, "${General::swroot}/ethernet/aliases") or die 'Unable to open aliases file.';
+my @alias = <ALIAS>;
+close(ALIAS);
+&get_config;
+&build_rules;
+&write_rules;
+sub get_config
+{
+       print LOG "STEP 1:   Get config from old portforward\n#########################################\n";
+       foreach my $line (@current){
+               if($jump eq '1'){
+                       $jump='';
+                       $count++;
+                       next;
+               }
+               my $u=$count+1;
+               ($key,$flag,$prot,$ipfireport,$target,$targetport,$active,$alias,$source,$remark) = split(",",$line);
+               ($key1,$flag1,$prot1,$ipfireport1,$target1,$targetport1,$active1,$alias1,$source1,$remark1) = split(",",$current[$u]);
+               if ($flag1 eq '1'){
+                       $source=$source1;
+                       $jump='1';
+               }
+               my $now=localtime;
+               chomp($remark);
+               print LOG "$now   processing-> KEY: $key FLAG: $flag PROT: $prot FIREPORT: $ipfireport TARGET: $target TGTPORT: $targetport ACTIVE: $active ALIAS: $alias SOURCE: $source REM: $remark Doublerule: $jump\n";
+               push (@values,$prot.",".$ipfireport.",".$target.",".$targetport.",".$active.",".$alias.",".$source.",".$remark);
+               $count++;
+       }
+}
+sub build_rules
+{
+       print LOG "\nSTEP 2: Convert old portforwardrules in a useable format\n########################################################\n";
+       my $src;
+       my $src1;
+       my $ipfireip;
+       my $count=0;
+       my $stop;
+       #build rules for new firewall
+       foreach my $line (@values){
+               chomp ($line);
+               ($prot,$ipfireport,$target,$targetport,$active,$alias,$source,$remark)=split(",",$line);
+               $count++;
+               #get sourcepart
+               if($source eq '0.0.0.0/0'){
+                       $src  = 'std_net_src';
+                       $src1 = 'ALL';
+               }else{
+                       $src  = 'src_addr';
+                       my ($a,$b) = split("/",$source);
+                       $src1 = $a."/32";
+               }
+               #get ipfire ip
+               if($alias eq '0.0.0.0'){
+                       $alias='ALL';
+               }else{
+                       foreach my $ali (@alias){
+                               my ($alias_ip,$alias_active,$alias_name) = split (",",$ali);
+                               if($alias eq $alias_ip){
+                                       chomp($alias_name);
+                                       $alias=$alias_name;
+                               }
+                       }
+               }
+               $active = uc $active;
+               $prot   = uc $prot;
+               chomp($remark);
+               push (@built_rules,"ACCEPT,FORWARDFW,$active,$src,$src1,tgt_addr,$target/32,ON,$prot,,TGT_PORT,$targetport,$remark,00:00,00:00,ON,$alias,$ipfireport,dnat");
+               my $now=localtime;
+               print LOG "$now    Converted-> KEY: $count ACCEPT,FORWARDFW,$active,$src,$src1,tgt_addr,$target/32,ON,$prot,,TGT_PORT,$targetport,$remark,00:00,00:00,ON,$alias,$ipfireport,dnat\n";
+       }
+}
+sub write_rules
+{
+       my $skip='';
+       my $id;
+       print LOG "\nSTEP 3: Create DNAT rules in new firewall\n#########################################\n";
+       &General::readhasharray($confignat,\%nat);
+       foreach my $line (@built_rules){
+               $skip='';
+               my ($action,$chain,$active,$src,$src1,$tgt,$tgt1,$use_prot,$prot,$dummy,$tgt_port,$tgt_port1,$remark,$from,$to,$use_port,$alias,$ipfireport,$dnat) = split (",",$line);
+               foreach my $key (sort keys %nat){
+                       if ($line eq "$nat{$key}[0],$nat{$key}[1],$nat{$key}[2],$nat{$key}[3],$nat{$key}[4],$nat{$key}[5],$nat{$key}[6],$nat{$key}[11],$nat{$key}[12],$nat{$key}[13],$nat{$key}[14],$nat{$key}[15],$nat{$key}[16],$nat{$key}[26],$nat{$key}[27],$nat{$key}[28],$nat{$key}[29],$nat{$key}[30],$nat{$key}[31]"){
+                               my $now=localtime;
+                               print LOG "$now         SKIP->  Rule  $nat{$key}[0],$nat{$key}[1],$nat{$key}[2],$nat{$key}[3],$nat{$key}[4],$nat{$key}[5],$nat{$key}[6],$nat{$key}[11],$nat{$key}[12],$nat{$key}[13],$nat{$key}[14],$nat{$key}[15],$nat{$key}[16],$nat{$key}[26],$nat{$key}[27],$nat{$key}[28],$nat{$key}[29],$nat{$key}[30],$nat{$key}[31] ->EXISTS\n";
+                               $skip='1';
+                       }
+               }
+               if ($skip ne '1'){
+                       $id = &General::findhasharraykey(\%nat);
+                       $nat{$id}[0]  = $action;
+                       $nat{$id}[1]  = $chain;
+                       $nat{$id}[2]  = $active;
+                       $nat{$id}[3]  = $src;
+                       $nat{$id}[4]  = $src1;
+                       $nat{$id}[5]  = $tgt;
+                       $nat{$id}[6]  = $tgt1;
+                       $nat{$id}[11] = $use_prot;
+                       $nat{$id}[12] = $prot;
+                       $nat{$id}[13] = $dummy;
+                       $nat{$id}[14] = $tgt_port;
+                       $nat{$id}[15] = $tgt_port1;
+                       $nat{$id}[16] = $remark;
+                       $nat{$id}[26] = $from;
+                       $nat{$id}[27] = $to;
+                       $nat{$id}[28] = $use_port;
+                       $nat{$id}[29] = $alias;
+                       $nat{$id}[30] = $ipfireport;
+                       $nat{$id}[31] = $dnat;
+                       my $now=localtime;
+                       print LOG "$now     NEW RULE->  Rule  $nat{$id}[0],$nat{$id}[1],$nat{$id}[2],$nat{$id}[3],$nat{$id}[4],$nat{$id}[5],$nat{$id}[6],$nat{$id}[11],$nat{$id}[12],$nat{$id}[13],$nat{$id}[14],$nat{$id}[15],$nat{$id}[16],$nat{$id}[26],$nat{$id}[27],$nat{$id}[28],$nat{$id}[29],$nat{$id}[30],$nat{$id}[31]\n";
+               }
+       }
+       &General::writehasharray($confignat,\%nat);
+}
+close (LOG);
diff --git a/config/firewall/convert-xtaccess b/config/firewall/convert-xtaccess
new file mode 100755 (executable)
index 0000000..e04ab6d
--- /dev/null
@@ -0,0 +1,141 @@
+#!/usr/bin/perl
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2013 Alexander Marx <amarx@ipfire.org>                        #
+#                                                                             #
+# This program is free software: you can redistribute it and/or modify        #
+# it under the terms of the GNU General Public License as published by        #
+# the Free Software Foundation, either version 3 of the License, or           #
+# (at your option) any later version.                                         #
+#                                                                             #
+# This program is distributed in the hope that it will be useful,             #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
+# GNU General Public License for more details.                                #
+#                                                                             #
+# You should have received a copy of the GNU General Public License           #
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+#                                                                             #
+#This script converts old xtaccess rules to new firewall                      #
+#Logfiles are created under /var/log/converters                               #
+#                                                                             #
+###############################################################################
+my @current=();
+my @alias=();
+my %configinputfw=();
+require '/var/ipfire/general-functions.pl';
+my $xtaccessconfig     = "${General::swroot}/xtaccess/config";
+my $inputfwconfig = "${General::swroot}/firewall/input";
+my $aliasconfig        = "${General::swroot}/ethernet/aliases";
+my $field0='ACCEPT';
+my $field1='INPUTFW';
+my $field2=''; #ON or emtpy
+my $field3=''; #std_net_src or src_addr
+my $field4=''; #ALL or IP-Address with /32
+my $field5='ipfire';
+my $field6=''; #Default IP or alias name
+my $field11='ON'; #use target port 
+my $field12=''; #TCP or UDP
+my $field13='All ICMP-Types';
+my $field14='TGT_PORT';
+my $field15=''; #Port Number
+my $field16=''; #remark
+my $field26='00:00';
+my $field27='00:00';
+my $field28 = '';
+my $field29 = 'ALL';
+my $field30 = '';
+my $field31 = 'dnat';
+open(FILE, $xtaccessconfig) or die 'Unable to open config file.';
+my @current = <FILE>;
+close(FILE);
+open(FILE1, $aliasconfig) or die 'Unable to open config file.';
+my @alias = <FILE1>;
+close(FILE1);
+&General::readhasharray($inputfwconfig,\%configinputfw);
+
+foreach my $line (@current){
+       my ($a,$b,$c,$d,$e,$f) = split (",",$line);
+       $e =~ s/\R//g;
+       if ($f gt ''){
+               $f =~ s/\R//g;
+               $field16=$f;
+       }
+       #active or not
+       $field2=uc($d);
+       #get protocol
+       if ($a eq 'tcp'){ $field12 ='TCP';}else{$field12='UDP';}
+       #check source address
+       if ($b eq '0.0.0.0/0'){
+               $field3='std_net_src';
+               $field4='ALL';
+       }elsif($b =~/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/){
+               $field3='src_addr';
+               $field4=$b."/32";
+       }elsif ($b =~ /^(.*?)\/(.*?)$/) {
+               $field3='src_addr';
+               $field4=$b;
+       }else{
+               print "Regel konnte nicht konvertiert werden!\n";
+       }
+       #check ipfire address
+       if ($e eq '0.0.0.0'){ 
+               $field6 = 'RED1';
+       }else{
+               foreach my $line (@alias){
+                       my ($ip,$state,$aliasname) = split (",",$line);
+                       if ($ip eq $e){
+                               $aliasname =~ s/\R//g; 
+                               $field6 = $aliasname;
+                       }
+               }
+       }
+       #get target port
+       $c=~ s/\R//g;
+       $c=~ tr/-/:/;
+       if ($c =~ /^(\D)\:(\d+)$/) {
+               $c = "1:$2";
+       }
+       if ($c =~ /^(\d+)\:(\D)$/) {
+               $c = "$1:65535";
+       }
+       $field15=$c;
+       my $key = &General::findhasharraykey (\%configinputfw);
+       foreach my $i (0 .. 31) { $configinputfw{$key}[$i] = "";}
+       $configinputfw{$key}[0] = $field0;
+       $configinputfw{$key}[1] = $field1;
+       $configinputfw{$key}[2] = $field2;
+       $configinputfw{$key}[3] = $field3;
+       $configinputfw{$key}[4] = $field4;
+       $configinputfw{$key}[5] = $field5;
+       $configinputfw{$key}[6] = $field6;
+       $configinputfw{$key}[7] = '';
+       $configinputfw{$key}[8] = '';
+       $configinputfw{$key}[9] = '';
+       $configinputfw{$key}[10] = '';
+       $configinputfw{$key}[11] = $field11;
+       $configinputfw{$key}[12] = $field12;
+       $configinputfw{$key}[13] = $field13;
+       $configinputfw{$key}[14] = $field14;
+       $configinputfw{$key}[15] = $field15;
+       $configinputfw{$key}[16] = $field16;
+       $configinputfw{$key}[17] = '';
+       $configinputfw{$key}[18] = '';
+       $configinputfw{$key}[19] = '';
+       $configinputfw{$key}[20] = '';
+       $configinputfw{$key}[21] = '';
+       $configinputfw{$key}[22] = '';
+       $configinputfw{$key}[23] = '';
+       $configinputfw{$key}[24] = '';
+       $configinputfw{$key}[25] = '';
+       $configinputfw{$key}[26] = $field26;
+       $configinputfw{$key}[27] = $field27;
+       $configinputfw{$key}[28] = $field28;
+       $configinputfw{$key}[29] = $field29;
+       $configinputfw{$key}[30] = $field30;
+       $configinputfw{$key}[31] = $field31;
+       &General::writehasharray($inputfwconfig,\%configinputfw);
+}
diff --git a/config/firewall/firewall-lib.pl b/config/firewall/firewall-lib.pl
new file mode 100755 (executable)
index 0000000..f1e8403
--- /dev/null
@@ -0,0 +1,256 @@
+#!/usr/bin/perl
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2013 Alexander Marx <amarx@ipfire.org>                        #
+#                                                                             #
+# This program is free software: you can redistribute it and/or modify        #
+# it under the terms of the GNU General Public License as published by        #
+# the Free Software Foundation, either version 3 of the License, or           #
+# (at your option) any later version.                                         #
+#                                                                             #
+# This program is distributed in the hope that it will be useful,             #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
+# GNU General Public License for more details.                                #
+#                                                                             #
+# You should have received a copy of the GNU General Public License           #
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+
+use strict;
+no warnings 'uninitialized';
+
+package fwlib;
+
+my %customnetwork=();
+my %customhost=();
+my %customgrp=();
+my %customservice=();
+my %customservicegrp=();
+my %ccdnet=();
+my %ccdhost=();
+my %ipsecconf=();
+my %ipsecsettings=();
+my %netsettings=();
+my %ovpnsettings=();
+
+require '/var/ipfire/general-functions.pl';
+
+my $confignet          = "${General::swroot}/fwhosts/customnetworks";
+my $confighost         = "${General::swroot}/fwhosts/customhosts";
+my $configgrp          = "${General::swroot}/fwhosts/customgroups";
+my $configsrv          = "${General::swroot}/fwhosts/customservices";
+my $configsrvgrp       = "${General::swroot}/fwhosts/customservicegrp";
+my $configccdnet       = "${General::swroot}/ovpn/ccd.conf";
+my $configccdhost      = "${General::swroot}/ovpn/ovpnconfig";
+my $configipsec                = "${General::swroot}/vpn/config";
+my $configovpn         = "${General::swroot}/ovpn/settings";
+my $val;
+my $field;
+
+&General::readhash("/var/ipfire/ethernet/settings", \%netsettings);
+&General::readhash("${General::swroot}/ovpn/settings", \%ovpnsettings);
+&General::readhash("${General::swroot}/vpn/settings", \%ipsecsettings);
+
+
+&General::readhasharray("$confignet", \%customnetwork);
+&General::readhasharray("$confighost", \%customhost);
+&General::readhasharray("$configgrp", \%customgrp);
+&General::readhasharray("$configccdnet", \%ccdnet);
+&General::readhasharray("$configccdhost", \%ccdhost);
+&General::readhasharray("$configipsec", \%ipsecconf);
+&General::readhasharray("$configsrv", \%customservice);
+&General::readhasharray("$configsrvgrp", \%customservicegrp);
+
+sub get_srv_prot
+{
+       my $val=shift;
+       foreach my $key (sort {$a <=> $b} keys %customservice){
+               if($customservice{$key}[0] eq $val){
+                       if ($customservice{$key}[0] eq $val){
+                               return $customservice{$key}[2];
+                       }
+               }
+       }
+}
+sub get_srvgrp_prot
+{
+       my $val=shift;
+       my @ips=();
+       my $tcp;
+       my $udp;
+       my $icmp;
+       foreach my $key (sort {$a <=> $b} keys %customservicegrp){
+               if($customservicegrp{$key}[0] eq $val){
+                       if (&get_srv_prot($customservicegrp{$key}[2]) eq 'TCP'){ 
+                               $tcp=1;
+                       }elsif(&get_srv_prot($customservicegrp{$key}[2]) eq 'UDP'){ 
+                               $udp=1;
+                       }elsif(&get_srv_prot($customservicegrp{$key}[2]) eq 'ICMP'){
+                               $icmp=1;
+                       } 
+               }
+       }
+       if ($tcp eq '1'){push (@ips,'TCP');}
+       if ($udp eq '1'){push (@ips,'UDP');}
+       if ($icmp eq '1'){push (@ips,'ICMP');}
+       my $back=join(",",@ips);
+       return $back;
+       
+}
+
+
+sub get_srv_port
+{
+       my $val=shift;
+       my $field=shift;
+       my $prot=shift;
+       foreach my $key (sort {$a <=> $b} keys %customservice){
+               if($customservice{$key}[0] eq $val){
+                       if($customservice{$key}[2] eq $prot){
+                               return $customservice{$key}[$field];
+                       }
+               }
+       }
+}
+sub get_srvgrp_port
+{
+       my $val=shift;
+       my $prot=shift;
+       my $back;
+       my $value;
+       my @ips=();
+       foreach my $key (sort {$a <=> $b} keys %customservicegrp){
+               if($customservicegrp{$key}[0] eq $val){
+                       if ($prot ne 'ICMP'){
+                               $value=&get_srv_port($customservicegrp{$key}[2],1,$prot);
+                       }elsif ($prot eq 'ICMP'){
+                               $value=&get_srv_port($customservicegrp{$key}[2],3,$prot);
+                       }
+                       push (@ips,$value) if ($value ne '') ;
+               }
+       }
+       if($prot ne 'ICMP'){
+               if ($#ips gt 0){$back="-m multiport --dports ";}else{$back="--dport ";}
+       }elsif ($prot eq 'ICMP'){
+               $back="--icmp-type ";
+       }
+       
+       $back.=join(",",@ips);
+       return $back;
+}
+sub get_ipsec_net_ip
+{
+       my $val=shift;
+       my $field=shift;
+       foreach my $key (sort {$a <=> $b} keys %ipsecconf){
+               if($ipsecconf{$key}[1] eq $val){
+                       return $ipsecconf{$key}[$field];
+               }
+       }
+}
+sub get_ipsec_host_ip
+{
+       my $val=shift;
+       my $field=shift;
+       foreach my $key (sort {$a <=> $b} keys %ipsecconf){
+               if($ipsecconf{$key}[1] eq $val){
+                       return $ipsecconf{$key}[$field];
+               }
+       }
+}
+sub get_ovpn_n2n_ip
+{
+       my $val=shift;
+       my $field=shift;
+       foreach my $key (sort {$a <=> $b} keys %ccdhost){
+               if($ccdhost{$key}[1] eq $val){
+                       return $ccdhost{$key}[$field];
+               }
+       }
+}
+sub get_ovpn_host_ip
+{
+       my $val=shift;
+       my $field=shift;
+       foreach my $key (sort {$a <=> $b} keys %ccdhost){
+               if($ccdhost{$key}[1] eq $val){
+                       return $ccdhost{$key}[$field];
+               }
+       }
+}
+sub get_ovpn_net_ip
+{
+       
+       my $val=shift;
+       my $field=shift;
+       foreach my $key (sort {$a <=> $b} keys %ccdnet){
+               if($ccdnet{$key}[0] eq $val){
+                       return $ccdnet{$key}[$field];
+               }
+       }
+}
+sub get_grp_ip
+{
+       my $val=shift;
+       my $src=shift;
+       foreach my $key (sort {$a <=> $b} keys %customgrp){
+               if ($customgrp{$key}[0] eq $val){
+                       &get_address($customgrp{$key}[3],$src);
+               }
+       }               
+       
+}
+sub get_std_net_ip
+{
+       my $val=shift;
+       my $con=shift;
+       if ($val eq 'ALL'){
+               return "0.0.0.0/0.0.0.0";
+       }elsif($val eq 'GREEN'){
+               return "$netsettings{'GREEN_NETADDRESS'}/$netsettings{'GREEN_NETMASK'}";
+       }elsif($val eq 'ORANGE'){
+               return "$netsettings{'ORANGE_NETADDRESS'}/$netsettings{'ORANGE_NETMASK'}";
+       }elsif($val eq 'BLUE'){
+               return "$netsettings{'BLUE_NETADDRESS'}/$netsettings{'BLUE_NETMASK'}";
+       }elsif($val eq 'RED'){
+               return "0.0.0.0/0 -o $con";
+       }elsif($val =~ /OpenVPN/i){
+               return "$ovpnsettings{'DOVPN_SUBNET'}";
+       }elsif($val =~ /IPsec/i){
+               return "$ipsecsettings{'RW_NET'}";
+       }elsif($val eq 'IPFire'){
+               return ;
+       }
+}
+sub get_net_ip
+{
+       my $val=shift;
+       foreach my $key (sort {$a <=> $b} keys %customnetwork){
+               if($customnetwork{$key}[0] eq $val){
+                       return "$customnetwork{$key}[1]/$customnetwork{$key}[2]";
+               }  
+       }
+}
+sub get_host_ip
+{
+       my $val=shift;
+       my $src=shift;
+       foreach my $key (sort {$a <=> $b} keys %customhost){
+               if($customhost{$key}[0] eq $val){
+                       if ($customhost{$key}[1] eq 'mac' && $src eq 'src'){
+                       return "-m mac --mac-source $customhost{$key}[2]";
+                       }elsif($customhost{$key}[1] eq 'ip' && $src eq 'src'){
+                               return "$customhost{$key}[2]";
+                       }elsif($customhost{$key}[1] eq 'ip' && $src eq 'tgt'){
+                               return "$customhost{$key}[2]";
+                       }elsif($customhost{$key}[1] eq 'mac' && $src eq 'tgt'){
+                               return "none";
+                       }
+               }  
+       }
+}
+
+return 1;
diff --git a/config/firewall/firewall-policy b/config/firewall/firewall-policy
new file mode 100755 (executable)
index 0000000..6d26d5b
--- /dev/null
@@ -0,0 +1,124 @@
+#!/bin/sh
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2013 Alexander Marx <amarx@ipfire.org>                        #
+#                                                                             #
+# This program is free software: you can redistribute it and/or modify        #
+# it under the terms of the GNU General Public License as published by        #
+# the Free Software Foundation, either version 3 of the License, or           #
+# (at your option) any later version.                                         #
+#                                                                             #
+# This program is distributed in the hope that it will be useful,             #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
+# GNU General Public License for more details.                                #
+#                                                                             #
+# You should have received a copy of the GNU General Public License           #
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+
+eval $(/usr/local/bin/readhash /var/ipfire/ethernet/settings)
+eval $(/usr/local/bin/readhash /var/ipfire/firewall/settings)
+eval $(/usr/local/bin/readhash /var/ipfire/optionsfw/settings)
+
+iptables -F POLICYFWD
+iptables -F POLICYOUT
+iptables -F POLICYIN
+
+if [ -f "/var/ipfire/red/iface" ]; then
+       IFACE="$(</var/ipfire/red/iface)"
+fi
+
+# Figure out what devices are configured.
+HAVE_BLUE="false"
+HAVE_ORANGE="false"
+
+case "${CONFIG_TYPE}" in
+       2)
+               HAVE_BLUE="true"
+               ;;
+       3)
+               HAVE_ORANGE="true"
+               ;;
+       4)
+               HAVE_BLUE="true"
+               HAVE_ORANGE="true"
+               ;;
+esac
+
+# INPUT
+case "${FWPOLICY2}" in
+       REJECT)
+               if [ "${DROPINPUT}" = "on" ]; then
+                       /sbin/iptables -A POLICYIN -m limit --limit 10/minute -j LOG --log-prefix "REJECT_INPUT"
+               fi
+               /sbin/iptables -A POLICYIN -j REJECT --reject-with icmp-host-unreachable -m comment --comment "DROP_INPUT"
+               ;;
+       *) # DROP
+               if [ "${DROPINPUT}" = "on" ]; then
+                       /sbin/iptables -A POLICYIN -m limit --limit 10/minute -j LOG --log-prefix "DROP_INPUT"
+               fi
+               /sbin/iptables -A POLICYIN -j DROP -m comment --comment "DROP_INPUT"
+               ;;
+esac
+
+# FORWARD
+case "${POLICY}" in
+       MODE1)
+               case "${FWPOLICY}" in
+                       REJECT)
+                               if [ "${DROPFORWARD}" = "on" ]; then
+                                       /sbin/iptables -A POLICYFWD -m limit --limit 10/minute -j LOG --log-prefix "REJECT_FORWARD"
+                               fi
+                               /sbin/iptables -A POLICYFWD -j REJECT --reject-with icmp-host-unreachable -m comment --comment "DROP_FORWARD"
+                               ;;
+                       *) # DROP
+                               if [ "${DROPFORWARD}" = "on" ]; then
+                                       /sbin/iptables -A POLICYFWD -m limit --limit 10/minute -j LOG --log-prefix "DROP_FORWARD"
+                               fi
+                               /sbin/iptables -A POLICYFWD -j DROP -m comment --comment "DROP_FORWARD"
+                               ;;
+               esac
+               ;;
+
+       *)
+               if [ -n "${IFACE}" ]; then
+                       if [ "${HAVE_BLUE}" = "true" ] && [ -n "${BLUE_DEV}" ]; then
+                               /sbin/iptables -A POLICYFWD -i "${BLUE_DEV}" ! -o "${IFACE}" -j DROP
+                       fi
+                       if [ "${HAVE_ORANGE}" = "true" ] && [ -n "${ORANGE_DEV}" ]; then
+                               /sbin/iptables -A POLICYFWD -i "${ORANGE_DEV}" ! -o "${IFACE}" -j DROP
+                       fi
+               fi
+               /sbin/iptables -A POLICYFWD -j ACCEPT
+               /sbin/iptables -A POLICYFWD -m comment --comment "DROP_FORWARD" -j DROP
+               ;;
+esac
+
+# OUTGOING
+case "${POLICY1}" in
+       MODE1)
+               case "${FWPOLICY1}" in
+                       REJECT)
+                               if [ "${DROPOUTGOING}" = "on" ]; then
+                                       /sbin/iptables -A POLICYOUT -m limit --limit 10/minute -j LOG --log-prefix "REJECT_OUTPUT"
+                               fi
+                               /sbin/iptables -A POLICYOUT -j REJECT --reject-with icmp-host-unreachable -m comment --comment "DROP_OUTPUT"
+                               ;;
+                       *) # DROP
+                               if [ "${DROPOUTGOING}" == "on" ]; then
+                                       /sbin/iptables -A POLICYOUT -m limit --limit 10/minute -j LOG --log-prefix "DROP_OUTPUT"
+                               fi
+                               /sbin/iptables -A POLICYOUT -j DROP -m comment --comment "DROP_OUTPUT"
+                               ;;
+               esac
+               ;;
+       *)
+               /sbin/iptables -A POLICYOUT -j ACCEPT
+               /sbin/iptables -A POLICYOUT -m comment --comment "DROP_OUTPUT" -j DROP
+               ;;
+esac
+
+exit 0
diff --git a/config/firewall/p2protocols b/config/firewall/p2protocols
new file mode 100644 (file)
index 0000000..7000581
--- /dev/null
@@ -0,0 +1,9 @@
+Applejuice;apple;off;
+Ares;ares;off;
+Bittorrent;bit;off;
+DirectConnect;dc;off;
+Edonkey;edk;off;
+Gnutella;gnu;off;
+KaZaA;kazaa;off;
+SoulSeek;soul;off;
+WinMX;winmx;off;
diff --git a/config/firewall/rules.pl b/config/firewall/rules.pl
new file mode 100755 (executable)
index 0000000..c724aa8
--- /dev/null
@@ -0,0 +1,635 @@
+#!/usr/bin/perl
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2013 Alexander Marx <amarx@ipfire.org>                        #
+#                                                                             #
+# This program is free software: you can redistribute it and/or modify        #
+# it under the terms of the GNU General Public License as published by        #
+# the Free Software Foundation, either version 3 of the License, or           #
+# (at your option) any later version.                                         #
+#                                                                             #
+# This program is distributed in the hope that it will be useful,             #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
+# GNU General Public License for more details.                                #
+#                                                                             #
+# You should have received a copy of the GNU General Public License           #
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+
+use strict;
+use Time::Local;
+no warnings 'uninitialized';
+
+# enable only the following on debugging purpose
+#use warnings;
+#use CGI::Carp 'fatalsToBrowser';
+
+my %fwdfwsettings=();
+my %defaultNetworks=();
+my %configfwdfw=();
+my %color=();
+my %icmptypes=();
+my %ovpnSettings=();
+my %customgrp=();
+our %sourcehash=();
+our %targethash=();
+my @timeframe=();
+my %configinputfw=();
+my %configoutgoingfw=();
+my %confignatfw=();
+my %aliases=();
+my @DPROT=();
+my @p2ps=();
+require '/var/ipfire/general-functions.pl';
+require "${General::swroot}/lang.pl";
+require "${General::swroot}/firewall/bin/firewall-lib.pl";
+
+my $configfwdfw                = "${General::swroot}/firewall/config";
+my $configinput            = "${General::swroot}/firewall/input";
+my $configoutgoing  = "${General::swroot}/firewall/outgoing";
+my $p2pfile                    = "${General::swroot}/firewall/p2protocols";
+my $configgrp          = "${General::swroot}/fwhosts/customgroups";
+my $netsettings                = "${General::swroot}/ethernet/settings";
+my $errormessage       = '';
+my $orange                     = '';
+my $green                      = '';
+my $blue                       = '';
+my ($TYPE,$PROT,$SPROT,$DPROT,$SPORT,$DPORT,$TIME,$TIMEFROM,$TIMETILL,$SRC_TGT);
+my $CHAIN                      = "FORWARDFW";
+my $conexists          = 'off';
+my $command                    = 'iptables -A';
+my $dnat                       ='';
+my $snat                       ='';
+
+&General::readhash("${General::swroot}/firewall/settings", \%fwdfwsettings);
+&General::readhash("$netsettings", \%defaultNetworks);
+&General::readhasharray($configfwdfw, \%configfwdfw);
+&General::readhasharray($configinput, \%configinputfw);
+&General::readhasharray($configoutgoing, \%configoutgoingfw);
+&General::readhasharray($configgrp, \%customgrp);
+&General::get_aliases(\%aliases);
+
+#check if we have an internetconnection
+open (CONN,"/var/ipfire/red/iface");
+my $con = <CONN>;
+close(CONN);
+if (-f "/var/ipfire/red/active"){
+       $conexists='on';
+}
+open (CONN1,"/var/ipfire/red/local-ipaddress");
+my $redip = <CONN1>;
+close(CONN1);
+#################
+#    DEBUG/TEST #
+#################
+my $MODE=0;     # 0 - normal operation
+                               # 1 - print configline and rules to console
+                               #
+#################
+my $param=shift;
+
+if($param eq 'flush'){
+       if ($MODE eq '1'){
+               print " Flushing chains...\n";
+       }
+       &flush;
+}else{
+       if ($MODE eq '1'){
+               print " Flushing chains...\n";
+       }
+       &flush;
+       if ($MODE eq '1'){
+               print " Preparing rules...\n";
+       }
+       &preparerules;
+       if($MODE eq '0'){
+               if ($fwdfwsettings{'POLICY'} eq 'MODE1'){
+                       &p2pblock;
+                       system ("/usr/sbin/firewall-policy");
+               }elsif($fwdfwsettings{'POLICY'} eq 'MODE2'){
+                       &p2pblock;
+                       system ("iptables -A $CHAIN -m conntrack --ctstate NEW -j ACCEPT");
+                       system ("/usr/sbin/firewall-policy");
+                       system ("/etc/sysconfig/firewall.local reload");
+               }
+       }
+}
+sub flush
+{
+       system ("iptables -F FORWARDFW");
+       system ("iptables -F INPUTFW");
+       system ("iptables -F OUTGOINGFW");
+       system ("iptables -t nat -F NAT_DESTINATION");
+       system ("iptables -t nat -F NAT_SOURCE");
+}
+sub preparerules
+{
+       if (! -z  "${General::swroot}/firewall/config"){
+               &buildrules(\%configfwdfw);
+       }
+       if (! -z  "${General::swroot}/firewall/input"){
+               &buildrules(\%configinputfw);
+       }
+       if (! -z  "${General::swroot}/firewall/outgoing"){
+               &buildrules(\%configoutgoingfw);
+       }
+}
+sub buildrules
+{
+       my $hash=shift;
+       my $STAG;
+       my $natip;
+       my $snatport;
+       my $fireport;
+       my $nat;
+       my $fwaccessdport;
+       my $natchain;
+       my $icmptype;
+       foreach my $key (sort {$a <=> $b} keys %$hash){
+               next if (($$hash{$key}[6] eq 'RED' || $$hash{$key}[6] eq 'RED1') && $conexists eq 'off' );
+               $command="iptables -A";
+               if ($$hash{$key}[28] eq 'ON'){
+                       $command='iptables -t nat -A';
+                       $natip=&get_nat_ip($$hash{$key}[29],$$hash{$key}[31]);
+                       if($$hash{$key}[31] eq 'dnat'){
+                               $nat='DNAT';
+                               if ($$hash{$key}[30] =~ /\|/){
+                                       $$hash{$key}[30]=~ tr/|/,/;
+                                       $fireport='-m multiport --dport '.$$hash{$key}[30];
+                               }else{
+                                       $fireport='--dport '.$$hash{$key}[30] if ($$hash{$key}[30]>0);
+                               }
+                       }else{
+                               $nat='SNAT';
+                       }
+               }
+               $STAG='';
+               if($$hash{$key}[2] eq 'ON'){
+                       #get source ip's
+                       if ($$hash{$key}[3] eq 'cust_grp_src'){
+                               foreach my $grp (sort {$a <=> $b} keys %customgrp){
+                                               if($customgrp{$grp}[0] eq $$hash{$key}[4]){
+                                               &get_address($customgrp{$grp}[3],$customgrp{$grp}[2],"src");
+                                       }
+                               }
+                       }else{
+                               &get_address($$hash{$key}[3],$$hash{$key}[4],"src");
+                       }
+                       #get target ip's
+                       if ($$hash{$key}[5] eq 'cust_grp_tgt'){
+                               foreach my $grp (sort {$a <=> $b} keys %customgrp){
+                                       if($customgrp{$grp}[0] eq $$hash{$key}[6]){
+                                               &get_address($customgrp{$grp}[3],$customgrp{$grp}[2],"tgt");
+                                       }
+                               }
+                       }elsif($$hash{$key}[5] eq 'ipfire' ){
+                               if($$hash{$key}[6] eq 'GREEN'){
+                                       $targethash{$key}[0]=$defaultNetworks{'GREEN_ADDRESS'};
+                               }
+                               if($$hash{$key}[6] eq 'BLUE'){
+                                       $targethash{$key}[0]=$defaultNetworks{'BLUE_ADDRESS'};
+                               }
+                               if($$hash{$key}[6] eq 'ORANGE'){
+                                       $targethash{$key}[0]=$defaultNetworks{'ORANGE_ADDRESS'};
+                               }
+                               if($$hash{$key}[6] eq 'ALL'){
+                                       $targethash{$key}[0]='0.0.0.0/0';
+                               }
+                               if($$hash{$key}[6] eq 'RED' || $$hash{$key}[6] eq 'RED1'){
+                                       open(FILE, "/var/ipfire/red/local-ipaddress")or die "Couldn't open local-ipaddress";
+                                       $targethash{$key}[0]= <FILE>;
+                                       close(FILE);
+                               }else{
+                                       foreach my $alias (sort keys %aliases){
+                                               if ($$hash{$key}[6] eq $alias){
+                                                       $targethash{$key}[0]=$aliases{$alias}{'IPT'};
+                                               }
+                                       }
+                               }
+                       }else{
+                               &get_address($$hash{$key}[5],$$hash{$key}[6],"tgt");
+                       }
+                       ##get source prot and port
+                       $SRC_TGT='SRC';
+                       $SPORT = &get_port($hash,$key);
+                       $SRC_TGT='';
+
+                       ##get target prot and port
+                       $DPROT=&get_prot($hash,$key);
+
+                       if ($DPROT eq ''){$DPROT=' ';}
+                       @DPROT=split(",",$DPROT);
+
+                       #get time if defined
+                       if($$hash{$key}[18] eq 'ON'){
+                               my ($time1,$time2,$daylight);
+                               my $daylight=$$hash{$key}[28];
+                               $time1=&get_time($$hash{$key}[26],$daylight);
+                               $time2=&get_time($$hash{$key}[27],$daylight);
+                               if($$hash{$key}[19] ne ''){push (@timeframe,"Mon");}
+                               if($$hash{$key}[20] ne ''){push (@timeframe,"Tue");}
+                               if($$hash{$key}[21] ne ''){push (@timeframe,"Wed");}
+                               if($$hash{$key}[22] ne ''){push (@timeframe,"Thu");}
+                               if($$hash{$key}[23] ne ''){push (@timeframe,"Fri");}
+                               if($$hash{$key}[24] ne ''){push (@timeframe,"Sat");}
+                               if($$hash{$key}[25] ne ''){push (@timeframe,"Sun");}
+                               $TIME=join(",",@timeframe);
+
+                               $TIMEFROM="--timestart $time1 ";
+                               $TIMETILL="--timestop $time2 ";
+                               $TIME="-m time --weekdays $TIME $TIMEFROM $TIMETILL";
+                       }
+                       if ($MODE eq '1'){
+                               print "NR:$key ";
+                               foreach my $i (0 .. $#{$$hash{$key}}){
+                                       print "$i: $$hash{$key}[$i]  ";
+                               }
+                               print "\n";
+                               print"##################################\n";
+                               #print rules to console
+                               foreach my $DPROT (@DPROT){
+                                       $DPORT = &get_port($hash,$key,$DPROT);
+                                       $PROT=$DPROT;
+                                       $PROT="-p $PROT" if ($PROT ne '' && $PROT ne ' ');
+                                       foreach my $a (sort keys %sourcehash){
+                                               foreach my $b (sort keys %targethash){
+                                                       if ($sourcehash{$a}[0] ne $targethash{$b}[0] && $targethash{$b}[0] ne 'none' || $sourcehash{$a}[0] eq '0.0.0.0/0.0.0.0'){
+                                                               if($DPROT ne ''){
+                                                                       if(substr($sourcehash{$a}[0], 3, 3) ne 'mac' && $sourcehash{$a}[0] ne ''){ $STAG="-s";}
+                                                                       if(substr($DPORT, 2, 4) eq 'icmp'){
+                                                                               my @icmprule= split(",",substr($DPORT, 12,));
+                                                                               foreach (@icmprule){
+                                                                                       $icmptype="--icmp-type ";
+                                                                                       if ($_ eq "BLANK") {
+                                                                                                       $icmptype="";
+                                                                                                       $_="";
+                                                                                       }
+                                                                                       if ($$hash{$key}[17] eq 'ON'){
+                                                                                               print "$command $$hash{$key}[1] $PROT $STAG $sourcehash{$a}[0] $SPORT -d $targethash{$b}[0] $icmptype $_ $TIME -j LOG\n";
+                                                                                       }
+                                                                                               print "$command $$hash{$key}[1] $PROT $STAG $sourcehash{$a}[0] $SPORT -d $targethash{$b}[0] $icmptype $_ $TIME -j $$hash{$key}[0]\n";
+                                                                               }
+                                                                       }elsif($$hash{$key}[28] eq 'ON' && $$hash{$key}[31] eq 'dnat'){
+                                                                               $natchain='NAT_DESTINATION';
+                                                                               if ($$hash{$key}[17] eq 'ON'){
+                                                                                       print "$command $natchain $PROT $STAG $sourcehash{$a}[0] $fireport $TIME -j LOG --log-prefix 'DNAT' \n";
+                                                                               }
+                                                                               my ($ip,$sub) =split("/",$targethash{$b}[0]);
+                                                                               #Process NAT with servicegroup used
+                                                                               if ($$hash{$key}[28] eq 'ON' && $$hash{$key}[31] eq 'dnat' && $$hash{$key}[14] eq 'cust_srvgrp'){
+                                                                                       print "$command $natchain $PROT $STAG $sourcehash{$a}[0] $SPORT $natip $fireport $TIME -j $nat --to $ip $DPORT\n";
+                                                                                       $fwaccessdport=$DPORT;
+                                                                               }else{
+                                                                                       print "$command $natchain $PROT $STAG $sourcehash{$a}[0] $SPORT $natip $fireport $TIME -j $nat --to $ip$DPORT\n";
+                                                                                       $DPORT =~ s/\-/:/g;
+                                                                                       if ($DPORT){
+                                                                                               $fwaccessdport="--dport ".substr($DPORT,1,);
+                                                                                       }elsif(! $DPORT && $$hash{$key}[30] ne ''){
+                                                                                               if ($$hash{$key}[30]=~m/|/i){
+                                                                                                       $$hash{$key}[30] =~ s/\|/,/g;
+                                                                                                       $fwaccessdport="-m multiport --dport $$hash{$key}[30]";
+                                                                                               }else{
+                                                                                                       $fwaccessdport="--dport $$hash{$key}[30]";
+                                                                                               }
+                                                                                       }
+                                                                               }
+                                                                               print "iptables -A FORWARDFW $PROT -i $con $STAG $sourcehash{$a}[0] -d $ip $fwaccessdport $TIME -j $$hash{$key}[0]\n";
+                                                                               next;
+                                                                       }elsif($$hash{$key}[28] eq 'ON' && $$hash{$key}[31] eq 'snat'){
+                                                                               $natchain='NAT_SOURCE';
+                                                                               print "$command $natchain $PROT $STAG $sourcehash{$a}[0] $SPORT -d $targethash{$b}[0] $DPORT $TIME -j $nat --to $natip\n";
+                                                                       }
+                                                                       if ($$hash{$key}[17] eq 'ON' ){
+                                                                                       print "$command $natchain $PROT $STAG $sourcehash{$a}[0] $SPORT -d $targethash{$b}[0] $DPORT $TIME -j LOG\n";
+                                                                       }
+                                                                       if ($PROT ne '-p ICMP'){
+                                                                               print "iptables -A $$hash{$key}[1] $PROT $STAG $sourcehash{$a}[0] $SPORT -d $targethash{$b}[0] $DPORT $TIME -j $$hash{$key}[0]\n";
+                                                                       }
+                                                                       if ($PROT eq '-p ICMP' && $$hash{$key}[9] eq 'All ICMP-Types'){
+                                                                               print "iptables -A $$hash{$key}[1] $PROT $STAG $sourcehash{$a}[0] $SPORT -d $targethash{$b}[0] $DPORT $TIME -j $$hash{$key}[0]\n";
+                                                                       }
+                                                               }
+                                                       }
+                                               }
+                                       }
+                                       print"\n";
+                               }
+                       }elsif($MODE eq '0'){
+                               foreach my $DPROT (@DPROT){
+                                       $DPORT = &get_port($hash,$key,$DPROT);
+                                       $PROT=$DPROT;
+                                       $PROT="-p $PROT" if ($PROT ne '' && $PROT ne ' ');
+                                       foreach my $a (sort keys %sourcehash){
+                                               foreach my $b (sort keys %targethash){
+                                                       if ($sourcehash{$a}[0] ne $targethash{$b}[0] && $targethash{$b}[0] ne 'none' || $sourcehash{$a}[0] eq '0.0.0.0/0.0.0.0'){
+                                                               if($DPROT ne ''){
+                                                                       if(substr($sourcehash{$a}[0], 3, 3) ne 'mac' && $sourcehash{$a}[0] ne ''){ $STAG="-s";}
+                                                                       #Process ICMP RULE
+                                                                       if(substr($DPORT, 2, 4) eq 'icmp'){
+                                                                               my @icmprule= split(",",substr($DPORT, 12,));
+                                                                               foreach (@icmprule){
+                                                                                       $icmptype="--icmp-type ";
+                                                                                       if ($_ eq "BLANK") {
+                                                                                                       $icmptype="";
+                                                                                                       $_="";
+                                                                                       }
+                                                                                       if ($$hash{$key}[17] eq 'ON'){
+                                                                                               system ("$command $$hash{$key}[1] $PROT $STAG $sourcehash{$a}[0] $SPORT -d $targethash{$b}[0] $icmptype $_ $TIME -j LOG");
+                                                                                       }
+                                                                                               system ("$command $$hash{$key}[1] $PROT $STAG $sourcehash{$a}[0] $SPORT -d $targethash{$b}[0] $icmptype $_ $TIME -j $$hash{$key}[0]");
+                                                                               }
+                                                                       #PROCESS DNAT RULE (Portforward)
+                                                                       }elsif($$hash{$key}[28] eq 'ON' && $$hash{$key}[31] eq 'dnat'){
+                                                                               $natchain='NAT_DESTINATION';
+                                                                               if ($$hash{$key}[17] eq 'ON'){
+                                                                                       system "$command $natchain $PROT $STAG $sourcehash{$a}[0] $fireport $TIME -j LOG --log-prefix 'DNAT' \n";
+                                                                               }
+                                                                               my ($ip,$sub) =split("/",$targethash{$b}[0]);
+                                                                               #Process NAT with servicegroup used
+                                                                               if ($$hash{$key}[28] eq 'ON' && $$hash{$key}[31] eq 'dnat' && $$hash{$key}[14] eq 'cust_srvgrp'){
+                                                                                       system "$command $natchain $PROT $STAG $sourcehash{$a}[0] $SPORT $natip $fireport $TIME -j $nat --to $ip $DPORT\n";
+                                                                                       $fwaccessdport=$DPORT;
+                                                                               }else{
+                                                                                       system "$command $natchain $PROT $STAG $sourcehash{$a}[0] $SPORT $natip $fireport $TIME -j $nat --to $ip$DPORT\n";
+                                                                                       $DPORT =~ s/\-/:/g;
+                                                                                       if ($DPORT){
+                                                                                               $fwaccessdport="--dport ".substr($DPORT,1,);
+                                                                                       }elsif(! $DPORT && $$hash{$key}[30] ne ''){
+                                                                                               if ($$hash{$key}[30]=~m/|/i){
+                                                                                                       $$hash{$key}[30] =~ s/\|/,/g;
+                                                                                                       $fwaccessdport="-m multiport --dport $$hash{$key}[30]";
+                                                                                               }else{
+                                                                                                       $fwaccessdport="--dport $$hash{$key}[30]";
+                                                                                               }
+                                                                                       }
+                                                                               }
+                                                                               system "iptables -A FORWARDFW $PROT -i $con $STAG $sourcehash{$a}[0] -d $ip $fwaccessdport $TIME -j $$hash{$key}[0]\n";
+                                                                               next;
+                                                                       #PROCESS SNAT RULE
+                                                                       }elsif($$hash{$key}[28] eq 'ON' && $$hash{$key}[31] eq 'snat'){
+                                                                               $natchain='NAT_SOURCE';
+                                                                               system "$command $natchain $PROT $STAG $sourcehash{$a}[0] $SPORT -d $targethash{$b}[0] $DPORT $TIME -j $nat --to $natip\n";
+                                                                       }
+                                                                       if ($$hash{$key}[17] eq 'ON' && substr($DPORT, 2, 4) ne 'icmp'){
+                                                                               system "$command $natchain $PROT $STAG $sourcehash{$a}[0] $SPORT -d $targethash{$b}[0] $DPORT $TIME -j LOG\n";
+                                                                       }
+                                                                       #PROCESS EVERY OTHER RULE (If NOT ICMP, else the rule would be applied double)
+                                                                       if ($PROT ne '-p ICMP'){
+                                                                               system "iptables -A $$hash{$key}[1] $PROT $STAG $sourcehash{$a}[0] $SPORT -d $targethash{$b}[0] $DPORT $TIME -j $$hash{$key}[0]\n";
+                                                                       }
+                                                                       #PROCESS Prot ICMP and type = All ICMP-Types
+                                                                       if ($PROT eq '-p ICMP' && $$hash{$key}[9] eq 'All ICMP-Types'){
+                                                                               system "iptables -A $$hash{$key}[1] $PROT $STAG $sourcehash{$a}[0] $SPORT -d $targethash{$b}[0] $DPORT $TIME -j $$hash{$key}[0]\n";
+                                                                       }
+                                                               }
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+               }
+               %sourcehash=();
+               %targethash=();
+               undef $TIME;
+               undef $TIMEFROM;
+               undef $TIMETILL;
+               undef $fireport;
+       }
+}
+sub get_nat_ip
+{
+       my $val=shift;
+       my $type=shift;
+       my $result;
+       if($val eq 'RED' || $val eq 'GREEN' || $val eq 'ORANGE' || $val eq 'BLUE'){
+               $result=$defaultNetworks{$val.'_ADDRESS'};
+       }elsif($val eq 'ALL'){
+               $result='-i '.$con;
+       }elsif($val eq 'Default IP' && $type eq 'dnat'){
+               $result='-d '.$redip;
+       }elsif($val eq 'Default IP' && $type eq 'snat'){
+               $result=$redip;
+       }else{
+               foreach my $al (sort keys %aliases){
+                       if($val eq $al && $type eq 'dnat'){
+                               $result='-d '.$aliases{$al}{'IPT'};
+                       }elsif($val eq $al && $type eq 'snat'){
+                               $result=$aliases{$al}{'IPT'};
+                       }
+               }
+       }
+       return $result;
+}
+sub get_time
+{
+       my $val=shift;
+       my $val1=shift;
+       my $time;
+       my $minutes;
+       my $ruletime;
+       $minutes = &utcmin($val);
+       $ruletime = $minutes + &time_get_utc($val);
+       if ($ruletime < 0){$ruletime +=1440;}
+       if ($ruletime > 1440){$ruletime -=1440;}
+       $time=sprintf "%02d:%02d", $ruletime / 60, $ruletime % 60;
+       return $time;
+}
+sub time_get_utc
+{
+       # Calculates the UTCtime from a given time
+       my $val=shift;
+       my @localtime=localtime(time);
+       my @gmtime=gmtime(time);
+       my $diff = ($gmtime[2]*60+$gmtime[1]%60)-($localtime[2]*60+$localtime[1]%60);
+       return $diff;
+}
+sub utcmin
+{
+       my $ruletime=shift;
+       my ($hrs,$min) = split(":",$ruletime);
+       my $newtime = $hrs*60+$min;
+       return $newtime;
+}
+sub p2pblock
+{
+       my $P2PSTRING;
+       my $DO;
+       open( FILE, "< $p2pfile" ) or die "Unable to read $p2pfile";
+       @p2ps = <FILE>;
+       close FILE;
+       my $CMD = "-m ipp2p";
+       foreach my $p2pentry (sort @p2ps) {
+               my @p2pline = split( /\;/, $p2pentry );
+               if ( $fwdfwsettings{'POLICY'} eq 'MODE1' ) {
+                       $DO = "ACCEPT";
+                       if ("$p2pline[2]" eq "on") {
+                               $P2PSTRING = "$P2PSTRING --$p2pline[1]";
+                       }
+               }else {
+                       $DO = "RETURN";
+                       if ("$p2pline[2]" eq "off") {
+                               $P2PSTRING = "$P2PSTRING --$p2pline[1]";
+                       }
+               }
+       }
+       if ($MODE eq 1){
+               if($P2PSTRING){
+                       print"/sbin/iptables -A FORWARDFW $CMD $P2PSTRING -j $DO\n";
+               }
+       }else{
+               if($P2PSTRING){
+                       system("/sbin/iptables -A FORWARDFW $CMD $P2PSTRING -j $DO");
+               }
+       }
+}
+sub get_address
+{
+       my $base=shift; #source of checking ($configfwdfw{$key}[x] or groupkey
+       my $base2=shift;
+       my $type=shift; #src or tgt
+       my $hash;
+       if ($type eq 'src'){
+               $hash=\%sourcehash;
+       }else{
+               $hash=\%targethash;
+       }
+       my $key = &General::findhasharraykey($hash);
+       if($base eq 'src_addr' || $base eq 'tgt_addr' ){
+               if (&General::validmac($base2)){
+                       $$hash{$key}[0] = "-m mac --mac-source $base2";
+               }else{
+                       $$hash{$key}[0] = $base2;
+               }
+       }elsif($base eq 'std_net_src' || $base eq 'std_net_tgt' || $base eq 'Standard Network'){
+               $$hash{$key}[0]=&fwlib::get_std_net_ip($base2,$con);
+       }elsif($base eq 'cust_net_src' || $base eq 'cust_net_tgt' || $base eq 'Custom Network'){
+               $$hash{$key}[0]=&fwlib::get_net_ip($base2);
+       }elsif($base eq 'cust_host_src' || $base eq 'cust_host_tgt' || $base eq 'Custom Host'){
+               $$hash{$key}[0]=&fwlib::get_host_ip($base2,$type);
+       }elsif($base eq 'ovpn_net_src' || $base eq 'ovpn_net_tgt' || $base eq 'OpenVPN static network'){
+               $$hash{$key}[0]=&fwlib::get_ovpn_net_ip($base2,1);
+       }elsif($base eq 'ovpn_host_src' ||$base eq 'ovpn_host_tgt' || $base eq 'OpenVPN static host'){
+               $$hash{$key}[0]=&fwlib::get_ovpn_host_ip($base2,33);
+       }elsif($base eq 'ovpn_n2n_src' ||$base eq 'ovpn_n2n_tgt' || $base eq 'OpenVPN N-2-N'){
+               $$hash{$key}[0]=&fwlib::get_ovpn_n2n_ip($base2,11);
+       }elsif($base eq 'ipsec_net_src' || $base eq 'ipsec_net_tgt' || $base eq 'IpSec Network'){
+               $$hash{$key}[0]=&fwlib::get_ipsec_net_ip($base2,11);
+       }elsif($base eq 'ipfire_src' ){
+               if($base2 eq 'GREEN'){
+                       $$hash{$key}[0]=$defaultNetworks{'GREEN_ADDRESS'};
+               }
+               if($base2 eq 'BLUE'){
+                       $$hash{$key}[0]=$defaultNetworks{'BLUE_ADDRESS'};
+               }
+               if($base2 eq 'ORANGE'){
+                       $$hash{$key}[0]=$defaultNetworks{'ORANGE_ADDRESS'};
+               }
+               if($base2 eq 'ALL'){
+                       $$hash{$key}[0]='0.0.0.0/0';
+               }
+               if($base2 eq 'RED' || $base2 eq 'RED1'){
+                       open(FILE, "/var/ipfire/red/local-ipaddress")or die "Couldn't open local-ipaddress";
+                       $$hash{$key}[0]= <FILE>;
+                       close(FILE);
+               }else{
+                       foreach my $alias (sort keys %aliases){
+                               if ($base2 eq $alias){
+                                       $$hash{$key}[0]=$aliases{$alias}{'IPT'};
+                               }
+                       }
+               }
+       }
+}
+sub get_prot
+{
+       my $hash=shift;
+       my $key=shift;
+       #check AH,GRE,ESP or ICMP
+       if ($$hash{$key}[7] ne 'ON' && $$hash{$key}[11] ne 'ON'){
+               return "$$hash{$key}[8]";
+       }
+       if ($$hash{$key}[7] eq 'ON' || $$hash{$key}[11] eq 'ON'){
+               #check if servicegroup or service
+               if($$hash{$key}[14] eq 'cust_srv'){
+                       return &fwlib::get_srv_prot($$hash{$key}[15]);
+               }elsif($$hash{$key}[14] eq 'cust_srvgrp'){
+                       return &fwlib::get_srvgrp_prot($$hash{$key}[15]);
+               }elsif (($$hash{$key}[10] ne '' || $$hash{$key}[15] ne '') && $$hash{$key}[8] eq ''){ #when ports are used and prot set to "all"
+                       return "TCP,UDP";
+               }elsif (($$hash{$key}[10] ne '' || $$hash{$key}[15] ne '') && ($$hash{$key}[8] eq 'TCP' || $$hash{$key}[8] eq 'UDP')){ #when ports are used and prot set to "tcp" or "udp"
+                       return "$$hash{$key}[8]";
+               }elsif (($$hash{$key}[10] eq '' && $$hash{$key}[15] eq '') && $$hash{$key}[8] ne 'ICMP'){ #when ports are NOT used and prot NOT set to "ICMP"
+                       return "$$hash{$key}[8]";
+               }else{
+                       return "$$hash{$key}[8]";
+               }
+       }
+       #DNAT
+       if ($SRC_TGT eq '' && $$hash{$key}[31] eq 'dnat' && $$hash{$key}[11] eq '' && $$hash{$key}[12] ne ''){
+               return "$$hash{$key}[8]";
+       }
+}
+sub get_port
+{
+       my $hash=shift;
+       my $key=shift;
+       my $prot=shift;
+       if ($$hash{$key}[7] eq 'ON' && $SRC_TGT eq 'SRC'){
+               if ($$hash{$key}[10] ne ''){
+                       $$hash{$key}[10] =~ s/\|/,/g;
+                       if(index($$hash{$key}[10],",") > 0){
+                               return "-m multiport --sport $$hash{$key}[10] ";
+                       }else{
+                               if($$hash{$key}[28] ne 'ON' || ($$hash{$key}[28] eq 'ON' && $$hash{$key}[31] eq 'snat') ||($$hash{$key}[28] eq 'ON' && $$hash{$key}[31] eq 'dnat')  ){
+                                       return "--sport $$hash{$key}[10] ";
+                               }else{
+                                       return ":$$hash{$key}[10]";
+                               }
+                       }
+               }
+       }elsif($$hash{$key}[11] eq 'ON' && $SRC_TGT eq ''){
+               if($$hash{$key}[14] eq 'TGT_PORT'){
+                       if ($$hash{$key}[15] ne ''){
+                               $$hash{$key}[15] =~ s/\|/,/g;
+                               if(index($$hash{$key}[15],",") > 0){
+                                       return "-m multiport --dport $$hash{$key}[15] ";
+                               }else{
+                                       if($$hash{$key}[28] ne 'ON' || ($$hash{$key}[28] eq 'ON' && $$hash{$key}[31] eq 'snat') ){
+                                               return "--dport $$hash{$key}[15] ";
+                                        }else{
+                                                $$hash{$key}[15] =~ s/\:/-/g;
+                                                return ":$$hash{$key}[15]";
+                                        }
+                               }
+                       }
+               }elsif($$hash{$key}[14] eq 'cust_srv'){
+                       if ($prot ne 'ICMP'){
+                               if($$hash{$key}[31] eq 'dnat' && $$hash{$key}[28] eq 'ON'){
+                                       return ":".&fwlib::get_srv_port($$hash{$key}[15],1,$prot);
+                               }else{
+                                       return "--dport ".&fwlib::get_srv_port($$hash{$key}[15],1,$prot);
+                               }
+                       }elsif($prot eq 'ICMP' && $$hash{$key}[11] eq 'ON'){        #When PROT is ICMP and "use targetport is checked, this is an icmp-service
+                               return "--icmp-type ".&fwlib::get_srv_port($$hash{$key}[15],3,$prot);
+                       }
+               }elsif($$hash{$key}[14] eq 'cust_srvgrp'){
+                       if      ($prot ne 'ICMP'){
+                               return &fwlib::get_srvgrp_port($$hash{$key}[15],$prot);
+                       }
+                       elsif($prot eq 'ICMP'){
+                               return &fwlib::get_srvgrp_port($$hash{$key}[15],$prot);
+                       }
+               }
+       }
+       #CHECK ICMP
+       if ($$hash{$key}[7] ne 'ON' && $$hash{$key}[11] ne 'ON' && $SRC_TGT eq ''){
+               if($$hash{$key}[9] ne '' && $$hash{$key}[9] ne 'All ICMP-Types'){
+                       return "--icmp-type $$hash{$key}[9] ";
+               }elsif($$hash{$key}[9] eq 'All ICMP-Types'){
+                       return;
+               }
+       }
+}
diff --git a/config/fwhosts/customservices b/config/fwhosts/customservices
new file mode 100644 (file)
index 0000000..07dd3d2
--- /dev/null
@@ -0,0 +1,32 @@
+32,rsync,873,TCP,BLANK,0
+21,IMAPS,993,TCP,BLANK,0
+7,WINS,42,TCP,BLANK,0
+26,LPD,515,TCP,BLANK,0
+17,IRC,194,TCP,BLANK,0
+2,FTP-control,21,TCP,BLANK,0
+1,FTP-data,20,TCP,BLANK,0
+18,HTTPS,443,TCP,BLANK,0
+30,NFS,2049,TCP,BLANK,0
+16,SNMP,161,UDP,BLANK,0
+25,IPP (UDP),631,UDP,BLANK,0
+27,JetDirect,9100,TCP,BLANK,0
+28,LDAP,389,TCP,BLANK,0
+14,NetBIOS Session Service,139,TCP,BLANK,0
+20,FTPS control,990,TCP,BLANK,0
+24,IPP (TCP),631,TCP,BLANK,0
+10,SFTP,115,TCP,BLANK,0
+31,Radius,1812,TCP,BLANK,0
+11,NTP,123,UDP,BLANK,0
+22,POP3S,995,TCP,BLANK,0
+13,NetBIOS Datagram Service,138,TCP,BLANK,0
+23,RDP,3389,TCP,BLANK,0
+29,LDAPS,636,TCP,BLANK,0
+6,Time,37,TCP,BLANK,0
+3,SSH,22,TCP,BLANK,0
+9,POP3,110,TCP,BLANK,0
+12,NetBIOS Name Service,137,TCP,BLANK,0
+15,IMAP,143,TCP,BLANK,0
+8,HTTP,80,TCP,BLANK,0
+4,Telnet,23,UDP,BLANK,0
+19,FTPS data,989,TCP,BLANK,0
+5,SMTP,25,TCP,BLANK,0
diff --git a/config/fwhosts/icmp-types b/config/fwhosts/icmp-types
new file mode 100755 (executable)
index 0000000..a9066a8
--- /dev/null
@@ -0,0 +1,36 @@
+0,echo-reply,0
+1,destination-unreachable,3
+2,network-unreachable,3/0
+3,host-unreachable,3/1
+4,protocol-unreachable,3/2
+5,port-unreachable,3/3
+6,fragmentation-needed,3/4
+7,source-route-failed,3/5
+8,network-unknown,3/6
+9,host-unknown,3/7
+10,network-prohibited,3/9
+11,host-prohibited,3/10
+12,TOS-network-unreachable,3/11
+13,TOS-host-unreachable,3/12
+14,communication-prohibited,3/13
+15,host-precedence-violation,3/14
+16,precedence-cutoff,3/15
+17,source-quench,4
+18,redirect,5
+19,network-redirect,5/0
+20,host-redirect,5/1
+21,TOS-network-redirect,5/2
+22,TOS-host-redirect,5/3
+23,echo-request,8
+24,router-advertisement,9
+25,router-solicitation,10
+26,time-exceeded,11
+27,ttl-zero-during-transit,11/0
+28,ttl-zero-during-reassembly,11/1
+29,parameter-problem,12
+30,ip-header-bad,12/0
+31,required-option-missing,12/1
+32,timestamp-request,13
+33,timestamp-reply,14
+34,address-mask-request,17
+35,address-mask-reply,18
index 70a7e23d49d4f9b43fa831ab9d1b8031843b2f81..626e44e31749e1e686d473d6592e781b2f8cd9fe 100644 (file)
@@ -1,38 +1,28 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/arm 3.2.47 Kernel Configuration
+# Linux/arm 3.10.10-ipfire-kirkwood Kernel Configuration
 #
 CONFIG_ARM=y
 CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_HAVE_SCHED_CLOCK=y
-CONFIG_GENERIC_GPIO=y
-# CONFIG_ARCH_USES_GETTIMEOFFSET is not set
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_KTIME_SCALAR=y
 CONFIG_HAVE_PROC_CPU=y
 CONFIG_STACKTRACE_SUPPORT=y
 CONFIG_HAVE_LATENCYTOP_SUPPORT=y
 CONFIG_LOCKDEP_SUPPORT=y
 CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_PROBE=y
 CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
 CONFIG_GENERIC_HWEIGHT=y
 CONFIG_GENERIC_CALIBRATE_DELAY=y
 CONFIG_NEED_DMA_MAP_STATE=y
 CONFIG_VECTORS_BASE=0xffff0000
-# CONFIG_ARM_PATCH_PHYS_VIRT is not set
-CONFIG_PHYS_OFFSET=0x0
+CONFIG_ARM_PATCH_PHYS_VIRT=y
 CONFIG_GENERIC_BUG=y
 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-CONFIG_HAVE_IRQ_WORK=y
 CONFIG_IRQ_WORK=y
+CONFIG_BUILDTIME_EXTABLE_SORT=y
 
 #
 # General setup
 #
-CONFIG_EXPERIMENTAL=y
 CONFIG_BROKEN_ON_SMP=y
 CONFIG_INIT_ENV_ARG_LIMIT=32
 CONFIG_CROSS_COMPILE=""
@@ -40,9 +30,11 @@ CONFIG_LOCALVERSION=""
 # CONFIG_LOCALVERSION_AUTO is not set
 CONFIG_HAVE_KERNEL_GZIP=y
 CONFIG_HAVE_KERNEL_LZMA=y
+CONFIG_HAVE_KERNEL_XZ=y
 CONFIG_HAVE_KERNEL_LZO=y
 # CONFIG_KERNEL_GZIP is not set
-CONFIG_KERNEL_LZMA=y
+# CONFIG_KERNEL_LZMA is not set
+CONFIG_KERNEL_XZ=y
 # CONFIG_KERNEL_LZO is not set
 CONFIG_DEFAULT_HOSTNAME="(none)"
 CONFIG_SWAP=y
@@ -50,43 +42,83 @@ CONFIG_SYSVIPC=y
 CONFIG_SYSVIPC_SYSCTL=y
 CONFIG_POSIX_MQUEUE=y
 CONFIG_POSIX_MQUEUE_SYSCTL=y
-CONFIG_BSD_PROCESS_ACCT=y
-CONFIG_BSD_PROCESS_ACCT_V3=y
-# CONFIG_FHANDLE is not set
-# CONFIG_TASKSTATS is not set
+CONFIG_FHANDLE=y
 CONFIG_AUDIT=y
+CONFIG_AUDITSYSCALL=y
+CONFIG_AUDIT_WATCH=y
+CONFIG_AUDIT_TREE=y
+CONFIG_AUDIT_LOGINUID_IMMUTABLE=y
 CONFIG_HAVE_GENERIC_HARDIRQS=y
 
 #
 # IRQ subsystem
 #
 CONFIG_GENERIC_HARDIRQS=y
-CONFIG_HAVE_SPARSE_IRQ=y
+CONFIG_GENERIC_IRQ_PROBE=y
 CONFIG_GENERIC_IRQ_SHOW=y
+CONFIG_HARDIRQS_SW_RESEND=y
 CONFIG_GENERIC_IRQ_CHIP=y
 CONFIG_IRQ_DOMAIN=y
-CONFIG_SPARSE_IRQ=y
+# CONFIG_IRQ_DOMAIN_DEBUG is not set
+CONFIG_KTIME_SCALAR=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+
+#
+# Timers subsystem
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ_COMMON=y
+# CONFIG_HZ_PERIODIC is not set
+CONFIG_NO_HZ_IDLE=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+
+#
+# CPU/Task time and stats accounting
+#
+CONFIG_TICK_CPU_ACCOUNTING=y
+# CONFIG_IRQ_TIME_ACCOUNTING is not set
+CONFIG_BSD_PROCESS_ACCT=y
+# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+CONFIG_TASKSTATS=y
+CONFIG_TASK_DELAY_ACCT=y
+CONFIG_TASK_XACCT=y
+CONFIG_TASK_IO_ACCOUNTING=y
 
 #
 # RCU Subsystem
 #
 CONFIG_TINY_RCU=y
 # CONFIG_PREEMPT_RCU is not set
-# CONFIG_RCU_TRACE is not set
+# CONFIG_RCU_STALL_COMMON is not set
 # CONFIG_TREE_RCU_TRACE is not set
 # CONFIG_IKCONFIG is not set
-CONFIG_LOG_BUF_SHIFT=19
-# CONFIG_CGROUPS is not set
+CONFIG_LOG_BUF_SHIFT=18
+CONFIG_CGROUPS=y
+# CONFIG_CGROUP_DEBUG is not set
+CONFIG_CGROUP_FREEZER=y
+CONFIG_CGROUP_DEVICE=y
+CONFIG_CPUSETS=y
+CONFIG_PROC_PID_CPUSET=y
+CONFIG_CGROUP_CPUACCT=y
+CONFIG_RESOURCE_COUNTERS=y
+# CONFIG_MEMCG is not set
+CONFIG_CGROUP_PERF=y
+CONFIG_CGROUP_SCHED=y
+CONFIG_FAIR_GROUP_SCHED=y
+# CONFIG_CFS_BANDWIDTH is not set
+CONFIG_RT_GROUP_SCHED=y
+CONFIG_BLK_CGROUP=y
+# CONFIG_DEBUG_BLK_CGROUP is not set
 CONFIG_NAMESPACES=y
 CONFIG_UTS_NS=y
 CONFIG_IPC_NS=y
-# CONFIG_USER_NS is not set
-# CONFIG_PID_NS is not set
-# CONFIG_NET_NS is not set
-# CONFIG_SCHED_AUTOGROUP is not set
-CONFIG_SYSFS_DEPRECATED=y
-CONFIG_SYSFS_DEPRECATED_V2=y
-# CONFIG_RELAY is not set
+CONFIG_PID_NS=y
+CONFIG_NET_NS=y
+CONFIG_SCHED_AUTOGROUP=y
+# CONFIG_SYSFS_DEPRECATED is not set
+CONFIG_RELAY=y
 CONFIG_BLK_DEV_INITRD=y
 CONFIG_INITRAMFS_SOURCE=""
 CONFIG_RD_GZIP=y
@@ -97,12 +129,13 @@ CONFIG_RD_LZO=y
 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 CONFIG_SYSCTL=y
 CONFIG_ANON_INODES=y
-# CONFIG_EXPERT is not set
+CONFIG_HAVE_UID16=y
+CONFIG_HOTPLUG=y
+CONFIG_EXPERT=y
 CONFIG_UID16=y
 # CONFIG_SYSCTL_SYSCALL is not set
 CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-CONFIG_HOTPLUG=y
+CONFIG_KALLSYMS_ALL=y
 CONFIG_PRINTK=y
 CONFIG_BUG=y
 CONFIG_ELF_CORE=y
@@ -114,7 +147,8 @@ CONFIG_TIMERFD=y
 CONFIG_EVENTFD=y
 CONFIG_SHMEM=y
 CONFIG_AIO=y
-# CONFIG_EMBEDDED is not set
+CONFIG_PCI_QUIRKS=y
+CONFIG_EMBEDDED=y
 CONFIG_HAVE_PERF_EVENTS=y
 CONFIG_PERF_USE_VMALLOC=y
 
@@ -122,25 +156,45 @@ CONFIG_PERF_USE_VMALLOC=y
 # Kernel Performance Events And Counters
 #
 CONFIG_PERF_EVENTS=y
-# CONFIG_PERF_COUNTERS is not set
 # CONFIG_DEBUG_PERF_USE_VMALLOC is not set
 CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_PCI_QUIRKS=y
 CONFIG_SLUB_DEBUG=y
 # CONFIG_COMPAT_BRK is not set
 # CONFIG_SLAB is not set
 CONFIG_SLUB=y
+# CONFIG_SLOB is not set
 # CONFIG_PROFILING is not set
+CONFIG_TRACEPOINTS=y
 CONFIG_HAVE_OPROFILE=y
 # CONFIG_KPROBES is not set
+CONFIG_JUMP_LABEL=y
+# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
 CONFIG_HAVE_KPROBES=y
 CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_ARCH_TRACEHOOK=y
+CONFIG_HAVE_DMA_ATTRS=y
+CONFIG_HAVE_DMA_CONTIGUOUS=y
+CONFIG_GENERIC_SMP_IDLE_THREAD=y
+CONFIG_GENERIC_IDLE_POLL_SETUP=y
 CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
+CONFIG_HAVE_CLK=y
 CONFIG_HAVE_DMA_API_DEBUG=y
+CONFIG_HAVE_ARCH_JUMP_LABEL=y
+CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
+CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
+CONFIG_SECCOMP_FILTER=y
+CONFIG_HAVE_CONTEXT_TRACKING=y
+CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
+CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
+CONFIG_MODULES_USE_ELF_REL=y
+CONFIG_CLONE_BACKWARDS=y
+CONFIG_OLD_SIGSUSPEND3=y
+CONFIG_OLD_SIGACTION=y
 
 #
 # GCOV-based kernel profiling
 #
+# CONFIG_GCOV_KERNEL is not set
 CONFIG_HAVE_GENERIC_DMA_COHERENT=y
 CONFIG_SLABINFO=y
 CONFIG_RT_MUTEXES=y
@@ -148,14 +202,40 @@ CONFIG_BASE_SMALL=0
 CONFIG_MODULES=y
 # CONFIG_MODULE_FORCE_LOAD is not set
 CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
 # CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_MODULE_SRCVERSION_ALL=y
+# CONFIG_MODULE_SIG is not set
+CONFIG_STOP_MACHINE=y
 CONFIG_BLOCK=y
 CONFIG_LBDAF=y
 CONFIG_BLK_DEV_BSG=y
 CONFIG_BLK_DEV_BSGLIB=y
-# CONFIG_BLK_DEV_INTEGRITY is not set
+CONFIG_BLK_DEV_INTEGRITY=y
+CONFIG_BLK_DEV_THROTTLING=y
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+CONFIG_LDM_PARTITION=y
+# CONFIG_LDM_DEBUG is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+CONFIG_EFI_PARTITION=y
+# CONFIG_SYSV68_PARTITION is not set
 
 #
 # IO Schedulers
@@ -163,136 +243,121 @@ CONFIG_BLK_DEV_BSGLIB=y
 CONFIG_IOSCHED_NOOP=y
 CONFIG_IOSCHED_DEADLINE=y
 CONFIG_IOSCHED_CFQ=y
+CONFIG_CFQ_GROUP_IOSCHED=y
 # CONFIG_DEFAULT_DEADLINE is not set
 CONFIG_DEFAULT_CFQ=y
 # CONFIG_DEFAULT_NOOP is not set
 CONFIG_DEFAULT_IOSCHED="cfq"
-# CONFIG_INLINE_SPIN_TRYLOCK is not set
-# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
-# CONFIG_INLINE_SPIN_LOCK is not set
-# CONFIG_INLINE_SPIN_LOCK_BH is not set
-# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
-# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
-CONFIG_INLINE_SPIN_UNLOCK=y
-# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
+CONFIG_ASN1=m
 CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
-# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
-# CONFIG_INLINE_READ_TRYLOCK is not set
-# CONFIG_INLINE_READ_LOCK is not set
-# CONFIG_INLINE_READ_LOCK_BH is not set
-# CONFIG_INLINE_READ_LOCK_IRQ is not set
-# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
 CONFIG_INLINE_READ_UNLOCK=y
-# CONFIG_INLINE_READ_UNLOCK_BH is not set
 CONFIG_INLINE_READ_UNLOCK_IRQ=y
-# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
-# CONFIG_INLINE_WRITE_TRYLOCK is not set
-# CONFIG_INLINE_WRITE_LOCK is not set
-# CONFIG_INLINE_WRITE_LOCK_BH is not set
-# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
-# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
 CONFIG_INLINE_WRITE_UNLOCK=y
-# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
 CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
-# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
-# CONFIG_MUTEX_SPIN_ON_OWNER is not set
-# CONFIG_FREEZER is not set
+CONFIG_FREEZER=y
 
 #
 # System Type
 #
 CONFIG_MMU=y
+# CONFIG_ARCH_MULTIPLATFORM is not set
 # CONFIG_ARCH_INTEGRATOR is not set
 # CONFIG_ARCH_REALVIEW is not set
 # CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_VEXPRESS is not set
 # CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_BCMRING is not set
-# CONFIG_ARCH_HIGHBANK is not set
 # CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CNS3XXX is not set
 # CONFIG_ARCH_GEMINI is not set
-# CONFIG_ARCH_PRIMA2 is not set
 # CONFIG_ARCH_EBSA110 is not set
 # CONFIG_ARCH_EP93XX is not set
 # CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_MXC is not set
-# CONFIG_ARCH_MXS is not set
 # CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_H720X is not set
 # CONFIG_ARCH_IOP13XX is not set
 # CONFIG_ARCH_IOP32X is not set
 # CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_IXP2000 is not set
 # CONFIG_ARCH_IXP4XX is not set
 # CONFIG_ARCH_DOVE is not set
 CONFIG_ARCH_KIRKWOOD=y
-# CONFIG_ARCH_LPC32XX is not set
 # CONFIG_ARCH_MV78XX0 is not set
 # CONFIG_ARCH_ORION5X is not set
 # CONFIG_ARCH_MMP is not set
 # CONFIG_ARCH_KS8695 is not set
 # CONFIG_ARCH_W90X900 is not set
-# CONFIG_ARCH_TEGRA is not set
-# CONFIG_ARCH_PICOXCELL is not set
-# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_LPC32XX is not set
 # CONFIG_ARCH_PXA is not set
 # CONFIG_ARCH_MSM is not set
 # CONFIG_ARCH_SHMOBILE is not set
 # CONFIG_ARCH_RPC is not set
 # CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_S3C24XX is not set
 # CONFIG_ARCH_S3C64XX is not set
 # CONFIG_ARCH_S5P64X0 is not set
 # CONFIG_ARCH_S5PC100 is not set
 # CONFIG_ARCH_S5PV210 is not set
 # CONFIG_ARCH_EXYNOS is not set
 # CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_TCC_926 is not set
 # CONFIG_ARCH_U300 is not set
-# CONFIG_ARCH_U8500 is not set
-# CONFIG_ARCH_NOMADIK is not set
 # CONFIG_ARCH_DAVINCI is not set
-# CONFIG_ARCH_OMAP is not set
-# CONFIG_PLAT_SPEAR is not set
-# CONFIG_ARCH_VT8500 is not set
-# CONFIG_ARCH_ZYNQ is not set
-CONFIG_GPIO_PCA953X=m
-CONFIG_KEYBOARD_GPIO_POLLED=m
+# CONFIG_ARCH_OMAP1 is not set
+# CONFIG_GPIO_PCA953X is not set
+CONFIG_KEYBOARD_GPIO_POLLED=y
 
 #
 # Marvell Kirkwood Implementations
 #
+CONFIG_MACH_D2NET_V2=y
 CONFIG_MACH_DB88F6281_BP=y
-CONFIG_MACH_RD88F6192_NAS=y
-CONFIG_MACH_RD88F6281=y
-CONFIG_MACH_MV88F6281GTW_GE=y
-CONFIG_MACH_SHEEVAPLUG=y
+CONFIG_MACH_DOCKSTAR=y
 CONFIG_MACH_ESATA_SHEEVAPLUG=y
 CONFIG_MACH_GURUPLUG=y
-CONFIG_MACH_DREAMPLUG=y
-CONFIG_MACH_TS219=y
-CONFIG_MACH_TS41X=y
-CONFIG_MACH_DOCKSTAR=y
+CONFIG_MACH_INETSPACE_V2=y
+CONFIG_MACH_MV88F6281GTW_GE=y
+CONFIG_MACH_NET2BIG_V2=y
+CONFIG_MACH_NET5BIG_V2=y
+CONFIG_MACH_NETSPACE_MAX_V2=y
+CONFIG_MACH_NETSPACE_V2=y
 CONFIG_MACH_OPENRD=y
 CONFIG_MACH_OPENRD_BASE=y
 CONFIG_MACH_OPENRD_CLIENT=y
 CONFIG_MACH_OPENRD_ULTIMATE=y
-CONFIG_MACH_NETSPACE_V2=y
-CONFIG_MACH_INETSPACE_V2=y
-CONFIG_MACH_NETSPACE_MAX_V2=y
-CONFIG_MACH_D2NET_V2=y
-CONFIG_MACH_NET2BIG_V2=y
-CONFIG_MACH_NET5BIG_V2=y
+CONFIG_MACH_RD88F6192_NAS=y
+CONFIG_MACH_RD88F6281=y
+CONFIG_MACH_SHEEVAPLUG=y
 CONFIG_MACH_T5325=y
-CONFIG_MACH_ICONNECT=y
-CONFIG_MACH_NAS6210=y
+CONFIG_MACH_DREAMPLUG=y
+CONFIG_MACH_TS219=y
+CONFIG_MACH_TS41X=y
 
 #
-# System MMU
-#
+# Device tree entries
+#
+CONFIG_ARCH_KIRKWOOD_DT=y
+CONFIG_MACH_CLOUDBOX_DT=y
+CONFIG_MACH_DLINK_KIRKWOOD_DT=y
+CONFIG_MACH_DOCKSTAR_DT=y
+CONFIG_MACH_DREAMPLUG_DT=y
+CONFIG_MACH_GOFLEXNET_DT=y
+CONFIG_MACH_GURUPLUG_DT=y
+CONFIG_MACH_IB62X0_DT=y
+CONFIG_MACH_ICONNECT_DT=y
+CONFIG_MACH_INETSPACE_V2_DT=y
+CONFIG_MACH_IOMEGA_IX2_200_DT=y
+CONFIG_MACH_KM_KIRKWOOD_DT=y
+CONFIG_MACH_LSXL_DT=y
+CONFIG_MACH_MPLCEC4_DT=y
+CONFIG_MACH_NETSPACE_LITE_V2_DT=y
+CONFIG_MACH_NETSPACE_MAX_V2_DT=y
+CONFIG_MACH_NETSPACE_MINI_V2_DT=y
+CONFIG_MACH_NETSPACE_V2_DT=y
+CONFIG_MACH_NSA310_DT=y
+CONFIG_MACH_OPENBLOCKS_A6_DT=y
+CONFIG_MACH_READYNAS_DT=y
+CONFIG_MACH_TOPKICK_DT=y
+CONFIG_MACH_TS219_DT=y
+CONFIG_MACH_ICONNECT=y
+CONFIG_MACH_NAS6210=y
+# CONFIG_PLAT_SPEAR is not set
 CONFIG_PLAT_ORION=y
+CONFIG_PLAT_ORION_LEGACY=y
 
 #
 # Processor Type
@@ -312,29 +377,33 @@ CONFIG_CPU_USE_DOMAINS=y
 #
 # Processor Features
 #
+# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
 CONFIG_ARM_THUMB=y
 # CONFIG_CPU_ICACHE_DISABLE is not set
 # CONFIG_CPU_DCACHE_DISABLE is not set
+CONFIG_NEED_KUSER_HELPERS=y
+CONFIG_KUSER_HELPERS=y
 CONFIG_OUTER_CACHE=y
 CONFIG_CACHE_FEROCEON_L2=y
 # CONFIG_CACHE_FEROCEON_L2_WRITETHROUGH is not set
+# CONFIG_CACHE_L2X0 is not set
 CONFIG_ARM_L1_CACHE_SHIFT=5
+CONFIG_ARM_NR_BANKS=8
 
 #
 # Bus support
 #
 CONFIG_PCI=y
 CONFIG_PCI_SYSCALL=y
-# CONFIG_ARCH_SUPPORTS_MSI is not set
 # CONFIG_PCI_DEBUG is not set
-CONFIG_PCI_STUB=m
+# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
+CONFIG_PCI_STUB=y
 CONFIG_PCI_ATS=y
 CONFIG_PCI_IOV=y
-CONFIG_PCI_PRI=y
+# CONFIG_PCI_PRI is not set
 # CONFIG_PCI_PASID is not set
 CONFIG_PCCARD=m
-CONFIG_PCMCIA=m
-CONFIG_PCMCIA_LOAD_CIS=y
+# CONFIG_PCMCIA is not set
 CONFIG_CARDBUS=y
 
 #
@@ -346,25 +415,20 @@ CONFIG_YENTA_RICOH=y
 CONFIG_YENTA_TI=y
 CONFIG_YENTA_ENE_TUNE=y
 CONFIG_YENTA_TOSHIBA=y
-CONFIG_PD6729=m
-CONFIG_I82092=m
-CONFIG_PCCARD_NONSTATIC=y
 
 #
 # Kernel Features
 #
-CONFIG_TICK_ONESHOT=y
-CONFIG_NO_HZ=y
-CONFIG_HIGH_RES_TIMERS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
 CONFIG_VMSPLIT_3G=y
 # CONFIG_VMSPLIT_2G is not set
 # CONFIG_VMSPLIT_1G is not set
 CONFIG_PAGE_OFFSET=0xC0000000
+CONFIG_ARCH_NR_GPIO=0
 CONFIG_PREEMPT_NONE=y
 # CONFIG_PREEMPT_VOLUNTARY is not set
 # CONFIG_PREEMPT is not set
 CONFIG_HZ=100
+CONFIG_SCHED_HRTICK=y
 CONFIG_AEABI=y
 # CONFIG_OABI_COMPAT is not set
 # CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
@@ -372,48 +436,57 @@ CONFIG_AEABI=y
 CONFIG_HAVE_ARCH_PFN_VALID=y
 CONFIG_HIGHMEM=y
 # CONFIG_HIGHPTE is not set
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
+CONFIG_HW_PERF_EVENTS=y
 CONFIG_FLATMEM=y
 CONFIG_FLAT_NODE_MEM_MAP=y
 CONFIG_HAVE_MEMBLOCK=y
+# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
 CONFIG_PAGEFLAGS_EXTENDED=y
 CONFIG_SPLIT_PTLOCK_CPUS=999999
-# CONFIG_COMPACTION is not set
+CONFIG_COMPACTION=y
+CONFIG_MIGRATION=y
 # CONFIG_PHYS_ADDR_T_64BIT is not set
 CONFIG_ZONE_DMA_FLAG=0
 CONFIG_BOUNCE=y
-CONFIG_VIRT_TO_BUS=y
 CONFIG_KSM=y
-CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+CONFIG_DEFAULT_MMAP_MIN_ADDR=32768
+CONFIG_CROSS_MEMORY_ATTACH=y
 CONFIG_NEED_PER_CPU_KM=y
-# CONFIG_CLEANCACHE is not set
+CONFIG_CLEANCACHE=y
+# CONFIG_FRONTSWAP is not set
 CONFIG_FORCE_MAX_ZONEORDER=11
 CONFIG_ALIGNMENT_TRAP=y
-CONFIG_UACCESS_WITH_MEMCPY=y
+# CONFIG_UACCESS_WITH_MEMCPY is not set
 CONFIG_SECCOMP=y
 CONFIG_CC_STACKPROTECTOR=y
-# CONFIG_DEPRECATED_PARAM_STRUCT is not set
 
 #
 # Boot options
 #
 CONFIG_USE_OF=y
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-# CONFIG_ARM_APPENDED_DTB is not set
-CONFIG_CMDLINE=""
+CONFIG_ATAGS=y
+# CONFIG_DEPRECATED_PARAM_STRUCT is not set
+CONFIG_ZBOOT_ROM_TEXT=0
+CONFIG_ZBOOT_ROM_BSS=0
+CONFIG_ARM_APPENDED_DTB=y
+CONFIG_ARM_ATAG_DTB_COMPAT=y
+CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER=y
+# CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND is not set
+CONFIG_CMDLINE="console=ttyAM0,115200 root=/dev/sda1 rootdelay=20"
+CONFIG_CMDLINE_FROM_BOOTLOADER=y
+# CONFIG_CMDLINE_EXTEND is not set
+# CONFIG_CMDLINE_FORCE is not set
 # CONFIG_XIP_KERNEL is not set
-# CONFIG_KEXEC is not set
-# CONFIG_CRASH_DUMP is not set
+CONFIG_KEXEC=y
+CONFIG_ATAGS_PROC=y
+CONFIG_CRASH_DUMP=y
 CONFIG_AUTO_ZRELADDR=y
 
 #
 # CPU Power Management
 #
-CONFIG_CPU_IDLE=y
-CONFIG_CPU_IDLE_GOV_LADDER=y
-CONFIG_CPU_IDLE_GOV_MENU=y
+# CONFIG_CPU_IDLE is not set
+# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set
 
 #
 # Floating point emulation
@@ -422,16 +495,18 @@ CONFIG_CPU_IDLE_GOV_MENU=y
 #
 # At least one emulation must be selected
 #
-# CONFIG_VFP is not set
+CONFIG_VFP=y
 
 #
 # Userspace binary formats
 #
 CONFIG_BINFMT_ELF=y
-# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
-CONFIG_HAVE_AOUT=y
-# CONFIG_BINFMT_AOUT is not set
-# CONFIG_BINFMT_MISC is not set
+CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
+CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
+CONFIG_BINFMT_SCRIPT=y
+# CONFIG_HAVE_AOUT is not set
+CONFIG_BINFMT_MISC=y
+CONFIG_COREDUMP=y
 
 #
 # Power management options
@@ -439,8 +514,8 @@ CONFIG_HAVE_AOUT=y
 CONFIG_PM_RUNTIME=y
 CONFIG_PM=y
 # CONFIG_PM_DEBUG is not set
-# CONFIG_APM_EMULATION is not set
-CONFIG_CPU_PM=y
+CONFIG_APM_EMULATION=y
+CONFIG_PM_CLK=y
 # CONFIG_ARM_CPU_SUSPEND is not set
 CONFIG_NET=y
 
@@ -448,10 +523,13 @@ CONFIG_NET=y
 # Networking options
 #
 CONFIG_PACKET=y
+CONFIG_PACKET_DIAG=y
 CONFIG_UNIX=y
+CONFIG_UNIX_DIAG=m
 CONFIG_XFRM=y
-CONFIG_XFRM_USER=m
-# CONFIG_XFRM_SUB_POLICY is not set
+CONFIG_XFRM_ALGO=y
+CONFIG_XFRM_USER=y
+CONFIG_XFRM_SUB_POLICY=y
 CONFIG_XFRM_MIGRATE=y
 CONFIG_XFRM_STATISTICS=y
 CONFIG_XFRM_IPCOMP=m
@@ -460,7 +538,7 @@ CONFIG_NET_KEY_MIGRATE=y
 CONFIG_INET=y
 CONFIG_IP_MULTICAST=y
 CONFIG_IP_ADVANCED_ROUTER=y
-# CONFIG_IP_FIB_TRIE_STATS is not set
+CONFIG_IP_FIB_TRIE_STATS=y
 CONFIG_IP_MULTIPLE_TABLES=y
 CONFIG_IP_ROUTE_MULTIPATH=y
 CONFIG_IP_ROUTE_VERBOSE=y
@@ -468,28 +546,31 @@ CONFIG_IP_ROUTE_CLASSID=y
 # CONFIG_IP_PNP is not set
 CONFIG_NET_IPIP=m
 CONFIG_NET_IPGRE_DEMUX=m
+CONFIG_NET_IP_TUNNEL=m
 CONFIG_NET_IPGRE=m
 CONFIG_NET_IPGRE_BROADCAST=y
 CONFIG_IP_MROUTE=y
-# CONFIG_IP_MROUTE_MULTIPLE_TABLES is not set
+CONFIG_IP_MROUTE_MULTIPLE_TABLES=y
 CONFIG_IP_PIMSM_V1=y
 CONFIG_IP_PIMSM_V2=y
-CONFIG_ARPD=y
+# CONFIG_ARPD is not set
 CONFIG_SYN_COOKIES=y
+CONFIG_NET_IPVTI=m
 CONFIG_INET_AH=m
 CONFIG_INET_ESP=m
 CONFIG_INET_IPCOMP=m
 CONFIG_INET_XFRM_TUNNEL=m
 CONFIG_INET_TUNNEL=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=y
-CONFIG_INET_XFRM_MODE_TUNNEL=y
-CONFIG_INET_XFRM_MODE_BEET=y
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
 CONFIG_INET_LRO=y
 CONFIG_INET_DIAG=m
 CONFIG_INET_TCP_DIAG=m
+CONFIG_INET_UDP_DIAG=m
 CONFIG_TCP_CONG_ADVANCED=y
 CONFIG_TCP_CONG_BIC=m
-CONFIG_TCP_CONG_CUBIC=m
+CONFIG_TCP_CONG_CUBIC=y
 CONFIG_TCP_CONG_WESTWOOD=m
 CONFIG_TCP_CONG_HTCP=m
 CONFIG_TCP_CONG_HSTCP=m
@@ -500,13 +581,15 @@ CONFIG_TCP_CONG_LP=m
 CONFIG_TCP_CONG_VENO=m
 CONFIG_TCP_CONG_YEAH=m
 CONFIG_TCP_CONG_ILLINOIS=m
-CONFIG_DEFAULT_RENO=y
-CONFIG_DEFAULT_TCP_CONG="reno"
-# CONFIG_TCP_MD5SIG is not set
+CONFIG_DEFAULT_CUBIC=y
+# CONFIG_DEFAULT_RENO is not set
+CONFIG_DEFAULT_TCP_CONG="cubic"
+CONFIG_TCP_MD5SIG=y
 CONFIG_IPV6=y
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+CONFIG_IPV6_PRIVACY=y
+CONFIG_IPV6_ROUTER_PREF=y
+CONFIG_IPV6_ROUTE_INFO=y
+CONFIG_IPV6_OPTIMISTIC_DAD=y
 CONFIG_INET6_AH=m
 CONFIG_INET6_ESP=m
 CONFIG_INET6_IPCOMP=m
@@ -518,14 +601,18 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m
 CONFIG_INET6_XFRM_MODE_BEET=m
 CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
 CONFIG_IPV6_SIT=m
-# CONFIG_IPV6_SIT_6RD is not set
+CONFIG_IPV6_SIT_6RD=y
 CONFIG_IPV6_NDISC_NODETYPE=y
 CONFIG_IPV6_TUNNEL=m
+CONFIG_IPV6_GRE=m
 CONFIG_IPV6_MULTIPLE_TABLES=y
-# CONFIG_IPV6_SUBTREES is not set
-# CONFIG_IPV6_MROUTE is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETWORK_PHY_TIMESTAMPING=y
+CONFIG_IPV6_SUBTREES=y
+CONFIG_IPV6_MROUTE=y
+CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
+CONFIG_IPV6_PIMSM_V2=y
+# CONFIG_NETLABEL is not set
+CONFIG_NETWORK_SECMARK=y
+# CONFIG_NETWORK_PHY_TIMESTAMPING is not set
 CONFIG_NETFILTER=y
 # CONFIG_NETFILTER_DEBUG is not set
 CONFIG_NETFILTER_ADVANCED=y
@@ -535,13 +622,18 @@ CONFIG_BRIDGE_NETFILTER=y
 # Core Netfilter Configuration
 #
 CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_ACCT=m
 CONFIG_NETFILTER_NETLINK_QUEUE=m
 CONFIG_NETFILTER_NETLINK_LOG=m
-CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CONNTRACK=y
 CONFIG_NF_CONNTRACK_MARK=y
-# CONFIG_NF_CONNTRACK_ZONES is not set
+CONFIG_NF_CONNTRACK_SECMARK=y
+CONFIG_NF_CONNTRACK_ZONES=y
+CONFIG_NF_CONNTRACK_PROCFS=y
 CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CONNTRACK_TIMEOUT=y
 CONFIG_NF_CONNTRACK_TIMESTAMP=y
+CONFIG_NF_CONNTRACK_LABELS=y
 CONFIG_NF_CT_PROTO_DCCP=m
 CONFIG_NF_CT_PROTO_GRE=m
 CONFIG_NF_CT_PROTO_SCTP=m
@@ -558,14 +650,28 @@ CONFIG_NF_CONNTRACK_SANE=m
 CONFIG_NF_CONNTRACK_SIP=m
 CONFIG_NF_CONNTRACK_TFTP=m
 CONFIG_NF_CT_NETLINK=m
+CONFIG_NF_CT_NETLINK_TIMEOUT=m
+CONFIG_NF_CT_NETLINK_HELPER=m
+CONFIG_NETFILTER_NETLINK_QUEUE_CT=y
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_NF_NAT_PROTO_DCCP=m
+CONFIG_NF_NAT_PROTO_UDPLITE=m
+CONFIG_NF_NAT_PROTO_SCTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_NF_NAT_TFTP=m
 CONFIG_NETFILTER_TPROXY=m
-CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XTABLES=y
 
 #
 # Xtables combined modules
 #
 CONFIG_NETFILTER_XT_MARK=m
 CONFIG_NETFILTER_XT_CONNMARK=m
+CONFIG_NETFILTER_XT_SET=m
 
 #
 # Xtables targets
@@ -574,20 +680,26 @@ CONFIG_NETFILTER_XT_TARGET_AUDIT=m
 CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
 CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
 CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m
 CONFIG_NETFILTER_XT_TARGET_CT=m
 CONFIG_NETFILTER_XT_TARGET_DSCP=m
 CONFIG_NETFILTER_XT_TARGET_HL=m
+CONFIG_NETFILTER_XT_TARGET_HMARK=m
 CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m
 CONFIG_NETFILTER_XT_TARGET_LED=m
+CONFIG_NETFILTER_XT_TARGET_LOG=m
 CONFIG_NETFILTER_XT_TARGET_IMQ=m
 CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NETMAP=m
 CONFIG_NETFILTER_XT_TARGET_NFLOG=m
 CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
 CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
 CONFIG_NETFILTER_XT_TARGET_RATEEST=m
+CONFIG_NETFILTER_XT_TARGET_REDIRECT=m
 CONFIG_NETFILTER_XT_TARGET_TEE=m
 CONFIG_NETFILTER_XT_TARGET_TPROXY=m
 CONFIG_NETFILTER_XT_TARGET_TRACE=m
+CONFIG_NETFILTER_XT_TARGET_SECMARK=m
 CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
 CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
 
@@ -595,9 +707,11 @@ CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
 # Xtables matches
 #
 CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
+CONFIG_NETFILTER_XT_MATCH_BPF=m
 CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
 CONFIG_NETFILTER_XT_MATCH_COMMENT=m
 CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m
 CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
 CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
 CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
@@ -605,17 +719,19 @@ CONFIG_NETFILTER_XT_MATCH_CPU=m
 CONFIG_NETFILTER_XT_MATCH_DCCP=m
 CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m
 CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ECN=m
 CONFIG_NETFILTER_XT_MATCH_ESP=m
 CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
 CONFIG_NETFILTER_XT_MATCH_HELPER=m
 CONFIG_NETFILTER_XT_MATCH_HL=m
 CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
-CONFIG_NETFILTER_XT_MATCH_IPVS=m
+# CONFIG_NETFILTER_XT_MATCH_IPVS is not set
 CONFIG_NETFILTER_XT_MATCH_LENGTH=m
 CONFIG_NETFILTER_XT_MATCH_LIMIT=m
 CONFIG_NETFILTER_XT_MATCH_MAC=m
 CONFIG_NETFILTER_XT_MATCH_MARK=m
 CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_NFACCT=m
 CONFIG_NETFILTER_XT_MATCH_OSF=m
 CONFIG_NETFILTER_XT_MATCH_OWNER=m
 CONFIG_NETFILTER_XT_MATCH_POLICY=m
@@ -635,7 +751,19 @@ CONFIG_NETFILTER_XT_MATCH_STRING=m
 CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
 CONFIG_NETFILTER_XT_MATCH_TIME=m
 CONFIG_NETFILTER_XT_MATCH_U32=m
-# CONFIG_IP_SET is not set
+CONFIG_IP_SET=m
+CONFIG_IP_SET_MAX=256
+CONFIG_IP_SET_BITMAP_IP=m
+CONFIG_IP_SET_BITMAP_IPMAC=m
+CONFIG_IP_SET_BITMAP_PORT=m
+CONFIG_IP_SET_HASH_IP=m
+CONFIG_IP_SET_HASH_IPPORT=m
+CONFIG_IP_SET_HASH_IPPORTIP=m
+CONFIG_IP_SET_HASH_IPPORTNET=m
+CONFIG_IP_SET_HASH_NET=m
+CONFIG_IP_SET_HASH_NETPORT=m
+CONFIG_IP_SET_HASH_NETIFACE=m
+CONFIG_IP_SET_LIST_SET=m
 CONFIG_IP_VS=m
 CONFIG_IP_VS_IPV6=y
 # CONFIG_IP_VS_DEBUG is not set
@@ -665,6 +793,11 @@ CONFIG_IP_VS_SH=m
 CONFIG_IP_VS_SED=m
 CONFIG_IP_VS_NQ=m
 
+#
+# IPVS SH scheduler
+#
+CONFIG_IP_VS_SH_TAB_BITS=8
+
 #
 # IPVS application helper
 #
@@ -675,40 +808,31 @@ CONFIG_IP_VS_PE_SIP=m
 #
 # IP: Netfilter Configuration
 #
-CONFIG_NF_DEFRAG_IPV4=m
-CONFIG_NF_CONNTRACK_IPV4=m
-CONFIG_NF_CONNTRACK_PROC_COMPAT=y
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
+CONFIG_NF_DEFRAG_IPV4=y
+CONFIG_NF_CONNTRACK_IPV4=y
+# CONFIG_NF_CONNTRACK_PROC_COMPAT is not set
+CONFIG_IP_NF_IPTABLES=y
 CONFIG_IP_NF_MATCH_AH=m
 CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_RPFILTER=m
 CONFIG_IP_NF_MATCH_TTL=m
 CONFIG_IP_NF_FILTER=m
 CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_NF_NAT=m
-CONFIG_NF_NAT_NEEDED=y
+# CONFIG_IP_NF_TARGET_ULOG is not set
+CONFIG_NF_NAT_IPV4=m
 CONFIG_IP_NF_TARGET_MASQUERADE=m
 CONFIG_IP_NF_TARGET_NETMAP=m
 CONFIG_IP_NF_TARGET_REDIRECT=m
 CONFIG_NF_NAT_SNMP_BASIC=m
-CONFIG_NF_NAT_PROTO_DCCP=m
 CONFIG_NF_NAT_PROTO_GRE=m
-CONFIG_NF_NAT_PROTO_UDPLITE=m
-CONFIG_NF_NAT_PROTO_SCTP=m
-CONFIG_NF_NAT_FTP=m
-CONFIG_NF_NAT_IRC=m
-CONFIG_NF_NAT_TFTP=m
-CONFIG_NF_NAT_AMANDA=m
 CONFIG_NF_NAT_PPTP=m
 CONFIG_NF_NAT_H323=m
-CONFIG_NF_NAT_SIP=m
 CONFIG_IP_NF_MANGLE=m
 CONFIG_IP_NF_TARGET_CLUSTERIP=m
 CONFIG_IP_NF_TARGET_ECN=m
 CONFIG_IP_NF_TARGET_TTL=m
 CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_SECURITY=m
 CONFIG_IP_NF_ARPTABLES=m
 CONFIG_IP_NF_ARPFILTER=m
 CONFIG_IP_NF_ARP_MANGLE=m
@@ -717,10 +841,9 @@ CONFIG_IP_NF_MATCH_IPP2P=m
 #
 # IPv6: Netfilter Configuration
 #
-CONFIG_NF_DEFRAG_IPV6=m
-CONFIG_NF_CONNTRACK_IPV6=m
-CONFIG_IP6_NF_QUEUE=m
-CONFIG_IP6_NF_IPTABLES=m
+CONFIG_NF_DEFRAG_IPV6=y
+CONFIG_NF_CONNTRACK_IPV6=y
+CONFIG_IP6_NF_IPTABLES=y
 CONFIG_IP6_NF_MATCH_AH=m
 CONFIG_IP6_NF_MATCH_EUI64=m
 CONFIG_IP6_NF_MATCH_FRAG=m
@@ -728,13 +851,17 @@ CONFIG_IP6_NF_MATCH_OPTS=m
 CONFIG_IP6_NF_MATCH_HL=m
 CONFIG_IP6_NF_MATCH_IPV6HEADER=m
 CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_RPFILTER=m
 CONFIG_IP6_NF_MATCH_RT=m
 CONFIG_IP6_NF_TARGET_HL=m
-CONFIG_IP6_NF_TARGET_LOG=m
 CONFIG_IP6_NF_FILTER=m
 CONFIG_IP6_NF_TARGET_REJECT=m
 CONFIG_IP6_NF_MANGLE=m
 CONFIG_IP6_NF_RAW=m
+CONFIG_IP6_NF_SECURITY=m
+CONFIG_NF_NAT_IPV6=m
+CONFIG_IP6_NF_TARGET_MASQUERADE=m
+CONFIG_IP6_NF_TARGET_NPT=m
 CONFIG_BRIDGE_NF_EBTABLES=m
 CONFIG_BRIDGE_EBT_BROUTE=m
 CONFIG_BRIDGE_EBT_T_FILTER=m
@@ -755,49 +882,52 @@ CONFIG_BRIDGE_EBT_MARK_T=m
 CONFIG_BRIDGE_EBT_REDIRECT=m
 CONFIG_BRIDGE_EBT_SNAT=m
 CONFIG_BRIDGE_EBT_LOG=m
-CONFIG_BRIDGE_EBT_ULOG=m
+# CONFIG_BRIDGE_EBT_ULOG is not set
 CONFIG_BRIDGE_EBT_NFLOG=m
 # CONFIG_IP_DCCP is not set
-# CONFIG_IP_SCTP is not set
+CONFIG_IP_SCTP=m
+# CONFIG_SCTP_DBG_MSG is not set
+# CONFIG_SCTP_DBG_OBJCNT is not set
+# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5 is not set
+CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1=y
+# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set
+CONFIG_SCTP_COOKIE_HMAC_MD5=y
+CONFIG_SCTP_COOKIE_HMAC_SHA1=y
 # CONFIG_RDS is not set
 # CONFIG_TIPC is not set
 CONFIG_ATM=m
 CONFIG_ATM_CLIP=m
-CONFIG_ATM_CLIP_NO_ICMP=y
+# CONFIG_ATM_CLIP_NO_ICMP is not set
 # CONFIG_ATM_LANE is not set
 CONFIG_ATM_BR2684=m
 # CONFIG_ATM_BR2684_IPFILTER is not set
 CONFIG_L2TP=m
+# CONFIG_L2TP_DEBUGFS is not set
 CONFIG_L2TP_V3=y
 CONFIG_L2TP_IP=m
 CONFIG_L2TP_ETH=m
-CONFIG_STP=m
-CONFIG_GARP=m
-CONFIG_BRIDGE=m
+CONFIG_STP=y
+CONFIG_GARP=y
+CONFIG_BRIDGE=y
 CONFIG_BRIDGE_IGMP_SNOOPING=y
+CONFIG_BRIDGE_VLAN_FILTERING=y
+CONFIG_HAVE_NET_DSA=y
 CONFIG_NET_DSA=y
 CONFIG_NET_DSA_TAG_DSA=y
 CONFIG_NET_DSA_TAG_EDSA=y
 CONFIG_NET_DSA_TAG_TRAILER=y
-CONFIG_NET_DSA_MV88E6XXX=y
-CONFIG_NET_DSA_MV88E6060=y
-CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y
-CONFIG_NET_DSA_MV88E6131=y
-CONFIG_NET_DSA_MV88E6123_61_65=y
 CONFIG_VLAN_8021Q=m
 CONFIG_VLAN_8021Q_GVRP=y
+# CONFIG_VLAN_8021Q_MVRP is not set
 # CONFIG_DECNET is not set
-CONFIG_LLC=m
+CONFIG_LLC=y
 # CONFIG_LLC2 is not set
 # CONFIG_IPX is not set
 # CONFIG_ATALK is not set
 # CONFIG_X25 is not set
 # CONFIG_LAPB is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
 # CONFIG_PHONET is not set
-CONFIG_IEEE802154=m
-CONFIG_IEEE802154_6LOWPAN=m
+# CONFIG_IEEE802154 is not set
 CONFIG_NET_SCHED=y
 
 #
@@ -821,7 +951,10 @@ CONFIG_NET_SCH_DRR=m
 CONFIG_NET_SCH_MQPRIO=m
 CONFIG_NET_SCH_CHOKE=m
 CONFIG_NET_SCH_QFQ=m
+CONFIG_NET_SCH_CODEL=m
+CONFIG_NET_SCH_FQ_CODEL=m
 CONFIG_NET_SCH_INGRESS=m
+CONFIG_NET_SCH_PLUG=m
 
 #
 # Classification
@@ -837,6 +970,7 @@ CONFIG_CLS_U32_MARK=y
 CONFIG_NET_CLS_RSVP=m
 CONFIG_NET_CLS_RSVP6=m
 CONFIG_NET_CLS_FLOW=m
+CONFIG_NET_CLS_CGROUP=m
 CONFIG_NET_EMATCH=y
 CONFIG_NET_EMATCH_STACK=32
 CONFIG_NET_EMATCH_CMP=m
@@ -844,6 +978,7 @@ CONFIG_NET_EMATCH_NBYTE=m
 CONFIG_NET_EMATCH_U32=m
 CONFIG_NET_EMATCH_META=m
 CONFIG_NET_EMATCH_TEXT=m
+CONFIG_NET_EMATCH_IPSET=m
 CONFIG_NET_CLS_ACT=y
 CONFIG_NET_ACT_POLICE=m
 CONFIG_NET_ACT_GACT=m
@@ -860,59 +995,27 @@ CONFIG_NET_SCH_FIFO=y
 # CONFIG_DCB is not set
 CONFIG_DNS_RESOLVER=y
 CONFIG_BATMAN_ADV=m
+CONFIG_BATMAN_ADV_BLA=y
+CONFIG_BATMAN_ADV_DAT=y
+CONFIG_BATMAN_ADV_NC=y
 # CONFIG_BATMAN_ADV_DEBUG is not set
+CONFIG_OPENVSWITCH=m
+CONFIG_VSOCKETS=m
+CONFIG_NETLINK_MMAP=y
+CONFIG_NETLINK_DIAG=m
+CONFIG_NETPRIO_CGROUP=m
+CONFIG_BQL=y
+CONFIG_BPF_JIT=y
 
 #
 # Network testing
 #
 # CONFIG_NET_PKTGEN is not set
+# CONFIG_NET_DROP_MONITOR is not set
 # CONFIG_HAMRADIO is not set
 # CONFIG_CAN is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-CONFIG_IRTTY_SIR=m
-
-#
-# Dongle support
-#
-# CONFIG_DONGLE is not set
-CONFIG_KINGSUN_DONGLE=m
-CONFIG_KSDAZZLE_DONGLE=m
-CONFIG_KS959_DONGLE=m
-
-#
-# FIR device drivers
-#
-CONFIG_USB_IRDA=m
-CONFIG_SIGMATEL_FIR=m
-# CONFIG_TOSHIBA_FIR is not set
-CONFIG_VLSI_FIR=m
-CONFIG_MCS_FIR=m
+# CONFIG_IRDA is not set
 CONFIG_BT=m
-CONFIG_BT_L2CAP=y
-CONFIG_BT_SCO=y
 CONFIG_BT_RFCOMM=m
 CONFIG_BT_RFCOMM_TTY=y
 CONFIG_BT_BNEP=m
@@ -931,21 +1034,16 @@ CONFIG_BT_HCIUART_H4=y
 CONFIG_BT_HCIUART_BCSP=y
 CONFIG_BT_HCIUART_ATH3K=y
 CONFIG_BT_HCIUART_LL=y
+CONFIG_BT_HCIUART_3WIRE=y
 CONFIG_BT_HCIBCM203X=m
 CONFIG_BT_HCIBPA10X=m
 CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=m
 CONFIG_BT_HCIVHCI=m
 CONFIG_BT_MRVL=m
 CONFIG_BT_MRVL_SDIO=m
 CONFIG_BT_ATH3K=m
 CONFIG_BT_WILINK=m
-CONFIG_AF_RXRPC=m
-# CONFIG_AF_RXRPC_DEBUG is not set
-CONFIG_RXKAD=m
+# CONFIG_AF_RXRPC is not set
 CONFIG_FIB_RULES=y
 CONFIG_WIRELESS=y
 CONFIG_WIRELESS_EXT=y
@@ -957,10 +1055,11 @@ CONFIG_CFG80211=m
 # CONFIG_NL80211_TESTMODE is not set
 # CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
 # CONFIG_CFG80211_REG_DEBUG is not set
-# CONFIG_CFG80211_DEFAULT_PS is not set
+# CONFIG_CFG80211_CERTIFICATION_ONUS is not set
+CONFIG_CFG80211_DEFAULT_PS=y
+# CONFIG_CFG80211_DEBUGFS is not set
 # CONFIG_CFG80211_INTERNAL_REGDB is not set
 CONFIG_CFG80211_WEXT=y
-CONFIG_WIRELESS_EXT_SYSFS=y
 CONFIG_LIB80211=m
 CONFIG_LIB80211_CRYPT_WEP=m
 CONFIG_LIB80211_CRYPT_CCMP=m
@@ -968,24 +1067,27 @@ CONFIG_LIB80211_CRYPT_TKIP=m
 # CONFIG_LIB80211_DEBUG is not set
 CONFIG_MAC80211=m
 CONFIG_MAC80211_HAS_RC=y
+# CONFIG_MAC80211_RC_PID is not set
 CONFIG_MAC80211_RC_MINSTREL=y
 CONFIG_MAC80211_RC_MINSTREL_HT=y
 CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
 CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
 CONFIG_MAC80211_MESH=y
 CONFIG_MAC80211_LEDS=y
+# CONFIG_MAC80211_DEBUGFS is not set
+# CONFIG_MAC80211_MESSAGE_TRACING is not set
 # CONFIG_MAC80211_DEBUG_MENU is not set
 # CONFIG_WIMAX is not set
 CONFIG_RFKILL=m
 CONFIG_RFKILL_LEDS=y
 CONFIG_RFKILL_INPUT=y
 CONFIG_RFKILL_REGULATOR=m
+# CONFIG_RFKILL_GPIO is not set
 # CONFIG_NET_9P is not set
 # CONFIG_CAIF is not set
-CONFIG_CEPH_LIB=m
-# CONFIG_CEPH_LIB_PRETTYDEBUG is not set
-# CONFIG_CEPH_LIB_USE_DNS_RESOLVER is not set
+# CONFIG_CEPH_LIB is not set
 # CONFIG_NFC is not set
+CONFIG_HAVE_BPF_JIT=y
 
 #
 # Device Drivers
@@ -994,39 +1096,51 @@ CONFIG_CEPH_LIB=m
 #
 # Generic Driver Options
 #
-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
-# CONFIG_DEVTMPFS is not set
-# CONFIG_STANDALONE is not set
-# CONFIG_PREVENT_FIRMWARE_BUILD is not set
+CONFIG_UEVENT_HELPER_PATH=""
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
 CONFIG_FW_LOADER=y
 # CONFIG_FIRMWARE_IN_KERNEL is not set
 CONFIG_EXTRA_FIRMWARE=""
+CONFIG_FW_LOADER_USER_HELPER=y
 # CONFIG_DEBUG_DRIVER is not set
 # CONFIG_DEBUG_DEVRES is not set
 # CONFIG_SYS_HYPERVISOR is not set
+# CONFIG_GENERIC_CPU_DEVICES is not set
 CONFIG_REGMAP=y
-CONFIG_REGMAP_I2C=m
-CONFIG_CONNECTOR=m
-CONFIG_MTD=m
-CONFIG_MTD_TESTS=m
+CONFIG_REGMAP_I2C=y
+CONFIG_REGMAP_IRQ=y
+CONFIG_DMA_SHARED_BUFFER=y
+# CONFIG_CMA is not set
+
+#
+# Bus devices
+#
+CONFIG_MVEBU_MBUS=y
+CONFIG_CONNECTOR=y
+CONFIG_PROC_EVENTS=y
+CONFIG_MTD=y
+# CONFIG_MTD_TESTS is not set
 # CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
 # CONFIG_MTD_AFS_PARTS is not set
-CONFIG_MTD_OF_PARTS=m
-CONFIG_MTD_AR7_PARTS=m
+CONFIG_MTD_OF_PARTS=y
+# CONFIG_MTD_AR7_PARTS is not set
 
 #
 # User Modules And Translation Layers
 #
-CONFIG_MTD_CHAR=m
-CONFIG_MTD_BLKDEVS=m
-CONFIG_MTD_BLOCK=m
+# CONFIG_MTD_BLKDEVS is not set
+# CONFIG_MTD_BLOCK is not set
 # CONFIG_MTD_BLOCK_RO is not set
 # CONFIG_FTL is not set
 # CONFIG_NFTL is not set
 # CONFIG_INFTL is not set
 # CONFIG_RFD_FTL is not set
 # CONFIG_SSFDC is not set
-CONFIG_SM_FTL=m
+# CONFIG_SM_FTL is not set
 # CONFIG_MTD_OOPS is not set
 # CONFIG_MTD_SWAP is not set
 
@@ -1053,8 +1167,6 @@ CONFIG_MTD_CFI_I2=y
 # Mapping drivers for chip access
 #
 # CONFIG_MTD_COMPLEX_MAPPINGS is not set
-CONFIG_MTD_PHYSMAP=m
-# CONFIG_MTD_PHYSMAP_COMPAT is not set
 # CONFIG_MTD_INTEL_VR_NOR is not set
 # CONFIG_MTD_PLATRAM is not set
 
@@ -1070,39 +1182,34 @@ CONFIG_MTD_PHYSMAP=m
 #
 # Disk-On-Chip Device Drivers
 #
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
 # CONFIG_MTD_DOCG3 is not set
-CONFIG_MTD_NAND_ECC=m
+CONFIG_MTD_NAND_ECC=y
 # CONFIG_MTD_NAND_ECC_SMC is not set
-CONFIG_MTD_NAND=m
-# CONFIG_MTD_NAND_VERIFY_WRITE is not set
+CONFIG_MTD_NAND=y
 # CONFIG_MTD_NAND_ECC_BCH is not set
 # CONFIG_MTD_SM_COMMON is not set
-# CONFIG_MTD_NAND_MUSEUM_IDS is not set
 # CONFIG_MTD_NAND_DENALI is not set
 # CONFIG_MTD_NAND_GPIO is not set
-CONFIG_MTD_NAND_IDS=m
+CONFIG_MTD_NAND_IDS=y
 # CONFIG_MTD_NAND_RICOH is not set
 # CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_DOCG4 is not set
 # CONFIG_MTD_NAND_CAFE is not set
 # CONFIG_MTD_NAND_NANDSIM is not set
-CONFIG_MTD_NAND_PLATFORM=m
+# CONFIG_MTD_NAND_PLATFORM is not set
 # CONFIG_MTD_ALAUDA is not set
-CONFIG_MTD_NAND_ORION=m
+CONFIG_MTD_NAND_ORION=y
 # CONFIG_MTD_ONENAND is not set
 
 #
 # LPDDR flash memory drivers
 #
-CONFIG_MTD_LPDDR=m
-CONFIG_MTD_QINFO_PROBE=m
-CONFIG_MTD_UBI=m
+# CONFIG_MTD_LPDDR is not set
+CONFIG_MTD_UBI=y
 CONFIG_MTD_UBI_WL_THRESHOLD=4096
-CONFIG_MTD_UBI_BEB_RESERVE=1
+CONFIG_MTD_UBI_BEB_LIMIT=20
+# CONFIG_MTD_UBI_FASTMAP is not set
 # CONFIG_MTD_UBI_GLUEBI is not set
-# CONFIG_MTD_UBI_DEBUG is not set
 CONFIG_DTC=y
 CONFIG_OF=y
 
@@ -1110,71 +1217,84 @@ CONFIG_OF=y
 # Device Tree and Open Firmware support
 #
 CONFIG_PROC_DEVICETREE=y
+# CONFIG_OF_SELFTEST is not set
 CONFIG_OF_FLATTREE=y
 CONFIG_OF_EARLY_FLATTREE=y
 CONFIG_OF_ADDRESS=y
 CONFIG_OF_IRQ=y
 CONFIG_OF_DEVICE=y
-CONFIG_OF_GPIO=y
 CONFIG_OF_I2C=y
 CONFIG_OF_NET=y
 CONFIG_OF_MDIO=y
 CONFIG_OF_PCI=y
 CONFIG_OF_PCI_IRQ=y
+CONFIG_OF_MTD=y
 CONFIG_PARPORT=m
-# CONFIG_PARPORT_PC is not set
+CONFIG_PARPORT_PC=m
+CONFIG_PARPORT_SERIAL=m
+# CONFIG_PARPORT_PC_FIFO is not set
+# CONFIG_PARPORT_PC_SUPERIO is not set
 # CONFIG_PARPORT_GSC is not set
-CONFIG_PARPORT_AX88796=m
+# CONFIG_PARPORT_AX88796 is not set
 CONFIG_PARPORT_1284=y
 CONFIG_PARPORT_NOT_PC=y
 CONFIG_BLK_DEV=y
-CONFIG_BLK_CPQ_DA=m
+# CONFIG_PARIDE is not set
+# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set
 CONFIG_BLK_CPQ_CISS_DA=m
 # CONFIG_CISS_SCSI_TAPE is not set
 CONFIG_BLK_DEV_DAC960=m
-# CONFIG_BLK_DEV_UMEM is not set
+CONFIG_BLK_DEV_UMEM=m
 # CONFIG_BLK_DEV_COW_COMMON is not set
 CONFIG_BLK_DEV_LOOP=y
 CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
 CONFIG_BLK_DEV_CRYPTOLOOP=m
 # CONFIG_BLK_DEV_DRBD is not set
-CONFIG_BLK_DEV_NBD=m
-CONFIG_BLK_DEV_OSD=m
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_NVME=m
+# CONFIG_BLK_DEV_OSD is not set
 CONFIG_BLK_DEV_SX8=m
-# CONFIG_BLK_DEV_UB is not set
 CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=8
+CONFIG_BLK_DEV_RAM_COUNT=16
 CONFIG_BLK_DEV_RAM_SIZE=16384
 # CONFIG_BLK_DEV_XIP is not set
 # CONFIG_CDROM_PKTCDVD is not set
-CONFIG_ATA_OVER_ETH=m
-CONFIG_MG_DISK=m
-CONFIG_MG_DISK_RES=0
-CONFIG_BLK_DEV_RBD=m
-CONFIG_SENSORS_LIS3LV02D=m
-CONFIG_MISC_DEVICES=y
+# CONFIG_ATA_OVER_ETH is not set
+# CONFIG_MG_DISK is not set
+# CONFIG_BLK_DEV_RBD is not set
+CONFIG_BLK_DEV_RSXX=m
+
+#
+# Misc devices
+#
+# CONFIG_SENSORS_LIS3LV02D is not set
 # CONFIG_AD525X_DPOT is not set
+# CONFIG_ATMEL_PWM is not set
+CONFIG_DUMMY_IRQ=m
 # CONFIG_PHANTOM is not set
 # CONFIG_INTEL_MID_PTI is not set
 # CONFIG_SGI_IOC4 is not set
 CONFIG_TIFM_CORE=m
 CONFIG_TIFM_7XX1=m
 CONFIG_ICS932S401=m
+# CONFIG_ATMEL_SSC is not set
 CONFIG_ENCLOSURE_SERVICES=m
 CONFIG_HP_ILO=m
-CONFIG_APDS9802ALS=m
-CONFIG_ISL29003=m
-CONFIG_ISL29020=m
-CONFIG_SENSORS_TSL2550=m
-CONFIG_SENSORS_BH1780=m
-CONFIG_SENSORS_BH1770=m
-CONFIG_SENSORS_APDS990X=m
-CONFIG_HMC6352=m
+# CONFIG_APDS9802ALS is not set
+# CONFIG_ISL29003 is not set
+# CONFIG_ISL29020 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_SENSORS_BH1780 is not set
+# CONFIG_SENSORS_BH1770 is not set
+# CONFIG_SENSORS_APDS990X is not set
+# CONFIG_HMC6352 is not set
 CONFIG_DS1682=m
-CONFIG_BMP085=m
+CONFIG_BMP085=y
+CONFIG_BMP085_I2C=m
 CONFIG_PCH_PHUB=m
 CONFIG_USB_SWITCH_FSA9480=m
-CONFIG_C2PORT=m
+# CONFIG_SRAM is not set
+# CONFIG_C2PORT is not set
 
 #
 # EEPROM support
@@ -1186,62 +1306,60 @@ CONFIG_EEPROM_93CX6=m
 CONFIG_CB710_CORE=m
 # CONFIG_CB710_DEBUG is not set
 CONFIG_CB710_DEBUG_ASSUMPTIONS=y
-CONFIG_IWMC3200TOP=m
-# CONFIG_IWMC3200TOP_DEBUG is not set
-# CONFIG_IWMC3200TOP_DEBUGFS is not set
 
 #
 # Texas Instruments shared transport line discipline
 #
 CONFIG_TI_ST=m
-CONFIG_SENSORS_LIS3_I2C=m
+# CONFIG_SENSORS_LIS3_I2C is not set
 
 #
 # Altera FPGA firmware download module
 #
-# CONFIG_ALTERA_STAPL is not set
+CONFIG_ALTERA_STAPL=m
 CONFIG_HAVE_IDE=y
 # CONFIG_IDE is not set
 
 #
 # SCSI device support
 #
-CONFIG_SCSI_MOD=m
+CONFIG_SCSI_MOD=y
 CONFIG_RAID_ATTRS=m
-CONFIG_SCSI=m
+CONFIG_SCSI=y
 CONFIG_SCSI_DMA=y
-# CONFIG_SCSI_TGT is not set
+CONFIG_SCSI_TGT=m
 CONFIG_SCSI_NETLINK=y
 CONFIG_SCSI_PROC_FS=y
 
 #
 # SCSI support type (disk, tape, CD-ROM)
 #
-CONFIG_BLK_DEV_SD=m
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-CONFIG_BLK_DEV_SR=m
+CONFIG_BLK_DEV_SD=y
+CONFIG_CHR_DEV_ST=m
+CONFIG_CHR_DEV_OSST=m
+CONFIG_BLK_DEV_SR=y
 CONFIG_BLK_DEV_SR_VENDOR=y
-CONFIG_CHR_DEV_SG=m
+CONFIG_CHR_DEV_SG=y
 CONFIG_CHR_DEV_SCH=m
 CONFIG_SCSI_ENCLOSURE=m
 CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-CONFIG_SCSI_WAIT_SCAN=m
+CONFIG_SCSI_CONSTANTS=y
+CONFIG_SCSI_LOGGING=y
+CONFIG_SCSI_SCAN_ASYNC=y
 
 #
 # SCSI Transports
 #
 CONFIG_SCSI_SPI_ATTRS=m
 CONFIG_SCSI_FC_ATTRS=m
+CONFIG_SCSI_FC_TGT_ATTRS=y
 CONFIG_SCSI_ISCSI_ATTRS=m
 CONFIG_SCSI_SAS_ATTRS=m
 CONFIG_SCSI_SAS_LIBSAS=m
 CONFIG_SCSI_SAS_ATA=y
 CONFIG_SCSI_SAS_HOST_SMP=y
 CONFIG_SCSI_SRP_ATTRS=m
+CONFIG_SCSI_SRP_TGT_ATTRS=y
 CONFIG_SCSI_LOWLEVEL=y
 CONFIG_ISCSI_TCP=m
 CONFIG_ISCSI_BOOT_SYSFS=m
@@ -1257,28 +1375,24 @@ CONFIG_SCSI_3W_SAS=m
 # CONFIG_SCSI_ACARD is not set
 CONFIG_SCSI_AACRAID=m
 CONFIG_SCSI_AIC7XXX=m
-CONFIG_AIC7XXX_CMDS_PER_DEVICE=253
-CONFIG_AIC7XXX_RESET_DELAY_MS=15000
-# CONFIG_AIC7XXX_BUILD_FIRMWARE is not set
-# CONFIG_AIC7XXX_DEBUG_ENABLE is not set
+CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
+CONFIG_AIC7XXX_RESET_DELAY_MS=5000
+CONFIG_AIC7XXX_DEBUG_ENABLE=y
 CONFIG_AIC7XXX_DEBUG_MASK=0
-# CONFIG_AIC7XXX_REG_PRETTY_PRINT is not set
+CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
 # CONFIG_SCSI_AIC7XXX_OLD is not set
 CONFIG_SCSI_AIC79XX=m
 CONFIG_AIC79XX_CMDS_PER_DEVICE=32
-CONFIG_AIC79XX_RESET_DELAY_MS=15000
-# CONFIG_AIC79XX_BUILD_FIRMWARE is not set
+CONFIG_AIC79XX_RESET_DELAY_MS=4000
 # CONFIG_AIC79XX_DEBUG_ENABLE is not set
 CONFIG_AIC79XX_DEBUG_MASK=0
 # CONFIG_AIC79XX_REG_PRETTY_PRINT is not set
 CONFIG_SCSI_AIC94XX=m
 # CONFIG_AIC94XX_DEBUG is not set
 CONFIG_SCSI_MVSAS=m
-CONFIG_SCSI_MVSAS_DEBUG=y
-# CONFIG_SCSI_MVSAS_TASKLET is not set
-CONFIG_SCSI_MVUMI=m
-CONFIG_SCSI_DPT_I2O=m
-# CONFIG_SCSI_ADVANSYS is not set
+# CONFIG_SCSI_MVSAS_DEBUG is not set
+CONFIG_SCSI_MVSAS_TASKLET=y
+# CONFIG_SCSI_MVUMI is not set
 CONFIG_SCSI_ARCMSR=m
 CONFIG_MEGARAID_NEWGEN=y
 CONFIG_MEGARAID_MM=m
@@ -1288,6 +1402,12 @@ CONFIG_MEGARAID_SAS=m
 CONFIG_SCSI_MPT2SAS=m
 CONFIG_SCSI_MPT2SAS_MAX_SGE=128
 # CONFIG_SCSI_MPT2SAS_LOGGING is not set
+CONFIG_SCSI_MPT3SAS=m
+CONFIG_SCSI_MPT3SAS_MAX_SGE=128
+# CONFIG_SCSI_MPT3SAS_LOGGING is not set
+CONFIG_SCSI_UFSHCD=m
+CONFIG_SCSI_UFSHCD_PCI=m
+CONFIG_SCSI_UFSHCD_PLATFORM=m
 CONFIG_SCSI_HPTIOP=m
 CONFIG_LIBFC=m
 CONFIG_LIBFCOE=m
@@ -1297,6 +1417,10 @@ CONFIG_SCSI_FUTURE_DOMAIN=m
 CONFIG_SCSI_IPS=m
 CONFIG_SCSI_INITIO=m
 CONFIG_SCSI_INIA100=m
+CONFIG_SCSI_PPA=m
+CONFIG_SCSI_IMM=m
+# CONFIG_SCSI_IZIP_EPP16 is not set
+# CONFIG_SCSI_IZIP_SLOW_CTR is not set
 CONFIG_SCSI_STEX=m
 CONFIG_SCSI_SYM53C8XX_2=m
 CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
@@ -1310,6 +1434,7 @@ CONFIG_SCSI_QLOGIC_1280=m
 CONFIG_SCSI_QLA_FC=m
 CONFIG_SCSI_QLA_ISCSI=m
 CONFIG_SCSI_LPFC=m
+# CONFIG_SCSI_LPFC_DEBUG_FS is not set
 CONFIG_SCSI_DC395x=m
 CONFIG_SCSI_DC390T=m
 # CONFIG_SCSI_NSP32 is not set
@@ -1318,13 +1443,8 @@ CONFIG_SCSI_PMCRAID=m
 CONFIG_SCSI_PM8001=m
 # CONFIG_SCSI_SRP is not set
 CONFIG_SCSI_BFA_FC=m
-CONFIG_SCSI_LOWLEVEL_PCMCIA=y
-CONFIG_PCMCIA_AHA152X=m
-CONFIG_PCMCIA_FDOMAIN=m
-CONFIG_PCMCIA_NINJA_SCSI=m
-CONFIG_PCMCIA_QLOGIC=m
-CONFIG_PCMCIA_SYM53C500=m
-CONFIG_SCSI_DH=m
+CONFIG_SCSI_CHELSIO_FCOE=m
+CONFIG_SCSI_DH=y
 CONFIG_SCSI_DH_RDAC=m
 CONFIG_SCSI_DH_HP_SW=m
 CONFIG_SCSI_DH_EMC=m
@@ -1333,7 +1453,7 @@ CONFIG_SCSI_OSD_INITIATOR=m
 CONFIG_SCSI_OSD_ULD=m
 CONFIG_SCSI_OSD_DPRINT_SENSE=1
 # CONFIG_SCSI_OSD_DEBUG is not set
-CONFIG_ATA=m
+CONFIG_ATA=y
 # CONFIG_ATA_NONSTANDARD is not set
 CONFIG_ATA_VERBOSE_ERROR=y
 CONFIG_SATA_PMP=y
@@ -1341,7 +1461,7 @@ CONFIG_SATA_PMP=y
 #
 # Controllers with non-SFF native interface
 #
-CONFIG_SATA_AHCI=m
+CONFIG_SATA_AHCI=y
 CONFIG_SATA_AHCI_PLATFORM=m
 CONFIG_SATA_INIC162X=m
 CONFIG_SATA_ACARD_AHCI=m
@@ -1359,7 +1479,8 @@ CONFIG_ATA_BMDMA=y
 #
 # SATA SFF controllers with BMDMA
 #
-CONFIG_ATA_PIIX=m
+CONFIG_ATA_PIIX=y
+CONFIG_SATA_HIGHBANK=m
 CONFIG_SATA_MV=m
 CONFIG_SATA_NV=m
 CONFIG_SATA_PROMISE=m
@@ -1389,7 +1510,7 @@ CONFIG_PATA_HPT366=m
 CONFIG_PATA_HPT37X=m
 CONFIG_PATA_HPT3X2N=m
 CONFIG_PATA_HPT3X3=m
-CONFIG_PATA_HPT3X3_DMA=y
+# CONFIG_PATA_HPT3X3_DMA is not set
 CONFIG_PATA_IT8213=m
 CONFIG_PATA_IT821X=m
 CONFIG_PATA_JMICRON=m
@@ -1401,9 +1522,9 @@ CONFIG_PATA_OLDPIIX=m
 CONFIG_PATA_OPTIDMA=m
 CONFIG_PATA_PDC2027X=m
 CONFIG_PATA_PDC_OLD=m
-CONFIG_PATA_RADISYS=m
+# CONFIG_PATA_RADISYS is not set
 CONFIG_PATA_RDC=m
-CONFIG_PATA_SC1200=m
+# CONFIG_PATA_SC1200 is not set
 CONFIG_PATA_SCH=m
 CONFIG_PATA_SERVERWORKS=m
 CONFIG_PATA_SIL680=m
@@ -1420,82 +1541,97 @@ CONFIG_PATA_CMD640_PCI=m
 CONFIG_PATA_MPIIX=m
 CONFIG_PATA_NS87410=m
 CONFIG_PATA_OPTI=m
-CONFIG_PATA_PCMCIA=m
+# CONFIG_PATA_PLATFORM is not set
 CONFIG_PATA_RZ1000=m
 
 #
 # Generic fallback / legacy drivers
 #
 CONFIG_ATA_GENERIC=m
-CONFIG_PATA_LEGACY=m
+# CONFIG_PATA_LEGACY is not set
 CONFIG_MD=y
-CONFIG_BLK_DEV_MD=m
+CONFIG_BLK_DEV_MD=y
+CONFIG_MD_AUTODETECT=y
 CONFIG_MD_LINEAR=m
 CONFIG_MD_RAID0=m
 CONFIG_MD_RAID1=m
 CONFIG_MD_RAID10=m
 CONFIG_MD_RAID456=m
 CONFIG_MD_MULTIPATH=m
-# CONFIG_MD_FAULTY is not set
-CONFIG_BLK_DEV_DM=m
+CONFIG_MD_FAULTY=m
+CONFIG_BCACHE=m
+# CONFIG_BCACHE_DEBUG is not set
+# CONFIG_BCACHE_EDEBUG is not set
+# CONFIG_BCACHE_CLOSURES_DEBUG is not set
+CONFIG_BLK_DEV_DM=y
 # CONFIG_DM_DEBUG is not set
 CONFIG_DM_BUFIO=m
+CONFIG_DM_BIO_PRISON=m
 CONFIG_DM_PERSISTENT_DATA=m
 CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_THIN_PROVISIONING=m
-# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
-# CONFIG_DM_DEBUG_SPACE_MAPS is not set
-CONFIG_DM_MIRROR=m
+CONFIG_DM_SNAPSHOT=y
+# CONFIG_DM_THIN_PROVISIONING is not set
+CONFIG_DM_CACHE=m
+CONFIG_DM_CACHE_MQ=m
+CONFIG_DM_CACHE_CLEANER=m
+CONFIG_DM_MIRROR=y
 CONFIG_DM_RAID=m
 CONFIG_DM_LOG_USERSPACE=m
-CONFIG_DM_ZERO=m
+CONFIG_DM_ZERO=y
 CONFIG_DM_MULTIPATH=m
 CONFIG_DM_MULTIPATH_QL=m
 CONFIG_DM_MULTIPATH_ST=m
-CONFIG_DM_DELAY=m
+# CONFIG_DM_DELAY is not set
 CONFIG_DM_UEVENT=y
-CONFIG_DM_FLAKEY=m
+# CONFIG_DM_FLAKEY is not set
+CONFIG_DM_VERITY=m
 # CONFIG_TARGET_CORE is not set
 CONFIG_FUSION=y
 CONFIG_FUSION_SPI=m
 CONFIG_FUSION_FC=m
 CONFIG_FUSION_SAS=m
-CONFIG_FUSION_MAX_SGE=128
+CONFIG_FUSION_MAX_SGE=40
 CONFIG_FUSION_CTL=m
-# CONFIG_FUSION_LOGGING is not set
+CONFIG_FUSION_LOGGING=y
 
 #
 # IEEE 1394 (FireWire) support
 #
 CONFIG_FIREWIRE=m
 CONFIG_FIREWIRE_OHCI=m
-CONFIG_FIREWIRE_OHCI_DEBUG=y
 CONFIG_FIREWIRE_SBP2=m
-CONFIG_FIREWIRE_NET=m
+# CONFIG_FIREWIRE_NET is not set
 # CONFIG_FIREWIRE_NOSY is not set
-# CONFIG_I2O is not set
+CONFIG_I2O=m
+# CONFIG_I2O_LCT_NOTIFY_ON_CHANGES is not set
+CONFIG_I2O_EXT_ADAPTEC=y
+CONFIG_I2O_BUS=m
+CONFIG_I2O_BLOCK=m
+CONFIG_I2O_SCSI=m
+CONFIG_I2O_PROC=m
 CONFIG_NETDEVICES=y
 CONFIG_NET_CORE=y
 CONFIG_BONDING=m
 CONFIG_DUMMY=m
-CONFIG_EQUALIZER=m
+# CONFIG_EQUALIZER is not set
+# CONFIG_NET_FC is not set
+CONFIG_MII=m
+CONFIG_IFB=m
+# CONFIG_NET_TEAM is not set
+CONFIG_MACVLAN=m
+CONFIG_MACVTAP=m
+CONFIG_VXLAN=m
+CONFIG_NETCONSOLE=m
+CONFIG_NETCONSOLE_DYNAMIC=y
+CONFIG_NETPOLL=y
+CONFIG_NETPOLL_TRAP=y
+CONFIG_NET_POLL_CONTROLLER=y
 CONFIG_IMQ=m
 # CONFIG_IMQ_BEHAVIOR_AA is not set
 CONFIG_IMQ_BEHAVIOR_AB=y
 # CONFIG_IMQ_BEHAVIOR_BA is not set
 # CONFIG_IMQ_BEHAVIOR_BB is not set
 CONFIG_IMQ_NUM_DEVS=2
-# CONFIG_NET_FC is not set
-CONFIG_MII=m
-CONFIG_IEEE802154_DRIVERS=m
-CONFIG_IEEE802154_FAKEHARD=m
-CONFIG_IFB=m
-CONFIG_MACVLAN=m
-CONFIG_MACVTAP=m
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
 CONFIG_TUN=m
 CONFIG_VETH=m
 # CONFIG_ARCNET is not set
@@ -1504,47 +1640,35 @@ CONFIG_ATM_DRIVERS=y
 CONFIG_ATM_TCP=m
 CONFIG_ATM_LANAI=m
 CONFIG_ATM_ENI=m
-CONFIG_ATM_ENI_DEBUG=y
-CONFIG_ATM_ENI_TUNE_BURST=y
-CONFIG_ATM_ENI_BURST_TX_16W=y
-CONFIG_ATM_ENI_BURST_TX_8W=y
-CONFIG_ATM_ENI_BURST_TX_4W=y
-CONFIG_ATM_ENI_BURST_TX_2W=y
-CONFIG_ATM_ENI_BURST_RX_16W=y
-CONFIG_ATM_ENI_BURST_RX_8W=y
-CONFIG_ATM_ENI_BURST_RX_4W=y
-CONFIG_ATM_ENI_BURST_RX_2W=y
-CONFIG_ATM_FIRESTREAM=m
-CONFIG_ATM_ZATM=m
-# CONFIG_ATM_ZATM_DEBUG is not set
+# CONFIG_ATM_ENI_DEBUG is not set
+# CONFIG_ATM_ENI_TUNE_BURST is not set
 CONFIG_ATM_NICSTAR=m
-CONFIG_ATM_NICSTAR_USE_SUNI=y
-CONFIG_ATM_NICSTAR_USE_IDT77105=y
+# CONFIG_ATM_NICSTAR_USE_SUNI is not set
+# CONFIG_ATM_NICSTAR_USE_IDT77105 is not set
 CONFIG_ATM_IDT77252=m
 # CONFIG_ATM_IDT77252_DEBUG is not set
 # CONFIG_ATM_IDT77252_RCV_ALL is not set
 CONFIG_ATM_IDT77252_USE_SUNI=y
-CONFIG_ATM_AMBASSADOR=m
-# CONFIG_ATM_AMBASSADOR_DEBUG is not set
-CONFIG_ATM_HORIZON=m
-# CONFIG_ATM_HORIZON_DEBUG is not set
-CONFIG_ATM_IA=m
-# CONFIG_ATM_IA_DEBUG is not set
-CONFIG_ATM_FORE200E=m
-CONFIG_ATM_FORE200E_USE_TASKLET=y
-CONFIG_ATM_FORE200E_TX_RETRY=16
-CONFIG_ATM_FORE200E_DEBUG=0
+# CONFIG_ATM_IA is not set
+# CONFIG_ATM_FORE200E is not set
 # CONFIG_ATM_HE is not set
 CONFIG_ATM_SOLOS=m
 
 #
 # CAIF transport drivers
 #
+
+#
+# Distributed Switch Architecture drivers
+#
+CONFIG_NET_DSA_MV88E6XXX=y
+CONFIG_NET_DSA_MV88E6060=y
+CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y
+CONFIG_NET_DSA_MV88E6131=y
+CONFIG_NET_DSA_MV88E6123_61_65=y
 CONFIG_ETHERNET=y
 CONFIG_MDIO=m
 CONFIG_NET_VENDOR_3COM=y
-CONFIG_PCMCIA_3C574=m
-CONFIG_PCMCIA_3C589=m
 CONFIG_VORTEX=m
 CONFIG_TYPHOON=m
 CONFIG_NET_VENDOR_ADAPTEC=y
@@ -1555,12 +1679,15 @@ CONFIG_ACENIC=m
 CONFIG_NET_VENDOR_AMD=y
 CONFIG_AMD8111_ETH=m
 CONFIG_PCNET32=m
-CONFIG_PCMCIA_NMCLAN=m
 CONFIG_NET_VENDOR_ATHEROS=y
 CONFIG_ATL2=m
 CONFIG_ATL1=m
 CONFIG_ATL1E=m
 CONFIG_ATL1C=m
+CONFIG_ALX=m
+CONFIG_NET_CADENCE=y
+CONFIG_ARM_AT91_ETHER=m
+CONFIG_MACB=m
 CONFIG_NET_VENDOR_BROADCOM=y
 CONFIG_B44=m
 CONFIG_B44_PCI_AUTOSELECT=y
@@ -1570,14 +1697,19 @@ CONFIG_BNX2=m
 CONFIG_CNIC=m
 CONFIG_TIGON3=m
 CONFIG_BNX2X=m
+CONFIG_BNX2X_SRIOV=y
 CONFIG_NET_VENDOR_BROCADE=y
 CONFIG_BNA=m
+CONFIG_NET_CALXEDA_XGMAC=m
 CONFIG_NET_VENDOR_CHELSIO=y
 CONFIG_CHELSIO_T1=m
 CONFIG_CHELSIO_T1_1G=y
 CONFIG_CHELSIO_T3=m
 CONFIG_CHELSIO_T4=m
 CONFIG_CHELSIO_T4VF=m
+CONFIG_NET_VENDOR_CIRRUS=y
+CONFIG_CS89x0=m
+CONFIG_CS89x0_PLATFORM=y
 CONFIG_NET_VENDOR_CISCO=y
 CONFIG_ENIC=m
 CONFIG_DM9000=m
@@ -1589,16 +1721,14 @@ CONFIG_DE2104X=m
 CONFIG_DE2104X_DSL=0
 CONFIG_TULIP=m
 # CONFIG_TULIP_MWI is not set
-# CONFIG_TULIP_MMIO is not set
-# CONFIG_TULIP_NAPI is not set
-CONFIG_DE4X5=m
+CONFIG_TULIP_MMIO=y
+CONFIG_TULIP_NAPI=y
+CONFIG_TULIP_NAPI_HW_MITIGATION=y
 CONFIG_WINBOND_840=m
 CONFIG_DM9102=m
 CONFIG_ULI526X=m
 CONFIG_PCMCIA_XIRCOM=m
 CONFIG_NET_VENDOR_DLINK=y
-CONFIG_DE600=m
-CONFIG_DE620=m
 CONFIG_DL2K=m
 CONFIG_SUNDANCE=m
 # CONFIG_SUNDANCE_MMIO is not set
@@ -1611,8 +1741,6 @@ CONFIG_VXGE=m
 CONFIG_NET_VENDOR_FARADAY=y
 # CONFIG_FTMAC100 is not set
 # CONFIG_FTGMAC100 is not set
-CONFIG_NET_VENDOR_FUJITSU=y
-CONFIG_PCMCIA_FMVJ18X=m
 CONFIG_NET_VENDOR_HP=y
 CONFIG_HP100=m
 CONFIG_NET_VENDOR_INTEL=y
@@ -1620,24 +1748,28 @@ CONFIG_E100=m
 CONFIG_E1000=m
 CONFIG_E1000E=m
 CONFIG_IGB=m
+CONFIG_IGB_HWMON=y
 CONFIG_IGBVF=m
 CONFIG_IXGB=m
 CONFIG_IXGBE=m
+CONFIG_IXGBE_HWMON=y
 CONFIG_NET_VENDOR_I825XX=y
 CONFIG_IP1000=m
 CONFIG_JME=m
 CONFIG_NET_VENDOR_MARVELL=y
 CONFIG_MV643XX_ETH=m
+CONFIG_MVMDIO=m
 CONFIG_SKGE=m
+# CONFIG_SKGE_DEBUG is not set
 CONFIG_SKGE_GENESIS=y
 CONFIG_SKY2=m
+# CONFIG_SKY2_DEBUG is not set
 CONFIG_NET_VENDOR_MELLANOX=y
-CONFIG_MLX4_EN=m
-CONFIG_MLX4_CORE=m
-CONFIG_MLX4_DEBUG=y
+# CONFIG_MLX4_EN is not set
+# CONFIG_MLX4_CORE is not set
 CONFIG_NET_VENDOR_MICREL=y
-CONFIG_KS8842=m
-CONFIG_KS8851_MLL=m
+# CONFIG_KS8842 is not set
+# CONFIG_KS8851_MLL is not set
 CONFIG_KSZ884X_PCI=m
 CONFIG_NET_VENDOR_MYRI=y
 CONFIG_MYRI10GE=m
@@ -1646,36 +1778,32 @@ CONFIG_NET_VENDOR_NATSEMI=y
 CONFIG_NATSEMI=m
 CONFIG_NS83820=m
 CONFIG_NET_VENDOR_8390=y
-CONFIG_PCMCIA_AXNET=m
 CONFIG_AX88796=m
 CONFIG_AX88796_93CX6=y
 CONFIG_NE2K_PCI=m
-CONFIG_PCMCIA_PCNET=m
 CONFIG_NET_VENDOR_NVIDIA=y
 CONFIG_FORCEDETH=m
 CONFIG_NET_VENDOR_OKI=y
 CONFIG_PCH_GBE=m
 CONFIG_ETHOC=m
-CONFIG_NET_PACKET_ENGINE=y
-CONFIG_HAMACHI=m
-CONFIG_YELLOWFIN=m
+# CONFIG_NET_PACKET_ENGINE is not set
 CONFIG_NET_VENDOR_QLOGIC=y
 CONFIG_QLA3XXX=m
 CONFIG_QLCNIC=m
+CONFIG_QLCNIC_SRIOV=y
 CONFIG_QLGE=m
 CONFIG_NETXEN_NIC=m
 CONFIG_NET_VENDOR_REALTEK=y
 CONFIG_8139CP=m
 CONFIG_8139TOO=m
 # CONFIG_8139TOO_PIO is not set
-CONFIG_8139TOO_TUNE_TWISTER=y
+# CONFIG_8139TOO_TUNE_TWISTER is not set
 CONFIG_8139TOO_8129=y
 # CONFIG_8139_OLD_RX_RESET is not set
 CONFIG_R8169=m
 CONFIG_NET_VENDOR_RDC=y
 CONFIG_R6040=m
 CONFIG_NET_VENDOR_SEEQ=y
-CONFIG_SEEQ8005=m
 CONFIG_NET_VENDOR_SILAN=y
 CONFIG_SC92031=m
 CONFIG_NET_VENDOR_SIS=y
@@ -1683,9 +1811,10 @@ CONFIG_SIS900=m
 CONFIG_SIS190=m
 CONFIG_SFC=m
 CONFIG_SFC_MTD=y
+CONFIG_SFC_MCDI_MON=y
+CONFIG_SFC_SRIOV=y
 CONFIG_NET_VENDOR_SMSC=y
 CONFIG_SMC91X=m
-CONFIG_PCMCIA_SMC91C92=m
 CONFIG_EPIC100=m
 CONFIG_SMC911X=m
 CONFIG_SMSC911X=m
@@ -1693,9 +1822,10 @@ CONFIG_SMSC911X=m
 CONFIG_SMSC9420=m
 CONFIG_NET_VENDOR_STMICRO=y
 CONFIG_STMMAC_ETH=m
+CONFIG_STMMAC_PLATFORM=y
+CONFIG_STMMAC_PCI=y
+# CONFIG_STMMAC_DEBUG_FS is not set
 # CONFIG_STMMAC_DA is not set
-CONFIG_STMMAC_RING=y
-# CONFIG_STMMAC_CHAINED is not set
 CONFIG_NET_VENDOR_SUN=y
 CONFIG_HAPPYMEAL=m
 # CONFIG_SUNGEM is not set
@@ -1709,8 +1839,12 @@ CONFIG_NET_VENDOR_VIA=y
 CONFIG_VIA_RHINE=m
 CONFIG_VIA_RHINE_MMIO=y
 CONFIG_VIA_VELOCITY=m
-CONFIG_NET_VENDOR_XIRCOM=y
-CONFIG_PCMCIA_XIRC2PS=m
+CONFIG_NET_VENDOR_WIZNET=y
+CONFIG_WIZNET_W5100=m
+CONFIG_WIZNET_W5300=m
+# CONFIG_WIZNET_BUS_DIRECT is not set
+# CONFIG_WIZNET_BUS_INDIRECT is not set
+CONFIG_WIZNET_BUS_ANY=y
 # CONFIG_FDDI is not set
 # CONFIG_HIPPI is not set
 CONFIG_PHYLIB=y
@@ -1718,6 +1852,8 @@ CONFIG_PHYLIB=y
 #
 # MII PHY device drivers
 #
+CONFIG_AT803X_PHY=m
+CONFIG_AMD_PHY=m
 CONFIG_MARVELL_PHY=m
 CONFIG_DAVICOM_PHY=m
 CONFIG_QSEMI_PHY=m
@@ -1726,15 +1862,19 @@ CONFIG_CICADA_PHY=m
 CONFIG_VITESSE_PHY=m
 CONFIG_SMSC_PHY=m
 CONFIG_BROADCOM_PHY=m
+CONFIG_BCM87XX_PHY=m
 CONFIG_ICPLUS_PHY=m
 CONFIG_REALTEK_PHY=m
 CONFIG_NATIONAL_PHY=m
 CONFIG_STE10XP=m
 CONFIG_LSI_ET1011C_PHY=m
 CONFIG_MICREL_PHY=m
-# CONFIG_FIXED_PHY is not set
+CONFIG_FIXED_PHY=y
 CONFIG_MDIO_BITBANG=m
-CONFIG_MDIO_GPIO=m
+# CONFIG_MDIO_GPIO is not set
+CONFIG_MDIO_BUS_MUX=m
+CONFIG_MDIO_BUS_MUX_GPIO=m
+CONFIG_MDIO_BUS_MUX_MMIOREG=m
 # CONFIG_PLIP is not set
 CONFIG_PPP=m
 CONFIG_PPP_BSDCOMP=m
@@ -1748,12 +1888,8 @@ CONFIG_PPTP=m
 CONFIG_PPPOL2TP=m
 CONFIG_PPP_ASYNC=m
 CONFIG_PPP_SYNC_TTY=m
-CONFIG_SLIP=m
+# CONFIG_SLIP is not set
 CONFIG_SLHC=m
-CONFIG_SLIP_COMPRESSED=y
-CONFIG_SLIP_SMART=y
-CONFIG_SLIP_MODE_SLIP6=y
-# CONFIG_TR is not set
 
 #
 # USB Network Adapters
@@ -1762,11 +1898,14 @@ CONFIG_USB_CATC=m
 CONFIG_USB_KAWETH=m
 CONFIG_USB_PEGASUS=m
 CONFIG_USB_RTL8150=m
+CONFIG_USB_RTL8152=m
 CONFIG_USB_USBNET=m
 CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_AX88179_178A=m
 CONFIG_USB_NET_CDCETHER=m
 CONFIG_USB_NET_CDC_EEM=m
 CONFIG_USB_NET_CDC_NCM=m
+CONFIG_USB_NET_CDC_MBIM=m
 CONFIG_USB_NET_DM9601=m
 CONFIG_USB_NET_SMSC75XX=m
 CONFIG_USB_NET_SMSC95XX=m
@@ -1785,82 +1924,171 @@ CONFIG_USB_KC2190=y
 CONFIG_USB_NET_ZAURUS=m
 CONFIG_USB_NET_CX82310_ETH=m
 CONFIG_USB_NET_KALMIA=m
+CONFIG_USB_NET_QMI_WWAN=m
 CONFIG_USB_HSO=m
 CONFIG_USB_NET_INT51X1=m
-# CONFIG_USB_IPHETH is not set
+CONFIG_USB_IPHETH=m
 CONFIG_USB_SIERRA_NET=m
 CONFIG_USB_VL600=m
 CONFIG_WLAN=y
-CONFIG_PCMCIA_RAYCS=m
-# CONFIG_LIBERTAS_THINFIRM is not set
+CONFIG_LIBERTAS_THINFIRM=m
+# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set
+CONFIG_LIBERTAS_THINFIRM_USB=m
 CONFIG_ATMEL=m
 CONFIG_PCI_ATMEL=m
-CONFIG_PCMCIA_ATMEL=m
 CONFIG_AT76C50X_USB=m
-CONFIG_AIRO_CS=m
-CONFIG_PCMCIA_WL3501=m
 # CONFIG_PRISM54 is not set
 CONFIG_USB_ZD1201=m
 CONFIG_USB_NET_RNDIS_WLAN=m
-# CONFIG_RTL8180 is not set
-# CONFIG_RTL8187 is not set
-# CONFIG_ADM8211 is not set
-# CONFIG_MAC80211_HWSIM is not set
-# CONFIG_MWL8K is not set
-# CONFIG_ATH_COMMON is not set
-# CONFIG_B43 is not set
-# CONFIG_B43LEGACY is not set
+CONFIG_RTL8180=m
+CONFIG_RTL8187=m
+CONFIG_RTL8187_LEDS=y
+CONFIG_ADM8211=m
+CONFIG_MAC80211_HWSIM=m
+CONFIG_MWL8K=m
+CONFIG_ATH_COMMON=m
+CONFIG_ATH_CARDS=m
+# CONFIG_ATH_DEBUG is not set
+CONFIG_ATH5K=m
+CONFIG_ATH5K_DEBUG=y
+# CONFIG_ATH5K_TRACER is not set
+CONFIG_ATH5K_PCI=y
+CONFIG_ATH9K_HW=m
+CONFIG_ATH9K_COMMON=m
+CONFIG_ATH9K_BTCOEX_SUPPORT=y
+CONFIG_ATH9K=m
+CONFIG_ATH9K_PCI=y
+CONFIG_ATH9K_AHB=y
+# CONFIG_ATH9K_DEBUGFS is not set
+# CONFIG_ATH9K_LEGACY_RATE_CONTROL is not set
+CONFIG_ATH9K_HTC=m
+# CONFIG_ATH9K_HTC_DEBUGFS is not set
+CONFIG_CARL9170=m
+CONFIG_CARL9170_LEDS=y
+CONFIG_CARL9170_WPC=y
+# CONFIG_CARL9170_HWRNG is not set
+# CONFIG_ATH6KL is not set
+CONFIG_AR5523=m
+CONFIG_WIL6210=m
+CONFIG_WIL6210_ISR_COR=y
+CONFIG_B43=m
+CONFIG_B43_SSB=y
+CONFIG_B43_PCI_AUTOSELECT=y
+CONFIG_B43_PCICORE_AUTOSELECT=y
+CONFIG_B43_SDIO=y
+CONFIG_B43_PIO=y
+CONFIG_B43_PHY_N=y
+CONFIG_B43_PHY_LP=y
+CONFIG_B43_LEDS=y
+CONFIG_B43_HWRNG=y
+# CONFIG_B43_DEBUG is not set
+CONFIG_B43LEGACY=m
+CONFIG_B43LEGACY_PCI_AUTOSELECT=y
+CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y
+CONFIG_B43LEGACY_LEDS=y
+CONFIG_B43LEGACY_HWRNG=y
+# CONFIG_B43LEGACY_DEBUG is not set
+CONFIG_B43LEGACY_DMA=y
+CONFIG_B43LEGACY_PIO=y
+CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
+# CONFIG_B43LEGACY_DMA_MODE is not set
+# CONFIG_B43LEGACY_PIO_MODE is not set
 # CONFIG_BRCMFMAC is not set
 CONFIG_HOSTAP=m
 CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
+CONFIG_HOSTAP_FIRMWARE_NVRAM=y
 CONFIG_HOSTAP_PLX=m
 CONFIG_HOSTAP_PCI=m
-CONFIG_HOSTAP_CS=m
-# CONFIG_IPW2100 is not set
-# CONFIG_IPW2200 is not set
+CONFIG_IPW2100=m
+CONFIG_IPW2100_MONITOR=y
+# CONFIG_IPW2100_DEBUG is not set
+CONFIG_IPW2200=m
+CONFIG_IPW2200_MONITOR=y
+CONFIG_IPW2200_RADIOTAP=y
+CONFIG_IPW2200_PROMISCUOUS=y
+CONFIG_IPW2200_QOS=y
+# CONFIG_IPW2200_DEBUG is not set
+CONFIG_LIBIPW=m
+# CONFIG_LIBIPW_DEBUG is not set
 # CONFIG_IWLWIFI is not set
-# CONFIG_IWL4965 is not set
-# CONFIG_IWL3945 is not set
-# CONFIG_IWM is not set
-# CONFIG_LIBERTAS is not set
-# CONFIG_HERMES is not set
-# CONFIG_P54_COMMON is not set
-# CONFIG_RT2X00 is not set
-# CONFIG_RTL8192CE is not set
-# CONFIG_RTL8192SE is not set
-# CONFIG_RTL8192DE is not set
-# CONFIG_RTL8192CU is not set
-# CONFIG_WL1251 is not set
-# CONFIG_WL12XX_MENU is not set
-# CONFIG_ZD1211RW is not set
-# CONFIG_MWIFIEX is not set
+CONFIG_IWLEGACY=m
+CONFIG_IWL4965=m
+CONFIG_IWL3945=m
+
+#
+# iwl3945 / iwl4965 Debugging Options
+#
+# CONFIG_IWLEGACY_DEBUG is not set
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
+CONFIG_LIBERTAS_SDIO=m
+# CONFIG_LIBERTAS_DEBUG is not set
+CONFIG_LIBERTAS_MESH=y
+CONFIG_HERMES=m
+# CONFIG_HERMES_PRISM is not set
+CONFIG_HERMES_CACHE_FW_ON_INIT=y
+CONFIG_PLX_HERMES=m
+CONFIG_TMD_HERMES=m
+CONFIG_NORTEL_HERMES=m
+CONFIG_ORINOCO_USB=m
+CONFIG_P54_COMMON=m
+CONFIG_P54_USB=m
+CONFIG_P54_PCI=m
+CONFIG_P54_LEDS=y
+CONFIG_RT2X00=m
+CONFIG_RT2400PCI=m
+CONFIG_RT2500PCI=m
+CONFIG_RT61PCI=m
+CONFIG_RT2800PCI=m
+CONFIG_RT2800PCI_RT33XX=y
+CONFIG_RT2800PCI_RT35XX=y
+CONFIG_RT2800PCI_RT53XX=y
+CONFIG_RT2800PCI_RT3290=y
+CONFIG_RT2500USB=m
+CONFIG_RT73USB=m
+CONFIG_RT2800USB=m
+CONFIG_RT2800USB_RT33XX=y
+CONFIG_RT2800USB_RT35XX=y
+CONFIG_RT2800USB_RT53XX=y
+CONFIG_RT2800USB_RT55XX=y
+CONFIG_RT2800USB_UNKNOWN=y
+CONFIG_RT2800_LIB=m
+CONFIG_RT2X00_LIB_MMIO=m
+CONFIG_RT2X00_LIB_PCI=m
+CONFIG_RT2X00_LIB_USB=m
+CONFIG_RT2X00_LIB=m
+CONFIG_RT2X00_LIB_FIRMWARE=y
+CONFIG_RT2X00_LIB_CRYPTO=y
+CONFIG_RT2X00_LIB_LEDS=y
+# CONFIG_RT2X00_DEBUG is not set
+CONFIG_RTLWIFI=m
+# CONFIG_RTLWIFI_DEBUG is not set
+CONFIG_RTL8192CE=m
+CONFIG_RTL8192SE=m
+CONFIG_RTL8192DE=m
+CONFIG_RTL8723AE=m
+CONFIG_RTL8188EE=m
+CONFIG_RTL8192CU=m
+CONFIG_RTL8192C_COMMON=m
+CONFIG_WL_TI=y
+CONFIG_WL1251=m
+CONFIG_WL1251_SDIO=m
+CONFIG_WL12XX=m
+CONFIG_WL18XX=m
+CONFIG_WLCORE=m
+CONFIG_WLCORE_SDIO=m
+CONFIG_WILINK_PLATFORM_DATA=y
+CONFIG_ZD1211RW=m
+# CONFIG_ZD1211RW_DEBUG is not set
+CONFIG_MWIFIEX=m
+CONFIG_MWIFIEX_SDIO=m
+# CONFIG_MWIFIEX_PCIE is not set
+CONFIG_MWIFIEX_USB=m
 
 #
 # Enable WiMAX (Networking options) to see the WiMAX drivers
 #
-CONFIG_WAN=y
-CONFIG_LANMEDIA=m
-CONFIG_HDLC=m
-CONFIG_HDLC_RAW=m
-CONFIG_HDLC_RAW_ETH=m
-CONFIG_HDLC_CISCO=m
-CONFIG_HDLC_FR=m
-CONFIG_HDLC_PPP=m
-
-#
-# X.25/LAPB support is disabled
-#
-CONFIG_PCI200SYN=m
-CONFIG_WANXL=m
-# CONFIG_WANXL_BUILD_FIRMWARE is not set
-CONFIG_PC300TOO=m
-CONFIG_FARSYNC=m
-CONFIG_DSCC4=m
-CONFIG_DSCC4_PCISYNC=y
-CONFIG_DSCC4_PCI_RST=y
-CONFIG_DLCI=m
-CONFIG_DLCI_MAX=8
+# CONFIG_WAN is not set
 CONFIG_VMXNET3=m
 CONFIG_ISDN=y
 CONFIG_ISDN_I4L=m
@@ -1892,9 +2120,9 @@ CONFIG_ISDN_DRV_HISAX=m
 #
 CONFIG_HISAX_EURO=y
 CONFIG_DE_AOC=y
-# CONFIG_HISAX_NO_SENDCOMPLETE is not set
-# CONFIG_HISAX_NO_LLC is not set
-# CONFIG_HISAX_NO_KEYPAD is not set
+CONFIG_HISAX_NO_SENDCOMPLETE=y
+CONFIG_HISAX_NO_LLC=y
+CONFIG_HISAX_NO_KEYPAD=y
 CONFIG_HISAX_1TR6=y
 CONFIG_HISAX_NI1=y
 CONFIG_HISAX_MAX_CARDS=8
@@ -1910,8 +2138,6 @@ CONFIG_HISAX_AVM_A1_PCMCIA=y
 CONFIG_HISAX_ELSA=y
 CONFIG_HISAX_DIEHLDIVA=y
 CONFIG_HISAX_SEDLBAUER=y
-CONFIG_HISAX_NETJET=y
-CONFIG_HISAX_NETJET_U=y
 CONFIG_HISAX_NICCY=y
 CONFIG_HISAX_BKM_A4T=y
 CONFIG_HISAX_SCT_QUADRO=y
@@ -1919,16 +2145,11 @@ CONFIG_HISAX_GAZEL=y
 CONFIG_HISAX_HFC_PCI=y
 CONFIG_HISAX_W6692=y
 CONFIG_HISAX_HFC_SX=y
-CONFIG_HISAX_ENTERNOW_PCI=y
-CONFIG_HISAX_DEBUG=y
+# CONFIG_HISAX_DEBUG is not set
 
 #
 # HiSax PCMCIA card service modules
 #
-CONFIG_HISAX_SEDLBAUER_CS=m
-CONFIG_HISAX_ELSA_CS=m
-CONFIG_HISAX_AVM_A1_CS=m
-CONFIG_HISAX_TELES_CS=m
 
 #
 # HiSax sub driver modules
@@ -1954,8 +2175,6 @@ CONFIG_ISDN_CAPI_CAPIDRV=m
 CONFIG_CAPI_AVM=y
 CONFIG_ISDN_DRV_AVMB1_B1PCI=m
 CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
-CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
-CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
 CONFIG_ISDN_DRV_AVMB1_T1PCI=m
 CONFIG_ISDN_DRV_AVMB1_C4=m
 CONFIG_CAPI_EICON=y
@@ -1965,43 +2184,20 @@ CONFIG_ISDN_DIVAS_PRIPCI=y
 CONFIG_ISDN_DIVAS_DIVACAPI=m
 CONFIG_ISDN_DIVAS_USERIDI=m
 CONFIG_ISDN_DIVAS_MAINT=m
-CONFIG_ISDN_DRV_GIGASET=m
-CONFIG_GIGASET_CAPI=y
-# CONFIG_GIGASET_I4L is not set
-# CONFIG_GIGASET_DUMMYLL is not set
-CONFIG_GIGASET_BASE=m
-CONFIG_GIGASET_M105=m
-CONFIG_GIGASET_M101=m
-# CONFIG_GIGASET_DEBUG is not set
+# CONFIG_ISDN_DRV_GIGASET is not set
 CONFIG_HYSDN=m
 CONFIG_HYSDN_CAPI=y
-CONFIG_MISDN=m
-CONFIG_MISDN_DSP=m
-CONFIG_MISDN_L1OIP=m
-
-#
-# mISDN hardware drivers
-#
-CONFIG_MISDN_HFCPCI=m
-CONFIG_MISDN_HFCMULTI=m
-CONFIG_MISDN_HFCUSB=m
-CONFIG_MISDN_AVMFRITZ=m
-CONFIG_MISDN_SPEEDFAX=m
-CONFIG_MISDN_INFINEON=m
-CONFIG_MISDN_W6692=m
-CONFIG_MISDN_NETJET=m
-CONFIG_MISDN_IPAC=m
-CONFIG_MISDN_ISAR=m
+# CONFIG_MISDN is not set
 CONFIG_ISDN_HDLC=m
-# CONFIG_PHONE is not set
 
 #
 # Input device support
 #
 CONFIG_INPUT=y
-CONFIG_INPUT_FF_MEMLESS=m
+# CONFIG_INPUT_FF_MEMLESS is not set
 CONFIG_INPUT_POLLDEV=m
 CONFIG_INPUT_SPARSEKMAP=m
+CONFIG_INPUT_MATRIXKMAP=m
 
 #
 # Userland interfaces
@@ -2011,53 +2207,78 @@ CONFIG_INPUT_MOUSEDEV=y
 CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
 CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
 # CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_EVDEV is not set
+CONFIG_INPUT_EVDEV=y
 # CONFIG_INPUT_EVBUG is not set
+# CONFIG_INPUT_APMPOWER is not set
 
 #
 # Input Device Drivers
 #
 CONFIG_INPUT_KEYBOARD=y
-CONFIG_KEYBOARD_ADP5588=m
-CONFIG_KEYBOARD_ADP5589=m
+# CONFIG_KEYBOARD_ADP5588 is not set
+# CONFIG_KEYBOARD_ADP5589 is not set
 CONFIG_KEYBOARD_ATKBD=y
-CONFIG_KEYBOARD_QT1070=m
-CONFIG_KEYBOARD_QT2160=m
-CONFIG_KEYBOARD_LKKBD=m
-CONFIG_KEYBOARD_GPIO=m
-CONFIG_KEYBOARD_TCA6416=m
-CONFIG_KEYBOARD_MATRIX=m
-CONFIG_KEYBOARD_LM8323=m
-CONFIG_KEYBOARD_MAX7359=m
-CONFIG_KEYBOARD_MCS=m
-CONFIG_KEYBOARD_MPR121=m
-CONFIG_KEYBOARD_NEWTON=m
-CONFIG_KEYBOARD_OPENCORES=m
-CONFIG_KEYBOARD_STOWAWAY=m
-CONFIG_KEYBOARD_SUNKBD=m
-CONFIG_KEYBOARD_XTKBD=m
-# CONFIG_INPUT_MOUSE is not set
+# CONFIG_KEYBOARD_QT1070 is not set
+# CONFIG_KEYBOARD_QT2160 is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+CONFIG_KEYBOARD_GPIO=y
+# CONFIG_KEYBOARD_TCA6416 is not set
+# CONFIG_KEYBOARD_TCA8418 is not set
+# CONFIG_KEYBOARD_MATRIX is not set
+# CONFIG_KEYBOARD_LM8323 is not set
+CONFIG_KEYBOARD_LM8333=m
+# CONFIG_KEYBOARD_MAX7359 is not set
+# CONFIG_KEYBOARD_MCS is not set
+# CONFIG_KEYBOARD_MPR121 is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_OPENCORES is not set
+# CONFIG_KEYBOARD_SAMSUNG is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=m
+CONFIG_MOUSE_PS2_ALPS=y
+CONFIG_MOUSE_PS2_LOGIPS2PP=y
+CONFIG_MOUSE_PS2_SYNAPTICS=y
+CONFIG_MOUSE_PS2_CYPRESS=y
+CONFIG_MOUSE_PS2_TRACKPOINT=y
+CONFIG_MOUSE_PS2_ELANTECH=y
+CONFIG_MOUSE_PS2_SENTELIC=y
+CONFIG_MOUSE_PS2_TOUCHKIT=y
+CONFIG_MOUSE_SERIAL=m
+CONFIG_MOUSE_APPLETOUCH=m
+CONFIG_MOUSE_BCM5974=m
+CONFIG_MOUSE_CYAPA=m
+CONFIG_MOUSE_VSXXXAA=m
+# CONFIG_MOUSE_GPIO is not set
+CONFIG_MOUSE_SYNAPTICS_I2C=m
+CONFIG_MOUSE_SYNAPTICS_USB=m
 # CONFIG_INPUT_JOYSTICK is not set
 # CONFIG_INPUT_TABLET is not set
 # CONFIG_INPUT_TOUCHSCREEN is not set
 CONFIG_INPUT_MISC=y
-CONFIG_INPUT_88PM860X_ONKEY=m
-CONFIG_INPUT_AD714X=m
-CONFIG_INPUT_AD714X_I2C=m
-CONFIG_INPUT_BMA150=m
+# CONFIG_INPUT_88PM860X_ONKEY is not set
+# CONFIG_INPUT_88PM80X_ONKEY is not set
+# CONFIG_INPUT_AD714X is not set
+# CONFIG_INPUT_BMA150 is not set
 # CONFIG_INPUT_MMA8450 is not set
 # CONFIG_INPUT_MPU3050 is not set
+# CONFIG_INPUT_GP2A is not set
+# CONFIG_INPUT_GPIO_TILT_POLLED is not set
 CONFIG_INPUT_ATI_REMOTE2=m
 CONFIG_INPUT_KEYSPAN_REMOTE=m
 # CONFIG_INPUT_KXTJ9 is not set
 CONFIG_INPUT_POWERMATE=m
 CONFIG_INPUT_YEALINK=m
 CONFIG_INPUT_CM109=m
-# CONFIG_INPUT_UINPUT is not set
-CONFIG_INPUT_PCF50633_PMU=m
-CONFIG_INPUT_PCF8574=m
+CONFIG_INPUT_RETU_PWRBUTTON=m
+CONFIG_INPUT_UINPUT=m
+# CONFIG_INPUT_PCF8574 is not set
+CONFIG_INPUT_PWM_BEEPER=m
 CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
 # CONFIG_INPUT_ADXL34X is not set
+# CONFIG_INPUT_IMS_PCU is not set
 # CONFIG_INPUT_CMA3000 is not set
 
 #
@@ -2068,100 +2289,104 @@ CONFIG_SERIO_SERPORT=y
 # CONFIG_SERIO_PARKBD is not set
 # CONFIG_SERIO_PCIPS2 is not set
 CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
+CONFIG_SERIO_RAW=m
 CONFIG_SERIO_ALTERA_PS2=m
-CONFIG_SERIO_PS2MULT=m
+# CONFIG_SERIO_PS2MULT is not set
+CONFIG_SERIO_ARC_PS2=m
+CONFIG_SERIO_APBPS2=m
 # CONFIG_GAMEPORT is not set
 
 #
 # Character devices
 #
+CONFIG_TTY=y
 CONFIG_VT=y
 CONFIG_CONSOLE_TRANSLATIONS=y
 CONFIG_VT_CONSOLE=y
 CONFIG_HW_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
+CONFIG_VT_HW_CONSOLE_BINDING=y
 CONFIG_UNIX98_PTYS=y
-# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
+CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
 # CONFIG_LEGACY_PTYS is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
+CONFIG_SERIAL_NONSTANDARD=y
+CONFIG_ROCKETPORT=m
+CONFIG_CYCLADES=m
+# CONFIG_CYZ_INTR is not set
+# CONFIG_MOXA_INTELLIO is not set
+# CONFIG_MOXA_SMARTIO is not set
+CONFIG_SYNCLINKMP=m
+CONFIG_SYNCLINK_GT=m
 CONFIG_NOZOMI=m
+# CONFIG_ISI is not set
+CONFIG_N_HDLC=m
 CONFIG_N_GSM=m
 # CONFIG_TRACE_SINK is not set
-CONFIG_DEVKMEM=y
+# CONFIG_DEVKMEM is not set
+# CONFIG_STALDRV is not set
 
 #
 # Serial drivers
 #
 CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
 CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_DMA=y
 CONFIG_SERIAL_8250_PCI=y
-CONFIG_SERIAL_8250_CS=m
 CONFIG_SERIAL_8250_NR_UARTS=4
 CONFIG_SERIAL_8250_RUNTIME_UARTS=4
 CONFIG_SERIAL_8250_EXTENDED=y
 CONFIG_SERIAL_8250_MANY_PORTS=y
 CONFIG_SERIAL_8250_SHARE_IRQ=y
-CONFIG_SERIAL_8250_DETECT_IRQ=y
+# CONFIG_SERIAL_8250_DETECT_IRQ is not set
 CONFIG_SERIAL_8250_RSA=y
-CONFIG_SERIAL_8250_DW=m
+# CONFIG_SERIAL_8250_DW is not set
+# CONFIG_SERIAL_8250_EM is not set
 
 #
 # Non-8250 serial port support
 #
-CONFIG_SERIAL_MFD_HSU=m
-CONFIG_SERIAL_UARTLITE=m
+# CONFIG_SERIAL_MFD_HSU is not set
 CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
-# CONFIG_SERIAL_JSM is not set
+CONFIG_SERIAL_JSM=m
 CONFIG_SERIAL_OF_PLATFORM=y
-CONFIG_SERIAL_TIMBERDALE=m
-CONFIG_SERIAL_ALTERA_JTAGUART=m
-CONFIG_SERIAL_ALTERA_UART=m
-CONFIG_SERIAL_ALTERA_UART_MAXPORTS=4
-CONFIG_SERIAL_ALTERA_UART_BAUDRATE=115200
-CONFIG_SERIAL_PCH_UART=m
-CONFIG_SERIAL_XILINX_PS_UART=m
+CONFIG_SERIAL_SCCNXP=m
+# CONFIG_SERIAL_TIMBERDALE is not set
+# CONFIG_SERIAL_ALTERA_JTAGUART is not set
+# CONFIG_SERIAL_ALTERA_UART is not set
+# CONFIG_SERIAL_PCH_UART is not set
+# CONFIG_SERIAL_XILINX_PS_UART is not set
+CONFIG_SERIAL_ARC=m
+CONFIG_SERIAL_ARC_NR_PORTS=1
+CONFIG_SERIAL_RP2=m
+CONFIG_SERIAL_RP2_NR_UARTS=32
+# CONFIG_TTY_PRINTK is not set
 CONFIG_PRINTER=m
-# CONFIG_LP_CONSOLE is not set
+CONFIG_LP_CONSOLE=y
 CONFIG_PPDEV=m
 # CONFIG_HVC_DCC is not set
 CONFIG_IPMI_HANDLER=m
-CONFIG_IPMI_PANIC_EVENT=y
-# CONFIG_IPMI_PANIC_STRING is not set
+# CONFIG_IPMI_PANIC_EVENT is not set
 CONFIG_IPMI_DEVICE_INTERFACE=m
 CONFIG_IPMI_SI=m
 CONFIG_IPMI_WATCHDOG=m
 CONFIG_IPMI_POWEROFF=m
-CONFIG_HW_RANDOM=m
+CONFIG_HW_RANDOM=y
 CONFIG_HW_RANDOM_TIMERIOMEM=m
-CONFIG_NVRAM=m
-# CONFIG_R3964 is not set
+CONFIG_HW_RANDOM_ATMEL=m
+CONFIG_HW_RANDOM_EXYNOS=m
+CONFIG_NVRAM=y
+CONFIG_R3964=m
 # CONFIG_APPLICOM is not set
-
-#
-# PCMCIA character devices
-#
-CONFIG_SYNCLINK_CS=m
-# CONFIG_CARDMAN_4000 is not set
-# CONFIG_CARDMAN_4040 is not set
-CONFIG_IPWIRELESS=m
-# CONFIG_RAW_DRIVER is not set
+CONFIG_RAW_DRIVER=y
+CONFIG_MAX_RAW_DEVS=8192
 # CONFIG_TCG_TPM is not set
 CONFIG_DEVPORT=y
-# CONFIG_RAMOOPS is not set
 CONFIG_I2C=y
 CONFIG_I2C_BOARDINFO=y
 CONFIG_I2C_COMPAT=y
 CONFIG_I2C_CHARDEV=m
-CONFIG_I2C_MUX=m
-
-#
-# Multiplexer I2C Chip support
-#
-CONFIG_I2C_MUX_GPIO=m
-CONFIG_I2C_MUX_PCA9541=m
-CONFIG_I2C_MUX_PCA954x=m
+# CONFIG_I2C_MUX is not set
 CONFIG_I2C_HELPER_AUTO=y
 CONFIG_I2C_SMBUS=m
 CONFIG_I2C_ALGOBIT=m
@@ -2192,17 +2417,18 @@ CONFIG_I2C_VIAPRO=m
 #
 # I2C system bus drivers (mostly embedded / system-on-chip)
 #
-CONFIG_I2C_DESIGNWARE_CORE=m
-CONFIG_I2C_DESIGNWARE_PCI=m
+CONFIG_I2C_CBUS_GPIO=m
+# CONFIG_I2C_DESIGNWARE_PLATFORM is not set
+# CONFIG_I2C_DESIGNWARE_PCI is not set
+# CONFIG_I2C_EG20T is not set
 CONFIG_I2C_GPIO=m
-CONFIG_I2C_INTEL_MID=m
+# CONFIG_I2C_INTEL_MID is not set
 CONFIG_I2C_MV64XXX=y
-CONFIG_I2C_OCORES=m
+# CONFIG_I2C_OCORES is not set
 CONFIG_I2C_PCA_PLATFORM=m
 # CONFIG_I2C_PXA_PCI is not set
 CONFIG_I2C_SIMTEC=m
-CONFIG_I2C_XILINX=m
-CONFIG_I2C_EG20T=m
+# CONFIG_I2C_XILINX is not set
 
 #
 # External I2C/SMBus adapter drivers
@@ -2210,8 +2436,9 @@ CONFIG_I2C_EG20T=m
 CONFIG_I2C_DIOLAN_U2C=m
 CONFIG_I2C_PARPORT=m
 CONFIG_I2C_PARPORT_LIGHT=m
-CONFIG_I2C_TAOS_EVM=m
+# CONFIG_I2C_TAOS_EVM is not set
 CONFIG_I2C_TINY_USB=m
+CONFIG_I2C_VIPERBOARD=m
 
 #
 # Other I2C/SMBus bus drivers
@@ -2222,6 +2449,18 @@ CONFIG_I2C_STUB=m
 # CONFIG_I2C_DEBUG_BUS is not set
 # CONFIG_SPI is not set
 
+#
+# Qualcomm MSM SSBI bus support
+#
+# CONFIG_SSBI is not set
+CONFIG_HSI=m
+CONFIG_HSI_BOARDINFO=y
+
+#
+# HSI clients
+#
+CONFIG_HSI_CHAR=m
+
 #
 # PPS support
 #
@@ -2244,37 +2483,61 @@ CONFIG_PPS=m
 # PTP clock support
 #
 CONFIG_PTP_1588_CLOCK=m
-CONFIG_DP83640_PHY=m
+
+#
+# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.
+#
+CONFIG_PTP_1588_CLOCK_PCH=m
+CONFIG_PINCTRL=y
+
+#
+# Pin controllers
+#
+CONFIG_PINMUX=y
+CONFIG_PINCONF=y
+CONFIG_GENERIC_PINCONF=y
+# CONFIG_DEBUG_PINCTRL is not set
+CONFIG_PINCTRL_SINGLE=m
+# CONFIG_PINCTRL_EXYNOS is not set
+# CONFIG_PINCTRL_EXYNOS5440 is not set
+CONFIG_PINCTRL_MVEBU=y
+CONFIG_PINCTRL_KIRKWOOD=y
+CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
 CONFIG_ARCH_REQUIRE_GPIOLIB=y
+CONFIG_GPIO_DEVRES=y
 CONFIG_GPIOLIB=y
+CONFIG_OF_GPIO=y
 # CONFIG_DEBUG_GPIO is not set
 CONFIG_GPIO_SYSFS=y
-CONFIG_GPIO_GENERIC=m
-CONFIG_GPIO_MAX730X=m
+CONFIG_GPIO_GENERIC=y
 
 #
 # Memory mapped GPIO drivers:
 #
-CONFIG_GPIO_GENERIC_PLATFORM=m
-CONFIG_GPIO_IT8761E=m
-CONFIG_GPIO_VX855=m
+CONFIG_GPIO_GENERIC_PLATFORM=y
+# CONFIG_GPIO_EM is not set
+CONFIG_GPIO_MVEBU=y
+# CONFIG_GPIO_RCAR is not set
+CONFIG_GPIO_TS5500=m
+# CONFIG_GPIO_VX855 is not set
+# CONFIG_GPIO_GRGPIO is not set
 
 #
 # I2C GPIO expanders:
 #
-CONFIG_GPIO_MAX7300=m
-CONFIG_GPIO_MAX732X=m
-CONFIG_GPIO_PCF857X=m
+# CONFIG_GPIO_MAX7300 is not set
+# CONFIG_GPIO_MAX732X is not set
+# CONFIG_GPIO_PCF857X is not set
 # CONFIG_GPIO_SX150X is not set
-CONFIG_GPIO_ADP5588=m
+# CONFIG_GPIO_ADP5588 is not set
+CONFIG_GPIO_ADNP=m
 
 #
 # PCI GPIO expanders:
 #
-# CONFIG_GPIO_BT8XX is not set
-CONFIG_GPIO_ML_IOH=m
-# CONFIG_GPIO_TIMBERDALE is not set
-CONFIG_GPIO_RDC321X=m
+# CONFIG_GPIO_AMD8111 is not set
+# CONFIG_GPIO_ML_IOH is not set
+# CONFIG_GPIO_RDC321X is not set
 
 #
 # SPI GPIO expanders:
@@ -2284,23 +2547,26 @@ CONFIG_GPIO_MCP23S08=m
 #
 # AC97 GPIO expanders:
 #
-# CONFIG_GPIO_UCB1400 is not set
 
 #
 # MODULbus GPIO expanders:
 #
-CONFIG_GPIO_JANZ_TTL=m
+
+#
+# USB GPIO expanders:
+#
+CONFIG_GPIO_VIPERBOARD=m
 CONFIG_W1=m
 CONFIG_W1_CON=y
 
 #
 # 1-wire Bus Masters
 #
-CONFIG_W1_MASTER_MATROX=m
+# CONFIG_W1_MASTER_MATROX is not set
 CONFIG_W1_MASTER_DS2490=m
 CONFIG_W1_MASTER_DS2482=m
 CONFIG_W1_MASTER_DS1WM=m
-CONFIG_W1_MASTER_GPIO=m
+# CONFIG_W1_MASTER_GPIO is not set
 
 #
 # 1-wire Slaves
@@ -2308,29 +2574,46 @@ CONFIG_W1_MASTER_GPIO=m
 CONFIG_W1_SLAVE_THERM=m
 CONFIG_W1_SLAVE_SMEM=m
 CONFIG_W1_SLAVE_DS2408=m
+CONFIG_W1_SLAVE_DS2408_READBACK=y
+CONFIG_W1_SLAVE_DS2413=m
 CONFIG_W1_SLAVE_DS2423=m
 CONFIG_W1_SLAVE_DS2431=m
 CONFIG_W1_SLAVE_DS2433=m
 CONFIG_W1_SLAVE_DS2433_CRC=y
 CONFIG_W1_SLAVE_DS2760=m
 CONFIG_W1_SLAVE_DS2780=m
+CONFIG_W1_SLAVE_DS2781=m
+CONFIG_W1_SLAVE_DS28E04=m
 CONFIG_W1_SLAVE_BQ27000=m
 CONFIG_POWER_SUPPLY=y
 # CONFIG_POWER_SUPPLY_DEBUG is not set
 # CONFIG_PDA_POWER is not set
+# CONFIG_APM_POWER is not set
+CONFIG_GENERIC_ADC_BATTERY=m
 # CONFIG_TEST_POWER is not set
+CONFIG_BATTERY_88PM860X=m
 # CONFIG_BATTERY_DS2760 is not set
 # CONFIG_BATTERY_DS2780 is not set
+# CONFIG_BATTERY_DS2781 is not set
 # CONFIG_BATTERY_DS2782 is not set
-# CONFIG_BATTERY_BQ20Z75 is not set
+# CONFIG_BATTERY_SBS is not set
 # CONFIG_BATTERY_BQ27x00 is not set
 # CONFIG_BATTERY_MAX17040 is not set
 # CONFIG_BATTERY_MAX17042 is not set
-# CONFIG_CHARGER_PCF50633 is not set
-# CONFIG_CHARGER_ISP1704 is not set
+CONFIG_CHARGER_88PM860X=m
 # CONFIG_CHARGER_MAX8903 is not set
+# CONFIG_CHARGER_LP8727 is not set
 # CONFIG_CHARGER_GPIO is not set
-CONFIG_HWMON=m
+# CONFIG_CHARGER_MANAGER is not set
+# CONFIG_CHARGER_BQ2415X is not set
+# CONFIG_CHARGER_SMB347 is not set
+# CONFIG_BATTERY_GOLDFISH is not set
+CONFIG_POWER_RESET=y
+CONFIG_POWER_RESET_GPIO=y
+CONFIG_POWER_RESET_QNAP=y
+CONFIG_POWER_RESET_RESTART=y
+CONFIG_POWER_AVS=y
+CONFIG_HWMON=y
 CONFIG_HWMON_VID=m
 # CONFIG_HWMON_DEBUG_CHIP is not set
 
@@ -2345,6 +2628,8 @@ CONFIG_SENSORS_ADM1026=m
 CONFIG_SENSORS_ADM1029=m
 CONFIG_SENSORS_ADM1031=m
 CONFIG_SENSORS_ADM9240=m
+CONFIG_SENSORS_ADT7X10=m
+CONFIG_SENSORS_ADT7410=m
 CONFIG_SENSORS_ADT7411=m
 CONFIG_SENSORS_ADT7462=m
 CONFIG_SENSORS_ADT7470=m
@@ -2360,13 +2645,15 @@ CONFIG_SENSORS_F75375S=m
 CONFIG_SENSORS_G760A=m
 CONFIG_SENSORS_GL518SM=m
 CONFIG_SENSORS_GL520SM=m
-CONFIG_SENSORS_GPIO_FAN=m
+# CONFIG_SENSORS_GPIO_FAN is not set
+CONFIG_SENSORS_HIH6130=m
 CONFIG_SENSORS_IBMAEM=m
 CONFIG_SENSORS_IBMPEX=m
+# CONFIG_SENSORS_IIO_HWMON is not set
 CONFIG_SENSORS_IT87=m
-CONFIG_SENSORS_JC42=m
+# CONFIG_SENSORS_JC42 is not set
 CONFIG_SENSORS_LINEAGE=m
-CONFIG_SENSORS_LM63=m
+CONFIG_SENSORS_LM63=y
 CONFIG_SENSORS_LM73=m
 CONFIG_SENSORS_LM75=m
 CONFIG_SENSORS_LM77=m
@@ -2382,14 +2669,19 @@ CONFIG_SENSORS_LTC4151=m
 CONFIG_SENSORS_LTC4215=m
 CONFIG_SENSORS_LTC4245=m
 CONFIG_SENSORS_LTC4261=m
+CONFIG_SENSORS_LM95234=m
 CONFIG_SENSORS_LM95241=m
 CONFIG_SENSORS_LM95245=m
 CONFIG_SENSORS_MAX16065=m
 CONFIG_SENSORS_MAX1619=m
 CONFIG_SENSORS_MAX1668=m
+CONFIG_SENSORS_MAX197=m
 CONFIG_SENSORS_MAX6639=m
 CONFIG_SENSORS_MAX6642=m
 CONFIG_SENSORS_MAX6650=m
+CONFIG_SENSORS_MAX6697=m
+CONFIG_SENSORS_MCP3021=m
+CONFIG_SENSORS_NCT6775=m
 CONFIG_SENSORS_NTC_THERMISTOR=m
 CONFIG_SENSORS_PC87360=m
 CONFIG_SENSORS_PC87427=m
@@ -2398,20 +2690,20 @@ CONFIG_PMBUS=m
 CONFIG_SENSORS_PMBUS=m
 CONFIG_SENSORS_ADM1275=m
 CONFIG_SENSORS_LM25066=m
-CONFIG_SENSORS_LTC2978=m
+# CONFIG_SENSORS_LTC2978 is not set
 CONFIG_SENSORS_MAX16064=m
 CONFIG_SENSORS_MAX34440=m
 CONFIG_SENSORS_MAX8688=m
 CONFIG_SENSORS_UCD9000=m
 CONFIG_SENSORS_UCD9200=m
-CONFIG_SENSORS_ZL6100=m
+# CONFIG_SENSORS_ZL6100 is not set
 CONFIG_SENSORS_SHT15=m
 CONFIG_SENSORS_SHT21=m
 CONFIG_SENSORS_SIS5595=m
-CONFIG_SENSORS_SMM665=m
+# CONFIG_SENSORS_SMM665 is not set
 CONFIG_SENSORS_DME1737=m
 CONFIG_SENSORS_EMC1403=m
-CONFIG_SENSORS_EMC2103=m
+# CONFIG_SENSORS_EMC2103 is not set
 CONFIG_SENSORS_EMC6W201=m
 CONFIG_SENSORS_SMSC47M1=m
 CONFIG_SENSORS_SMSC47M192=m
@@ -2422,6 +2714,8 @@ CONFIG_SENSORS_SCH5636=m
 CONFIG_SENSORS_ADS1015=m
 CONFIG_SENSORS_ADS7828=m
 CONFIG_SENSORS_AMC6821=m
+CONFIG_SENSORS_INA209=m
+CONFIG_SENSORS_INA2XX=m
 CONFIG_SENSORS_THMC50=m
 CONFIG_SENSORS_TMP102=m
 CONFIG_SENSORS_TMP401=m
@@ -2440,17 +2734,29 @@ CONFIG_SENSORS_W83L786NG=m
 CONFIG_SENSORS_W83627HF=m
 CONFIG_SENSORS_W83627EHF=m
 CONFIG_THERMAL=y
+CONFIG_THERMAL_HWMON=y
+CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
+# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set
+# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
+CONFIG_THERMAL_GOV_FAIR_SHARE=y
+CONFIG_THERMAL_GOV_STEP_WISE=y
+CONFIG_THERMAL_GOV_USER_SPACE=y
+CONFIG_THERMAL_EMULATION=y
+CONFIG_KIRKWOOD_THERMAL=m
 CONFIG_WATCHDOG=y
 CONFIG_WATCHDOG_CORE=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
+CONFIG_WATCHDOG_NOWAYOUT=y
 
 #
 # Watchdog Device Drivers
 #
 CONFIG_SOFT_WATCHDOG=m
+# CONFIG_DW_WATCHDOG is not set
 CONFIG_ORION_WATCHDOG=m
-CONFIG_MAX63XX_WATCHDOG=m
+# CONFIG_MAX63XX_WATCHDOG is not set
+CONFIG_RETU_WATCHDOG=m
 CONFIG_ALIM7101_WDT=m
+CONFIG_I6300ESB_WDT=m
 
 #
 # PCI-based Watchdog Cards
@@ -2469,397 +2775,665 @@ CONFIG_SSB_POSSIBLE=y
 #
 CONFIG_SSB=m
 CONFIG_SSB_SPROM=y
+CONFIG_SSB_BLOCKIO=y
 CONFIG_SSB_PCIHOST_POSSIBLE=y
 CONFIG_SSB_PCIHOST=y
-# CONFIG_SSB_B43_PCI_BRIDGE is not set
-CONFIG_SSB_PCMCIAHOST_POSSIBLE=y
-CONFIG_SSB_PCMCIAHOST=y
+CONFIG_SSB_B43_PCI_BRIDGE=y
 CONFIG_SSB_SDIOHOST_POSSIBLE=y
 CONFIG_SSB_SDIOHOST=y
+# CONFIG_SSB_SILENT is not set
 # CONFIG_SSB_DEBUG is not set
 CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
 CONFIG_SSB_DRIVER_PCICORE=y
+CONFIG_SSB_DRIVER_GPIO=y
 CONFIG_BCMA_POSSIBLE=y
 
 #
 # Broadcom specific AMBA
 #
-CONFIG_BCMA=m
-CONFIG_BCMA_HOST_PCI_POSSIBLE=y
-# CONFIG_BCMA_HOST_PCI is not set
-# CONFIG_BCMA_DEBUG is not set
+# CONFIG_BCMA is not set
 
 #
 # Multifunction device drivers
 #
 CONFIG_MFD_CORE=y
-CONFIG_MFD_88PM860X=y
-CONFIG_MFD_SM501=m
-# CONFIG_MFD_SM501_GPIO is not set
+# CONFIG_MFD_AS3711 is not set
+# CONFIG_PMIC_ADP5520 is not set
+# CONFIG_MFD_AAT2870_CORE is not set
+# CONFIG_MFD_CROS_EC is not set
 # CONFIG_MFD_ASIC3 is not set
+# CONFIG_PMIC_DA903X is not set
+# CONFIG_MFD_DA9052_I2C is not set
+# CONFIG_MFD_DA9055 is not set
+# CONFIG_MFD_MC13XXX_I2C is not set
 # CONFIG_HTC_EGPIO is not set
-CONFIG_HTC_PASIC3=m
+# CONFIG_HTC_PASIC3 is not set
 # CONFIG_HTC_I2CPLD is not set
-CONFIG_UCB1400_CORE=m
-CONFIG_TPS6105X=m
-CONFIG_TPS65010=m
-CONFIG_TPS6507X=m
+CONFIG_LPC_ICH=m
+CONFIG_LPC_SCH=m
+# CONFIG_MFD_JANZ_CMODIO is not set
+CONFIG_MFD_88PM800=y
+CONFIG_MFD_88PM805=y
+CONFIG_MFD_88PM860X=y
+# CONFIG_MFD_MAX77686 is not set
+# CONFIG_MFD_MAX77693 is not set
+# CONFIG_MFD_MAX8907 is not set
+# CONFIG_MFD_MAX8925 is not set
+# CONFIG_MFD_MAX8997 is not set
+# CONFIG_MFD_MAX8998 is not set
+CONFIG_MFD_VIPERBOARD=m
+CONFIG_MFD_RETU=m
+# CONFIG_MFD_PCF50633 is not set
+# CONFIG_UCB1400_CORE is not set
+# CONFIG_MFD_RDC321X is not set
+CONFIG_MFD_RTSX_PCI=m
+# CONFIG_MFD_RC5T583 is not set
+# CONFIG_MFD_SEC_CORE is not set
+# CONFIG_MFD_SI476X_CORE is not set
+CONFIG_MFD_SM501=m
+CONFIG_MFD_SM501_GPIO=y
+# CONFIG_MFD_SMSC is not set
+# CONFIG_ABX500_CORE is not set
+# CONFIG_MFD_STMPE is not set
+# CONFIG_MFD_SYSCON is not set
+# CONFIG_MFD_TI_AM335X_TSCADC is not set
+# CONFIG_MFD_LP8788 is not set
+# CONFIG_MFD_PALMAS is not set
+# CONFIG_TPS6105X is not set
+# CONFIG_TPS65010 is not set
+# CONFIG_TPS6507X is not set
+# CONFIG_MFD_TPS65090 is not set
+# CONFIG_MFD_TPS65217 is not set
 # CONFIG_MFD_TPS6586X is not set
 # CONFIG_MFD_TPS65910 is not set
+# CONFIG_MFD_TPS65912 is not set
 # CONFIG_MFD_TPS65912_I2C is not set
+# CONFIG_MFD_TPS80031 is not set
 # CONFIG_TWL4030_CORE is not set
-# CONFIG_MFD_STMPE is not set
+# CONFIG_TWL6040_CORE is not set
+CONFIG_MFD_WL1273_CORE=m
+CONFIG_MFD_LM3533=m
+# CONFIG_MFD_TIMBERDALE is not set
 # CONFIG_MFD_TC3589X is not set
 # CONFIG_MFD_TMIO is not set
+# CONFIG_MFD_T7L66XB is not set
+# CONFIG_MFD_TC6387XB is not set
 # CONFIG_MFD_TC6393XB is not set
-# CONFIG_PMIC_DA903X is not set
-# CONFIG_PMIC_ADP5520 is not set
-# CONFIG_MFD_MAX8925 is not set
-# CONFIG_MFD_MAX8997 is not set
-# CONFIG_MFD_MAX8998 is not set
-CONFIG_MFD_WM8400=m
+CONFIG_MFD_VX855=m
+# CONFIG_MFD_ARIZONA_I2C is not set
+# CONFIG_MFD_WM8400 is not set
 # CONFIG_MFD_WM831X_I2C is not set
 # CONFIG_MFD_WM8350_I2C is not set
 # CONFIG_MFD_WM8994 is not set
-CONFIG_MFD_PCF50633=m
-CONFIG_PCF50633_ADC=m
-CONFIG_PCF50633_GPIO=m
-# CONFIG_ABX500_CORE is not set
-CONFIG_MFD_TIMBERDALE=m
-CONFIG_LPC_SCH=m
-CONFIG_MFD_RDC321X=m
-CONFIG_MFD_JANZ_CMODIO=m
-CONFIG_MFD_VX855=m
-CONFIG_MFD_WL1273_CORE=m
-# CONFIG_MFD_AAT2870_CORE is not set
 CONFIG_REGULATOR=y
 # CONFIG_REGULATOR_DEBUG is not set
 # CONFIG_REGULATOR_DUMMY is not set
-CONFIG_REGULATOR_FIXED_VOLTAGE=m
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
 # CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
 # CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
-CONFIG_REGULATOR_GPIO=m
-# CONFIG_REGULATOR_BQ24022 is not set
+# CONFIG_REGULATOR_GPIO is not set
+# CONFIG_REGULATOR_AD5398 is not set
+# CONFIG_REGULATOR_FAN53555 is not set
+# CONFIG_REGULATOR_ISL6271A is not set
+CONFIG_REGULATOR_88PM8607=y
 # CONFIG_REGULATOR_MAX1586 is not set
 # CONFIG_REGULATOR_MAX8649 is not set
 # CONFIG_REGULATOR_MAX8660 is not set
 # CONFIG_REGULATOR_MAX8952 is not set
-# CONFIG_REGULATOR_WM8400 is not set
-# CONFIG_REGULATOR_PCF50633 is not set
+# CONFIG_REGULATOR_MAX8973 is not set
 # CONFIG_REGULATOR_LP3971 is not set
 # CONFIG_REGULATOR_LP3972 is not set
-# CONFIG_REGULATOR_TPS6105X is not set
+# CONFIG_REGULATOR_LP872X is not set
+CONFIG_REGULATOR_LP8755=m
+# CONFIG_REGULATOR_TPS51632 is not set
+# CONFIG_REGULATOR_TPS62360 is not set
 # CONFIG_REGULATOR_TPS65023 is not set
 # CONFIG_REGULATOR_TPS6507X is not set
-# CONFIG_REGULATOR_88PM8607 is not set
-# CONFIG_REGULATOR_ISL6271A is not set
-# CONFIG_REGULATOR_AD5398 is not set
-CONFIG_MEDIA_SUPPORT=m
+CONFIG_MEDIA_SUPPORT=y
 
 #
 # Multimedia core support
 #
+CONFIG_MEDIA_CAMERA_SUPPORT=y
+CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
+CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
+# CONFIG_MEDIA_RADIO_SUPPORT is not set
+CONFIG_MEDIA_RC_SUPPORT=y
 CONFIG_MEDIA_CONTROLLER=y
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L2_COMMON=m
+CONFIG_VIDEO_DEV=y
 CONFIG_VIDEO_V4L2_SUBDEV_API=y
-CONFIG_DVB_CORE=m
+CONFIG_VIDEO_V4L2=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
+CONFIG_VIDEO_TUNER=m
+CONFIG_V4L2_MEM2MEM_DEV=m
+CONFIG_VIDEOBUF_GEN=m
+CONFIG_VIDEOBUF_DMA_SG=m
+CONFIG_VIDEOBUF_VMALLOC=m
+CONFIG_VIDEOBUF_DMA_CONTIG=m
+CONFIG_VIDEOBUF_DVB=m
+CONFIG_VIDEOBUF2_CORE=m
+CONFIG_VIDEOBUF2_MEMOPS=m
+CONFIG_VIDEOBUF2_DMA_CONTIG=m
+CONFIG_VIDEOBUF2_VMALLOC=m
+CONFIG_VIDEO_V4L2_INT_DEVICE=m
+CONFIG_DVB_CORE=y
 CONFIG_DVB_NET=y
-CONFIG_VIDEO_MEDIA=m
+CONFIG_TTPCI_EEPROM=m
+CONFIG_DVB_MAX_ADAPTERS=8
+CONFIG_DVB_DYNAMIC_MINORS=y
 
 #
-# Multimedia drivers
+# Media drivers
 #
-CONFIG_RC_CORE=m
-CONFIG_LIRC=m
+CONFIG_RC_CORE=y
 CONFIG_RC_MAP=m
-# CONFIG_IR_NEC_DECODER is not set
-# CONFIG_IR_RC5_DECODER is not set
-# CONFIG_IR_RC6_DECODER is not set
-# CONFIG_IR_JVC_DECODER is not set
-# CONFIG_IR_SONY_DECODER is not set
-# CONFIG_IR_RC5_SZ_DECODER is not set
-# CONFIG_IR_MCE_KBD_DECODER is not set
-# CONFIG_IR_LIRC_CODEC is not set
+CONFIG_RC_DECODERS=y
+CONFIG_LIRC=m
+CONFIG_IR_LIRC_CODEC=m
+CONFIG_IR_NEC_DECODER=m
+CONFIG_IR_RC5_DECODER=m
+CONFIG_IR_RC6_DECODER=m
+CONFIG_IR_JVC_DECODER=m
+CONFIG_IR_SONY_DECODER=m
+CONFIG_IR_RC5_SZ_DECODER=m
+CONFIG_IR_SANYO_DECODER=m
+CONFIG_IR_MCE_KBD_DECODER=m
+CONFIG_RC_DEVICES=y
 # CONFIG_RC_ATI_REMOTE is not set
-# CONFIG_IR_IMON is not set
-# CONFIG_IR_MCEUSB is not set
-# CONFIG_IR_REDRAT3 is not set
-# CONFIG_IR_STREAMZAP is not set
-# CONFIG_RC_LOOPBACK is not set
-CONFIG_MEDIA_ATTACH=y
-CONFIG_MEDIA_TUNER=m
-# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
-CONFIG_MEDIA_TUNER_SIMPLE=m
-CONFIG_MEDIA_TUNER_TDA8290=m
-CONFIG_MEDIA_TUNER_TDA827X=m
-CONFIG_MEDIA_TUNER_TDA18271=m
-CONFIG_MEDIA_TUNER_TDA9887=m
-CONFIG_MEDIA_TUNER_TEA5761=m
-CONFIG_MEDIA_TUNER_TEA5767=m
-CONFIG_MEDIA_TUNER_MT20XX=m
-CONFIG_MEDIA_TUNER_XC2028=m
-CONFIG_MEDIA_TUNER_XC5000=m
-CONFIG_MEDIA_TUNER_XC4000=m
-CONFIG_MEDIA_TUNER_MC44S803=m
-CONFIG_VIDEO_V4L2=m
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
-# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set
-CONFIG_VIDEO_IR_I2C=m
-
-#
-# Encoders, decoders, sensors and other helper chips
-#
-
-#
-# Audio decoders, processors and mixers
-#
-# CONFIG_VIDEO_TVAUDIO is not set
-# CONFIG_VIDEO_TDA7432 is not set
-# CONFIG_VIDEO_TDA9840 is not set
-# CONFIG_VIDEO_TEA6415C is not set
-# CONFIG_VIDEO_TEA6420 is not set
-# CONFIG_VIDEO_MSP3400 is not set
-# CONFIG_VIDEO_CS5345 is not set
-# CONFIG_VIDEO_CS53L32A is not set
-# CONFIG_VIDEO_TLV320AIC23B is not set
-# CONFIG_VIDEO_WM8775 is not set
-# CONFIG_VIDEO_WM8739 is not set
-# CONFIG_VIDEO_VP27SMPX is not set
+CONFIG_IR_IMON=m
+CONFIG_IR_MCEUSB=m
+CONFIG_IR_REDRAT3=m
+CONFIG_IR_STREAMZAP=m
+CONFIG_IR_IGUANA=m
+CONFIG_IR_TTUSBIR=m
+CONFIG_RC_LOOPBACK=m
+CONFIG_IR_GPIO_CIR=m
+CONFIG_MEDIA_USB_SUPPORT=y
 
 #
-# RDS decoders
-#
-# CONFIG_VIDEO_SAA6588 is not set
-
-#
-# Video decoders
-#
-# CONFIG_VIDEO_ADV7180 is not set
-# CONFIG_VIDEO_BT819 is not set
-# CONFIG_VIDEO_BT856 is not set
-# CONFIG_VIDEO_BT866 is not set
-# CONFIG_VIDEO_KS0127 is not set
-# CONFIG_VIDEO_SAA7110 is not set
-# CONFIG_VIDEO_SAA711X is not set
-# CONFIG_VIDEO_SAA7191 is not set
-# CONFIG_VIDEO_TVP514X is not set
-# CONFIG_VIDEO_TVP5150 is not set
-# CONFIG_VIDEO_TVP7002 is not set
-# CONFIG_VIDEO_VPX3220 is not set
-
+# Webcam devices
 #
-# Video and audio decoders
-#
-# CONFIG_VIDEO_SAA717X is not set
-# CONFIG_VIDEO_CX25840 is not set
-
-#
-# MPEG video encoders
-#
-# CONFIG_VIDEO_CX2341X is not set
-
-#
-# Video encoders
-#
-# CONFIG_VIDEO_SAA7127 is not set
-# CONFIG_VIDEO_SAA7185 is not set
-# CONFIG_VIDEO_ADV7170 is not set
-# CONFIG_VIDEO_ADV7175 is not set
-# CONFIG_VIDEO_ADV7343 is not set
-# CONFIG_VIDEO_AK881X is not set
-
-#
-# Camera sensor devices
-#
-# CONFIG_VIDEO_OV7670 is not set
-# CONFIG_VIDEO_MT9P031 is not set
-# CONFIG_VIDEO_MT9T001 is not set
-# CONFIG_VIDEO_MT9V011 is not set
-# CONFIG_VIDEO_MT9V032 is not set
-# CONFIG_VIDEO_TCM825X is not set
-# CONFIG_VIDEO_SR030PC30 is not set
-# CONFIG_VIDEO_NOON010PC30 is not set
-# CONFIG_VIDEO_M5MOLS is not set
-# CONFIG_VIDEO_S5K6AA is not set
-
-#
-# Flash devices
-#
-# CONFIG_VIDEO_ADP1653 is not set
+CONFIG_USB_VIDEO_CLASS=m
+CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
+CONFIG_USB_GSPCA=m
+CONFIG_USB_M5602=m
+CONFIG_USB_STV06XX=m
+CONFIG_USB_GL860=m
+CONFIG_USB_GSPCA_BENQ=m
+CONFIG_USB_GSPCA_CONEX=m
+CONFIG_USB_GSPCA_CPIA1=m
+CONFIG_USB_GSPCA_ETOMS=m
+CONFIG_USB_GSPCA_FINEPIX=m
+CONFIG_USB_GSPCA_JEILINJ=m
+CONFIG_USB_GSPCA_JL2005BCD=m
+CONFIG_USB_GSPCA_KINECT=m
+CONFIG_USB_GSPCA_KONICA=m
+CONFIG_USB_GSPCA_MARS=m
+CONFIG_USB_GSPCA_MR97310A=m
+CONFIG_USB_GSPCA_NW80X=m
+CONFIG_USB_GSPCA_OV519=m
+CONFIG_USB_GSPCA_OV534=m
+CONFIG_USB_GSPCA_OV534_9=m
+CONFIG_USB_GSPCA_PAC207=m
+CONFIG_USB_GSPCA_PAC7302=m
+CONFIG_USB_GSPCA_PAC7311=m
+CONFIG_USB_GSPCA_SE401=m
+CONFIG_USB_GSPCA_SN9C2028=m
+CONFIG_USB_GSPCA_SN9C20X=m
+CONFIG_USB_GSPCA_SONIXB=m
+CONFIG_USB_GSPCA_SONIXJ=m
+CONFIG_USB_GSPCA_SPCA500=m
+CONFIG_USB_GSPCA_SPCA501=m
+CONFIG_USB_GSPCA_SPCA505=m
+CONFIG_USB_GSPCA_SPCA506=m
+CONFIG_USB_GSPCA_SPCA508=m
+CONFIG_USB_GSPCA_SPCA561=m
+CONFIG_USB_GSPCA_SPCA1528=m
+CONFIG_USB_GSPCA_SQ905=m
+CONFIG_USB_GSPCA_SQ905C=m
+CONFIG_USB_GSPCA_SQ930X=m
+CONFIG_USB_GSPCA_STK014=m
+CONFIG_USB_GSPCA_STV0680=m
+CONFIG_USB_GSPCA_SUNPLUS=m
+CONFIG_USB_GSPCA_T613=m
+# CONFIG_USB_GSPCA_TOPRO is not set
+CONFIG_USB_GSPCA_TV8532=m
+CONFIG_USB_GSPCA_VC032X=m
+CONFIG_USB_GSPCA_VICAM=m
+CONFIG_USB_GSPCA_XIRLINK_CIT=m
+CONFIG_USB_GSPCA_ZC3XX=m
+CONFIG_USB_PWC=m
+# CONFIG_USB_PWC_DEBUG is not set
+CONFIG_USB_PWC_INPUT_EVDEV=y
+CONFIG_VIDEO_CPIA2=m
+CONFIG_USB_ZR364XX=m
+CONFIG_USB_STKWEBCAM=m
+CONFIG_USB_S2255=m
+CONFIG_USB_SN9C102=m
+
+#
+# Analog TV USB devices
+#
+CONFIG_VIDEO_PVRUSB2=m
+CONFIG_VIDEO_PVRUSB2_SYSFS=y
+CONFIG_VIDEO_PVRUSB2_DVB=y
+# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
+CONFIG_VIDEO_HDPVR=m
+CONFIG_VIDEO_TLG2300=m
+CONFIG_VIDEO_USBVISION=m
+CONFIG_VIDEO_STK1160=m
+# CONFIG_VIDEO_STK1160_AC97 is not set
+
+#
+# Analog/digital TV USB devices
+#
+CONFIG_VIDEO_AU0828=m
+CONFIG_VIDEO_AU0828_V4L2=y
+CONFIG_VIDEO_CX231XX=m
+CONFIG_VIDEO_CX231XX_RC=y
+CONFIG_VIDEO_CX231XX_ALSA=m
+CONFIG_VIDEO_CX231XX_DVB=m
+CONFIG_VIDEO_TM6000=m
+CONFIG_VIDEO_TM6000_ALSA=m
+CONFIG_VIDEO_TM6000_DVB=m
+
+#
+# Digital TV USB devices
+#
+CONFIG_DVB_USB=m
+# CONFIG_DVB_USB_DEBUG is not set
+CONFIG_DVB_USB_A800=m
+CONFIG_DVB_USB_DIBUSB_MB=m
+CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y
+CONFIG_DVB_USB_DIBUSB_MC=m
+CONFIG_DVB_USB_DIB0700=m
+CONFIG_DVB_USB_UMT_010=m
+CONFIG_DVB_USB_CXUSB=m
+CONFIG_DVB_USB_M920X=m
+CONFIG_DVB_USB_DIGITV=m
+CONFIG_DVB_USB_VP7045=m
+CONFIG_DVB_USB_VP702X=m
+CONFIG_DVB_USB_GP8PSK=m
+CONFIG_DVB_USB_NOVA_T_USB2=m
+CONFIG_DVB_USB_TTUSB2=m
+CONFIG_DVB_USB_DTT200U=m
+CONFIG_DVB_USB_OPERA1=m
+CONFIG_DVB_USB_AF9005=m
+CONFIG_DVB_USB_AF9005_REMOTE=m
+CONFIG_DVB_USB_PCTV452E=m
+CONFIG_DVB_USB_DW2102=m
+CONFIG_DVB_USB_CINERGY_T2=m
+CONFIG_DVB_USB_DTV5100=m
+CONFIG_DVB_USB_FRIIO=m
+CONFIG_DVB_USB_AZ6027=m
+CONFIG_DVB_USB_TECHNISAT_USB2=m
+CONFIG_DVB_USB_V2=m
+CONFIG_DVB_USB_AF9015=m
+CONFIG_DVB_USB_AF9035=m
+CONFIG_DVB_USB_ANYSEE=m
+CONFIG_DVB_USB_AU6610=m
+CONFIG_DVB_USB_AZ6007=m
+CONFIG_DVB_USB_CE6230=m
+CONFIG_DVB_USB_EC168=m
+CONFIG_DVB_USB_GL861=m
+CONFIG_DVB_USB_IT913X=m
+CONFIG_DVB_USB_LME2510=m
+CONFIG_DVB_USB_MXL111SF=m
+CONFIG_DVB_USB_RTL28XXU=m
+CONFIG_DVB_USB_DVBSKY=m
+CONFIG_DVB_TTUSB_BUDGET=m
+CONFIG_DVB_TTUSB_DEC=m
+CONFIG_SMS_USB_DRV=m
+CONFIG_DVB_B2C2_FLEXCOP_USB=m
+# CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set
+
+#
+# Webcam, TV (analog/digital) USB devices
+#
+CONFIG_VIDEO_EM28XX=m
+CONFIG_VIDEO_EM28XX_ALSA=m
+CONFIG_VIDEO_EM28XX_DVB=m
+CONFIG_VIDEO_EM28XX_RC=m
+CONFIG_MEDIA_PCI_SUPPORT=y
+
+#
+# Media capture support
+#
+
+#
+# Media capture/analog TV support
+#
+CONFIG_VIDEO_IVTV=m
+CONFIG_VIDEO_IVTV_ALSA=m
+CONFIG_VIDEO_FB_IVTV=m
+CONFIG_VIDEO_HEXIUM_GEMINI=m
+CONFIG_VIDEO_HEXIUM_ORION=m
+CONFIG_VIDEO_MXB=m
+
+#
+# Media capture/analog/hybrid TV support
+#
+CONFIG_VIDEO_CX18=m
+CONFIG_VIDEO_CX18_ALSA=m
+CONFIG_VIDEO_CX23885=m
+CONFIG_MEDIA_ALTERA_CI=m
+CONFIG_VIDEO_CX25821=m
+CONFIG_VIDEO_CX25821_ALSA=m
+CONFIG_VIDEO_CX88=m
+CONFIG_VIDEO_CX88_ALSA=m
+CONFIG_VIDEO_CX88_BLACKBIRD=m
+CONFIG_VIDEO_CX88_DVB=m
+CONFIG_VIDEO_CX88_VP3054=m
+CONFIG_VIDEO_CX88_MPEG=m
+CONFIG_VIDEO_BT848=m
+CONFIG_DVB_BT8XX=m
+CONFIG_VIDEO_SAA7134=m
+CONFIG_VIDEO_SAA7134_ALSA=m
+CONFIG_VIDEO_SAA7134_RC=y
+CONFIG_VIDEO_SAA7134_DVB=m
+CONFIG_VIDEO_SAA7164=m
+
+#
+# Media digital TV PCI Adapters
+#
+CONFIG_DVB_AV7110=m
+CONFIG_DVB_AV7110_OSD=y
+CONFIG_DVB_BUDGET_CORE=m
+CONFIG_DVB_BUDGET=m
+CONFIG_DVB_BUDGET_CI=m
+CONFIG_DVB_BUDGET_AV=m
+CONFIG_DVB_BUDGET_PATCH=m
+CONFIG_DVB_B2C2_FLEXCOP_PCI=m
+# CONFIG_DVB_B2C2_FLEXCOP_PCI_DEBUG is not set
+CONFIG_DVB_PLUTO2=m
+CONFIG_DVB_DM1105=m
+CONFIG_DVB_PT1=m
+CONFIG_MANTIS_CORE=m
+CONFIG_DVB_MANTIS=m
+CONFIG_DVB_HOPPER=m
+CONFIG_DVB_NGENE=m
+# CONFIG_DVB_DDBRIDGE is not set
+CONFIG_V4L_PLATFORM_DRIVERS=y
+CONFIG_VIDEO_CAFE_CCIC=m
+CONFIG_VIDEO_TIMBERDALE=m
+CONFIG_SOC_CAMERA=m
+CONFIG_SOC_CAMERA_PLATFORM=m
+# CONFIG_VIDEO_SH_MOBILE_CSI2 is not set
+# CONFIG_VIDEO_SH_MOBILE_CEU is not set
+CONFIG_V4L_MEM2MEM_DRIVERS=y
+CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m
+CONFIG_VIDEO_SH_VEU=m
+# CONFIG_V4L_TEST_DRIVERS is not set
 
 #
-# Video improvement chips
+# Supported MMC/SDIO adapters
 #
-# CONFIG_VIDEO_UPD64031A is not set
-# CONFIG_VIDEO_UPD64083 is not set
+# CONFIG_SMS_SDIO_DRV is not set
+# CONFIG_MEDIA_PARPORT_SUPPORT is not set
 
 #
-# Miscelaneous helper chips
-#
-# CONFIG_VIDEO_THS7303 is not set
-# CONFIG_VIDEO_M52790 is not set
-# CONFIG_VIDEO_VIVI is not set
-# CONFIG_VIDEO_BT848 is not set
-# CONFIG_VIDEO_BWQCAM is not set
-# CONFIG_VIDEO_CQCAM is not set
-# CONFIG_VIDEO_W9966 is not set
-# CONFIG_VIDEO_CPIA2 is not set
-# CONFIG_VIDEO_ZORAN is not set
-# CONFIG_VIDEO_SAA7134 is not set
-# CONFIG_VIDEO_MXB is not set
-# CONFIG_VIDEO_HEXIUM_ORION is not set
-# CONFIG_VIDEO_HEXIUM_GEMINI is not set
-# CONFIG_VIDEO_TIMBERDALE is not set
-# CONFIG_VIDEO_CX88 is not set
-# CONFIG_VIDEO_CX23885 is not set
-# CONFIG_VIDEO_CX25821 is not set
-# CONFIG_VIDEO_AU0828 is not set
-# CONFIG_VIDEO_IVTV is not set
-# CONFIG_VIDEO_CX18 is not set
-# CONFIG_VIDEO_SAA7164 is not set
-# CONFIG_VIDEO_CAFE_CCIC is not set
-# CONFIG_SOC_CAMERA is not set
-CONFIG_V4L_USB_DRIVERS=y
-# CONFIG_USB_VIDEO_CLASS is not set
-CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
-# CONFIG_USB_GSPCA is not set
-# CONFIG_VIDEO_PVRUSB2 is not set
-# CONFIG_VIDEO_HDPVR is not set
-# CONFIG_VIDEO_EM28XX is not set
-# CONFIG_VIDEO_TLG2300 is not set
-# CONFIG_VIDEO_CX231XX is not set
-# CONFIG_VIDEO_TM6000 is not set
-# CONFIG_VIDEO_USBVISION is not set
-# CONFIG_USB_ET61X251 is not set
-# CONFIG_USB_SN9C102 is not set
-# CONFIG_USB_PWC is not set
-# CONFIG_USB_ZR364XX is not set
-# CONFIG_USB_STKWEBCAM is not set
-# CONFIG_USB_S2255 is not set
-# CONFIG_V4L_MEM2MEM_DRIVERS is not set
-CONFIG_RADIO_ADAPTERS=y
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_I2C_SI4713 is not set
-# CONFIG_RADIO_SI4713 is not set
-# CONFIG_USB_DSBR is not set
-# CONFIG_RADIO_SI470X is not set
-# CONFIG_USB_MR800 is not set
-# CONFIG_RADIO_TEA5764 is not set
-# CONFIG_RADIO_SAA7706H is not set
-# CONFIG_RADIO_TEF6862 is not set
-# CONFIG_RADIO_TIMBERDALE is not set
-# CONFIG_RADIO_WL1273 is not set
-
-#
-# Texas Instruments WL128x FM driver (ST based)
-#
-# CONFIG_RADIO_WL128X is not set
-CONFIG_DVB_MAX_ADAPTERS=8
-# CONFIG_DVB_DYNAMIC_MINORS is not set
-CONFIG_DVB_CAPTURE_DRIVERS=y
-
-#
-# Supported SAA7146 based PCI Adapters
+# Supported FireWire (IEEE 1394) Adapters
 #
-# CONFIG_TTPCI_EEPROM is not set
-# CONFIG_DVB_AV7110 is not set
-# CONFIG_DVB_BUDGET_CORE is not set
+CONFIG_DVB_FIREDTV=m
+CONFIG_DVB_FIREDTV_INPUT=y
+CONFIG_MEDIA_COMMON_OPTIONS=y
 
 #
-# Supported USB Adapters
+# common driver options
 #
-# CONFIG_DVB_USB is not set
-# CONFIG_DVB_TTUSB_BUDGET is not set
-# CONFIG_DVB_TTUSB_DEC is not set
-# CONFIG_SMS_SIANO_MDTV is not set
+CONFIG_VIDEO_CX2341X=m
+CONFIG_VIDEO_BTCX=m
+CONFIG_VIDEO_TVEEPROM=m
+CONFIG_CYPRESS_FIRMWARE=m
+CONFIG_DVB_B2C2_FLEXCOP=m
+CONFIG_VIDEO_SAA7146=m
+CONFIG_VIDEO_SAA7146_VV=m
+CONFIG_SMS_SIANO_MDTV=m
+CONFIG_SMS_SIANO_RC=y
+# CONFIG_SMS_SIANO_DEBUGFS is not set
 
 #
-# Supported FlexCopII (B2C2) Adapters
+# Media ancillary drivers (tuners, sensors, i2c, frontends)
 #
-# CONFIG_DVB_B2C2_FLEXCOP is not set
+CONFIG_MEDIA_SUBDRV_AUTOSELECT=y
+CONFIG_MEDIA_ATTACH=y
+CONFIG_VIDEO_IR_I2C=y
 
 #
-# Supported BT878 Adapters
+# Audio decoders, processors and mixers
 #
+CONFIG_VIDEO_TVAUDIO=m
+CONFIG_VIDEO_TDA7432=m
+CONFIG_VIDEO_TDA9840=m
+CONFIG_VIDEO_TEA6415C=m
+CONFIG_VIDEO_TEA6420=m
+CONFIG_VIDEO_MSP3400=m
+CONFIG_VIDEO_CS5345=m
+CONFIG_VIDEO_CS53L32A=m
+CONFIG_VIDEO_WM8775=m
+CONFIG_VIDEO_WM8739=m
+CONFIG_VIDEO_VP27SMPX=m
 
 #
-# Supported Pluto2 Adapters
+# RDS decoders
 #
-# CONFIG_DVB_PLUTO2 is not set
+CONFIG_VIDEO_SAA6588=m
 
 #
-# Supported SDMC DM1105 Adapters
+# Video decoders
 #
-# CONFIG_DVB_DM1105 is not set
+CONFIG_VIDEO_ADV7180=m
+CONFIG_VIDEO_SAA711X=m
+CONFIG_VIDEO_TVP5150=m
 
 #
-# Supported FireWire (IEEE 1394) Adapters
+# Video and audio decoders
 #
-# CONFIG_DVB_FIREDTV is not set
+CONFIG_VIDEO_SAA717X=m
+CONFIG_VIDEO_CX25840=m
 
 #
-# Supported Earthsoft PT1 Adapters
+# Video encoders
 #
-# CONFIG_DVB_PT1 is not set
+CONFIG_VIDEO_SAA7127=m
 
 #
-# Supported Mantis Adapters
+# Camera sensor devices
 #
-# CONFIG_MANTIS_CORE is not set
+CONFIG_VIDEO_OV7670=m
+CONFIG_VIDEO_MT9V011=m
 
 #
-# Supported nGene Adapters
+# Flash devices
 #
-# CONFIG_DVB_NGENE is not set
 
 #
-# Supported ddbridge ('Octopus') Adapters
+# Video improvement chips
 #
-# CONFIG_DVB_DDBRIDGE is not set
+CONFIG_VIDEO_UPD64031A=m
+CONFIG_VIDEO_UPD64083=m
 
 #
-# Supported DVB Frontends
+# Miscelaneous helper chips
 #
-# CONFIG_DVB_FE_CUSTOMISE is not set
+CONFIG_VIDEO_M52790=m
+
+#
+# Sensors used on soc_camera driver
+#
+
+#
+# soc_camera sensor drivers
+#
+CONFIG_SOC_CAMERA_IMX074=m
+CONFIG_SOC_CAMERA_MT9M001=m
+CONFIG_SOC_CAMERA_MT9M111=m
+CONFIG_SOC_CAMERA_MT9T031=m
+CONFIG_SOC_CAMERA_MT9T112=m
+CONFIG_SOC_CAMERA_MT9V022=m
+CONFIG_SOC_CAMERA_OV2640=m
+CONFIG_SOC_CAMERA_OV5642=m
+CONFIG_SOC_CAMERA_OV6650=m
+CONFIG_SOC_CAMERA_OV772X=m
+CONFIG_SOC_CAMERA_OV9640=m
+CONFIG_SOC_CAMERA_OV9740=m
+CONFIG_SOC_CAMERA_RJ54N1=m
+CONFIG_SOC_CAMERA_TW9910=m
+CONFIG_MEDIA_TUNER=y
+CONFIG_MEDIA_TUNER_SIMPLE=y
+CONFIG_MEDIA_TUNER_TDA8290=y
+CONFIG_MEDIA_TUNER_TDA827X=y
+CONFIG_MEDIA_TUNER_TDA18271=y
+CONFIG_MEDIA_TUNER_TDA9887=y
+CONFIG_MEDIA_TUNER_MT20XX=y
+CONFIG_MEDIA_TUNER_MT2060=m
+CONFIG_MEDIA_TUNER_MT2063=m
+CONFIG_MEDIA_TUNER_MT2266=m
+CONFIG_MEDIA_TUNER_MT2131=m
+CONFIG_MEDIA_TUNER_QT1010=m
+CONFIG_MEDIA_TUNER_XC2028=y
+CONFIG_MEDIA_TUNER_XC5000=y
+CONFIG_MEDIA_TUNER_XC4000=y
+CONFIG_MEDIA_TUNER_MXL5005S=m
+CONFIG_MEDIA_TUNER_MXL5007T=m
+CONFIG_MEDIA_TUNER_MC44S803=y
+CONFIG_MEDIA_TUNER_MAX2165=m
+CONFIG_MEDIA_TUNER_TDA18218=m
+CONFIG_MEDIA_TUNER_FC0011=m
+CONFIG_MEDIA_TUNER_FC0012=m
+CONFIG_MEDIA_TUNER_FC0013=m
+CONFIG_MEDIA_TUNER_TDA18212=m
+CONFIG_MEDIA_TUNER_E4000=m
+CONFIG_MEDIA_TUNER_FC2580=m
+CONFIG_MEDIA_TUNER_TUA9001=m
+CONFIG_MEDIA_TUNER_IT913X=m
+CONFIG_MEDIA_TUNER_R820T=m
 
 #
 # Multistandard (satellite) frontends
 #
+CONFIG_DVB_STB0899=m
+CONFIG_DVB_STB6100=m
+CONFIG_DVB_STV090x=m
+CONFIG_DVB_STV6110x=m
 
 #
 # Multistandard (cable + terrestrial) frontends
 #
+CONFIG_DVB_DRXK=m
+CONFIG_DVB_TDA18271C2DD=m
 
 #
 # DVB-S (satellite) frontends
 #
+CONFIG_DVB_CX24110=m
+CONFIG_DVB_CX24123=m
+CONFIG_DVB_MT312=m
+CONFIG_DVB_ZL10036=m
+CONFIG_DVB_ZL10039=m
+CONFIG_DVB_S5H1420=m
+CONFIG_DVB_STV0288=m
+CONFIG_DVB_STB6000=m
+CONFIG_DVB_STV0299=m
+CONFIG_DVB_STV6110=m
+CONFIG_DVB_STV0900=m
+CONFIG_DVB_TDA8083=m
+CONFIG_DVB_TDA10086=m
+CONFIG_DVB_TDA8261=m
+CONFIG_DVB_VES1X93=m
+CONFIG_DVB_TUNER_ITD1000=m
+CONFIG_DVB_TUNER_CX24113=m
+CONFIG_DVB_TDA826X=m
+CONFIG_DVB_TUA6100=m
+CONFIG_DVB_CX24116=m
+CONFIG_DVB_M88DS3103=m
+CONFIG_DVB_M88DC2800=m
+CONFIG_DVB_SI21XX=m
+CONFIG_DVB_TS2020=m
+CONFIG_DVB_DS3000=m
+CONFIG_DVB_MB86A16=m
+CONFIG_DVB_TDA10071=m
 
 #
 # DVB-T (terrestrial) frontends
 #
+CONFIG_DVB_SP8870=m
+CONFIG_DVB_SP887X=m
+CONFIG_DVB_CX22700=m
+CONFIG_DVB_CX22702=m
+CONFIG_DVB_DRXD=m
+CONFIG_DVB_L64781=m
+CONFIG_DVB_TDA1004X=m
+CONFIG_DVB_NXT6000=m
+CONFIG_DVB_MT352=m
+CONFIG_DVB_ZL10353=m
+CONFIG_DVB_DIB3000MB=m
+CONFIG_DVB_DIB3000MC=m
+CONFIG_DVB_DIB7000M=m
+CONFIG_DVB_DIB7000P=m
+CONFIG_DVB_TDA10048=m
+CONFIG_DVB_AF9013=m
+CONFIG_DVB_EC100=m
+CONFIG_DVB_STV0367=m
+CONFIG_DVB_CXD2820R=m
+CONFIG_DVB_RTL2830=m
+CONFIG_DVB_RTL2832=m
 
 #
 # DVB-C (cable) frontends
 #
+CONFIG_DVB_VES1820=m
+CONFIG_DVB_TDA10021=m
+CONFIG_DVB_TDA10023=m
+CONFIG_DVB_STV0297=m
 
 #
 # ATSC (North American/Korean Terrestrial/Cable DTV) frontends
 #
+CONFIG_DVB_NXT200X=m
+CONFIG_DVB_OR51211=m
+CONFIG_DVB_OR51132=m
+CONFIG_DVB_BCM3510=m
+CONFIG_DVB_LGDT330X=m
+CONFIG_DVB_LGDT3305=m
+CONFIG_DVB_LG2160=m
+CONFIG_DVB_S5H1409=m
+CONFIG_DVB_AU8522=m
+CONFIG_DVB_AU8522_DTV=m
+CONFIG_DVB_AU8522_V4L=m
+CONFIG_DVB_S5H1411=m
 
 #
 # ISDB-T (terrestrial) frontends
 #
+CONFIG_DVB_S921=m
+CONFIG_DVB_DIB8000=m
+CONFIG_DVB_MB86A20S=m
 
 #
 # Digital terrestrial only tuners/PLL
 #
+CONFIG_DVB_PLL=m
+CONFIG_DVB_TUNER_DIB0070=m
+CONFIG_DVB_TUNER_DIB0090=m
 
 #
 # SEC control devices for DVB-S
 #
+CONFIG_DVB_LNBP21=m
+CONFIG_DVB_LNBP22=m
+CONFIG_DVB_ISL6405=m
+CONFIG_DVB_ISL6421=m
+CONFIG_DVB_ISL6423=m
+CONFIG_DVB_A8293=m
+CONFIG_DVB_LGS8GXX=m
+CONFIG_DVB_ATBM8830=m
+CONFIG_DVB_TDA665x=m
+CONFIG_DVB_IX2505V=m
+CONFIG_DVB_IT913X_FE=m
+CONFIG_DVB_M88RS2000=m
+CONFIG_DVB_AF9033=m
 
 #
 # Tools to develop new frontends
@@ -2872,119 +3446,107 @@ CONFIG_DVB_CAPTURE_DRIVERS=y
 CONFIG_VGA_ARB=y
 CONFIG_VGA_ARB_MAX_GPUS=16
 CONFIG_DRM=m
-CONFIG_DRM_TTM=m
-CONFIG_DRM_TDFX=m
-CONFIG_DRM_R128=m
+CONFIG_DRM_USB=m
+CONFIG_DRM_KMS_HELPER=m
+# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
+
+#
+# I2C encoder or helper chips
+#
+CONFIG_DRM_I2C_CH7006=m
+CONFIG_DRM_I2C_SIL164=m
+CONFIG_DRM_I2C_NXP_TDA998X=m
+# CONFIG_DRM_TDFX is not set
+# CONFIG_DRM_R128 is not set
 # CONFIG_DRM_RADEON is not set
-CONFIG_DRM_MGA=m
-CONFIG_DRM_VIA=m
-CONFIG_DRM_SAVAGE=m
-CONFIG_DRM_VMWGFX=m
-CONFIG_STUB_POULSBO=m
-CONFIG_VGASTATE=m
-CONFIG_VIDEO_OUTPUT_CONTROL=m
+# CONFIG_DRM_NOUVEAU is not set
+# CONFIG_DRM_MGA is not set
+# CONFIG_DRM_VIA is not set
+# CONFIG_DRM_SAVAGE is not set
+# CONFIG_DRM_VMWGFX is not set
+CONFIG_DRM_UDL=m
+# CONFIG_DRM_AST is not set
+# CONFIG_DRM_MGAG200 is not set
+# CONFIG_DRM_CIRRUS_QEMU is not set
+# CONFIG_DRM_TILCDC is not set
+# CONFIG_DRM_QXL is not set
+# CONFIG_VGASTATE is not set
+# CONFIG_VIDEO_OUTPUT_CONTROL is not set
+CONFIG_HDMI=y
 CONFIG_FB=y
-CONFIG_FIRMWARE_EDID=y
-CONFIG_FB_DDC=m
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
 # CONFIG_FB_BOOT_VESA_SUPPORT is not set
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
+CONFIG_FB_CFB_FILLRECT=m
+CONFIG_FB_CFB_COPYAREA=m
+CONFIG_FB_CFB_IMAGEBLIT=m
 # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
 CONFIG_FB_SYS_FILLRECT=m
 CONFIG_FB_SYS_COPYAREA=m
 CONFIG_FB_SYS_IMAGEBLIT=m
 # CONFIG_FB_FOREIGN_ENDIAN is not set
 CONFIG_FB_SYS_FOPS=m
-# CONFIG_FB_WMT_GE_ROPS is not set
 CONFIG_FB_DEFERRED_IO=y
-CONFIG_FB_SVGALIB=m
+# CONFIG_FB_SVGALIB is not set
 # CONFIG_FB_MACMODES is not set
-CONFIG_FB_BACKLIGHT=y
+# CONFIG_FB_BACKLIGHT is not set
 CONFIG_FB_MODE_HELPERS=y
-CONFIG_FB_TILEBLITTING=y
+# CONFIG_FB_TILEBLITTING is not set
 
 #
 # Frame buffer hardware drivers
 #
-CONFIG_FB_CIRRUS=m
-CONFIG_FB_PM2=m
-CONFIG_FB_PM2_FIFO_DISCONNECT=y
-CONFIG_FB_CYBER2000=m
-CONFIG_FB_CYBER2000_DDC=y
-CONFIG_FB_ASILIANT=y
+# CONFIG_FB_CIRRUS is not set
+# CONFIG_FB_PM2 is not set
+# CONFIG_FB_CYBER2000 is not set
+# CONFIG_FB_ASILIANT is not set
 # CONFIG_FB_IMSTT is not set
-CONFIG_FB_UVESA=m
+# CONFIG_FB_UVESA is not set
 # CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_NVIDIA=m
-CONFIG_FB_NVIDIA_I2C=y
-# CONFIG_FB_NVIDIA_DEBUG is not set
-CONFIG_FB_NVIDIA_BACKLIGHT=y
-CONFIG_FB_RIVA=m
-CONFIG_FB_RIVA_I2C=y
-# CONFIG_FB_RIVA_DEBUG is not set
-CONFIG_FB_RIVA_BACKLIGHT=y
-CONFIG_FB_MATROX=m
-CONFIG_FB_MATROX_MILLENIUM=y
-CONFIG_FB_MATROX_MYSTIQUE=y
-CONFIG_FB_MATROX_G=y
-CONFIG_FB_MATROX_I2C=m
-CONFIG_FB_MATROX_MAVEN=m
-CONFIG_FB_RADEON=m
-CONFIG_FB_RADEON_I2C=y
-CONFIG_FB_RADEON_BACKLIGHT=y
-# CONFIG_FB_RADEON_DEBUG is not set
-CONFIG_FB_ATY128=m
-CONFIG_FB_ATY128_BACKLIGHT=y
-CONFIG_FB_ATY=m
-CONFIG_FB_ATY_CT=y
-# CONFIG_FB_ATY_GENERIC_LCD is not set
-CONFIG_FB_ATY_GX=y
-CONFIG_FB_ATY_BACKLIGHT=y
-CONFIG_FB_S3=m
-CONFIG_FB_S3_DDC=y
+# CONFIG_FB_NVIDIA is not set
+# CONFIG_FB_RIVA is not set
+# CONFIG_FB_I740 is not set
+# CONFIG_FB_MATROX is not set
+# CONFIG_FB_RADEON is not set
+# CONFIG_FB_ATY128 is not set
+# CONFIG_FB_ATY is not set
+# CONFIG_FB_S3 is not set
 # CONFIG_FB_SAVAGE is not set
-CONFIG_FB_SIS=m
-CONFIG_FB_SIS_300=y
-CONFIG_FB_SIS_315=y
-CONFIG_FB_NEOMAGIC=m
-CONFIG_FB_KYRO=m
-CONFIG_FB_3DFX=m
-CONFIG_FB_3DFX_ACCEL=y
-CONFIG_FB_3DFX_I2C=y
-CONFIG_FB_VOODOO1=m
-CONFIG_FB_VT8623=m
-CONFIG_FB_TRIDENT=m
-CONFIG_FB_ARK=m
-CONFIG_FB_PM3=m
+# CONFIG_FB_SIS is not set
+# CONFIG_FB_NEOMAGIC is not set
+# CONFIG_FB_KYRO is not set
+# CONFIG_FB_3DFX is not set
+# CONFIG_FB_VOODOO1 is not set
+# CONFIG_FB_VT8623 is not set
+# CONFIG_FB_TRIDENT is not set
+# CONFIG_FB_ARK is not set
+# CONFIG_FB_PM3 is not set
 # CONFIG_FB_CARMINE is not set
-CONFIG_FB_TMIO=m
-CONFIG_FB_TMIO_ACCELL=y
-CONFIG_FB_SM501=m
+# CONFIG_FB_TMIO is not set
+# CONFIG_FB_SM501 is not set
 CONFIG_FB_SMSCUFX=m
 # CONFIG_FB_UDL is not set
+# CONFIG_FB_GOLDFISH is not set
 # CONFIG_FB_VIRTUAL is not set
-CONFIG_FB_METRONOME=m
+# CONFIG_FB_METRONOME is not set
 # CONFIG_FB_MB862XX is not set
 # CONFIG_FB_BROADSHEET is not set
+# CONFIG_FB_AUO_K190X is not set
+# CONFIG_FB_SIMPLE is not set
+# CONFIG_EXYNOS_VIDEO is not set
 CONFIG_BACKLIGHT_LCD_SUPPORT=y
 CONFIG_LCD_CLASS_DEVICE=m
 CONFIG_LCD_PLATFORM=m
 CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_GENERIC=m
-CONFIG_BACKLIGHT_ADP8860=m
-CONFIG_BACKLIGHT_ADP8870=m
-CONFIG_BACKLIGHT_88PM860X=m
-CONFIG_BACKLIGHT_PCF50633=m
-
-#
-# Display device support
-#
-CONFIG_DISPLAY_SUPPORT=m
-
-#
-# Display hardware drivers
-#
+# CONFIG_BACKLIGHT_GENERIC is not set
+# CONFIG_BACKLIGHT_LM3533 is not set
+# CONFIG_BACKLIGHT_PWM is not set
+# CONFIG_BACKLIGHT_ADP8860 is not set
+# CONFIG_BACKLIGHT_ADP8870 is not set
+# CONFIG_BACKLIGHT_88PM860X is not set
+# CONFIG_BACKLIGHT_LM3630 is not set
+# CONFIG_BACKLIGHT_LM3639 is not set
+# CONFIG_BACKLIGHT_LP855X is not set
 
 #
 # Console display driver support
@@ -2997,9 +3559,10 @@ CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
 CONFIG_FONT_8x8=y
 CONFIG_FONT_8x16=y
 CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
 CONFIG_LOGO_LINUX_CLUT224=y
+CONFIG_FB_SSD1307=m
 CONFIG_SOUND=m
 CONFIG_SOUND_OSS_CORE=y
 CONFIG_SOUND_OSS_CORE_PRECLAIM=y
@@ -3008,6 +3571,7 @@ CONFIG_SND_TIMER=m
 CONFIG_SND_PCM=m
 CONFIG_SND_HWDEP=m
 CONFIG_SND_RAWMIDI=m
+CONFIG_SND_COMPRESS_OFFLOAD=m
 CONFIG_SND_JACK=y
 CONFIG_SND_SEQUENCER=m
 CONFIG_SND_SEQ_DUMMY=m
@@ -3021,9 +3585,12 @@ CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
 CONFIG_SND_DYNAMIC_MINORS=y
 # CONFIG_SND_SUPPORT_OLD_API is not set
 CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
+CONFIG_SND_VERBOSE_PRINTK=y
+CONFIG_SND_DEBUG=y
+# CONFIG_SND_DEBUG_VERBOSE is not set
+CONFIG_SND_PCM_XRUN_DEBUG=y
 CONFIG_SND_VMASTER=y
+CONFIG_SND_KCTL_JACK=y
 CONFIG_SND_RAWMIDI_SEQ=m
 CONFIG_SND_OPL3_LIB_SEQ=m
 # CONFIG_SND_OPL4_LIB_SEQ is not set
@@ -3043,12 +3610,12 @@ CONFIG_SND_SERIAL_U16550=m
 CONFIG_SND_MPU401=m
 CONFIG_SND_PORTMAN2X4=m
 CONFIG_SND_AC97_POWER_SAVE=y
-CONFIG_SND_AC97_POWER_SAVE_DEFAULT=60
+CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0
 CONFIG_SND_TEA575X=m
 CONFIG_SND_PCI=y
 CONFIG_SND_AD1889=m
 CONFIG_SND_ALS300=m
-# CONFIG_SND_ALI5451 is not set
+CONFIG_SND_ALI5451=m
 CONFIG_SND_ATIIXP=m
 CONFIG_SND_ATIIXP_MODEM=m
 CONFIG_SND_AU8810=m
@@ -3096,11 +3663,10 @@ CONFIG_SND_HDA_PREALLOC_SIZE=64
 CONFIG_SND_HDA_HWDEP=y
 CONFIG_SND_HDA_RECONFIG=y
 CONFIG_SND_HDA_INPUT_BEEP=y
-CONFIG_SND_HDA_INPUT_BEEP_MODE=2
+CONFIG_SND_HDA_INPUT_BEEP_MODE=1
 CONFIG_SND_HDA_INPUT_JACK=y
-CONFIG_SND_HDA_PATCH_LOADER=y
+# CONFIG_SND_HDA_PATCH_LOADER is not set
 CONFIG_SND_HDA_CODEC_REALTEK=y
-CONFIG_SND_HDA_ENABLE_REALTEK_QUIRKS=y
 CONFIG_SND_HDA_CODEC_ANALOG=y
 CONFIG_SND_HDA_CODEC_SIGMATEL=y
 CONFIG_SND_HDA_CODEC_VIA=y
@@ -3109,11 +3675,11 @@ CONFIG_SND_HDA_CODEC_CIRRUS=y
 CONFIG_SND_HDA_CODEC_CONEXANT=y
 CONFIG_SND_HDA_CODEC_CA0110=y
 CONFIG_SND_HDA_CODEC_CA0132=y
+# CONFIG_SND_HDA_CODEC_CA0132_DSP is not set
 CONFIG_SND_HDA_CODEC_CMEDIA=y
 CONFIG_SND_HDA_CODEC_SI3054=y
 CONFIG_SND_HDA_GENERIC=y
-CONFIG_SND_HDA_POWER_SAVE=y
-CONFIG_SND_HDA_POWER_SAVE_DEFAULT=60
+CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
 CONFIG_SND_HDSP=m
 CONFIG_SND_HDSPM=m
 CONFIG_SND_ICE1712=m
@@ -3149,12 +3715,11 @@ CONFIG_SND_USB_6FIRE=m
 CONFIG_SND_FIREWIRE=y
 CONFIG_SND_FIREWIRE_LIB=m
 CONFIG_SND_FIREWIRE_SPEAKERS=m
-CONFIG_SND_ISIGHT=m
-CONFIG_SND_PCMCIA=y
-CONFIG_SND_VXPOCKET=m
-CONFIG_SND_PDAUDIOCF=m
+# CONFIG_SND_ISIGHT is not set
+# CONFIG_SND_SCS1X is not set
 CONFIG_SND_SOC=m
-CONFIG_SND_SOC_CACHE_LZO=y
+CONFIG_SND_ATMEL_SOC=m
+CONFIG_SND_DESIGNWARE_I2S=m
 CONFIG_SND_KIRKWOOD_SOC=m
 CONFIG_SND_KIRKWOOD_SOC_I2S=m
 CONFIG_SND_KIRKWOOD_SOC_OPENRD=m
@@ -3163,98 +3728,105 @@ CONFIG_SND_SOC_I2C_AND_SPI=m
 # CONFIG_SND_SOC_ALL_CODECS is not set
 CONFIG_SND_SOC_ALC5623=m
 CONFIG_SND_SOC_CS42L51=m
+CONFIG_SND_SIMPLE_CARD=m
 # CONFIG_SOUND_PRIME is not set
 CONFIG_AC97_BUS=m
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=y
-# CONFIG_HIDRAW is not set
 
 #
-# USB Input Devices
+# HID support
 #
-CONFIG_USB_HID=m
-# CONFIG_HID_PID is not set
-CONFIG_USB_HIDDEV=y
+CONFIG_HID=y
+# CONFIG_HID_BATTERY_STRENGTH is not set
+CONFIG_HIDRAW=y
+# CONFIG_UHID is not set
+CONFIG_HID_GENERIC=y
 
 #
 # Special HID drivers
 #
-CONFIG_HID_A4TECH=m
-CONFIG_HID_ACRUX=m
-# CONFIG_HID_ACRUX_FF is not set
-CONFIG_HID_APPLE=m
-CONFIG_HID_BELKIN=m
-CONFIG_HID_CHERRY=m
-CONFIG_HID_CHICONY=m
-CONFIG_HID_PRODIKEYS=m
-CONFIG_HID_CYPRESS=m
-CONFIG_HID_DRAGONRISE=m
-# CONFIG_DRAGONRISE_FF is not set
+CONFIG_HID_A4TECH=y
+# CONFIG_HID_ACRUX is not set
+CONFIG_HID_APPLE=y
+# CONFIG_HID_APPLEIR is not set
+CONFIG_HID_AUREAL=m
+CONFIG_HID_BELKIN=y
+CONFIG_HID_CHERRY=y
+CONFIG_HID_CHICONY=y
+# CONFIG_HID_PRODIKEYS is not set
+CONFIG_HID_CYPRESS=y
+# CONFIG_HID_DRAGONRISE is not set
 # CONFIG_HID_EMS_FF is not set
-CONFIG_HID_ELECOM=m
-CONFIG_HID_EZKEY=m
-CONFIG_HID_HOLTEK=m
-# CONFIG_HOLTEK_FF is not set
+# CONFIG_HID_ELECOM is not set
+CONFIG_HID_EZKEY=y
+# CONFIG_HID_HOLTEK is not set
 CONFIG_HID_KEYTOUCH=m
-CONFIG_HID_KYE=m
-CONFIG_HID_UCLOGIC=m
-CONFIG_HID_WALTOP=m
+CONFIG_HID_KYE=y
+# CONFIG_HID_UCLOGIC is not set
+# CONFIG_HID_WALTOP is not set
 CONFIG_HID_GYRATION=m
+# CONFIG_HID_ICADE is not set
 CONFIG_HID_TWINHAN=m
-CONFIG_HID_KENSINGTON=m
+CONFIG_HID_KENSINGTON=y
 CONFIG_HID_LCPOWER=m
-CONFIG_HID_LOGITECH=m
+CONFIG_HID_LENOVO_TPKBD=m
+CONFIG_HID_LOGITECH=y
 CONFIG_HID_LOGITECH_DJ=m
 # CONFIG_LOGITECH_FF is not set
 # CONFIG_LOGIRUMBLEPAD2_FF is not set
 # CONFIG_LOGIG940_FF is not set
 # CONFIG_LOGIWHEELS_FF is not set
-CONFIG_HID_MAGICMOUSE=m
-CONFIG_HID_MICROSOFT=m
-CONFIG_HID_MONTEREY=m
-CONFIG_HID_MULTITOUCH=m
-CONFIG_HID_NTRIG=m
+# CONFIG_HID_MAGICMOUSE is not set
+CONFIG_HID_MICROSOFT=y
+CONFIG_HID_MONTEREY=y
+# CONFIG_HID_MULTITOUCH is not set
+# CONFIG_HID_NTRIG is not set
 CONFIG_HID_ORTEK=m
-CONFIG_HID_PANTHERLORD=m
-# CONFIG_PANTHERLORD_FF is not set
+# CONFIG_HID_PANTHERLORD is not set
 CONFIG_HID_PETALYNX=m
 CONFIG_HID_PICOLCD=m
 CONFIG_HID_PICOLCD_FB=y
 CONFIG_HID_PICOLCD_BACKLIGHT=y
 CONFIG_HID_PICOLCD_LCD=y
 CONFIG_HID_PICOLCD_LEDS=y
-CONFIG_HID_PRIMAX=m
-CONFIG_HID_QUANTA=m
+CONFIG_HID_PICOLCD_CIR=y
+# CONFIG_HID_PRIMAX is not set
+# CONFIG_HID_PS3REMOTE is not set
 CONFIG_HID_ROCCAT=m
-CONFIG_HID_ROCCAT_COMMON=m
-CONFIG_HID_ROCCAT_ARVO=m
-CONFIG_HID_ROCCAT_KONE=m
-CONFIG_HID_ROCCAT_KONEPLUS=m
-CONFIG_HID_ROCCAT_KOVAPLUS=m
-CONFIG_HID_ROCCAT_PYRA=m
+CONFIG_HID_SAITEK=m
 CONFIG_HID_SAMSUNG=m
-CONFIG_HID_SONY=m
+# CONFIG_HID_SONY is not set
 CONFIG_HID_SPEEDLINK=m
+# CONFIG_HID_STEELSERIES is not set
 CONFIG_HID_SUNPLUS=m
-CONFIG_HID_GREENASIA=m
-# CONFIG_GREENASIA_FF is not set
-CONFIG_HID_SMARTJOYPLUS=m
-# CONFIG_SMARTJOYPLUS_FF is not set
+# CONFIG_HID_GREENASIA is not set
+# CONFIG_HID_SMARTJOYPLUS is not set
+CONFIG_HID_TIVO=m
 CONFIG_HID_TOPSEED=m
-CONFIG_HID_THRUSTMASTER=m
-# CONFIG_THRUSTMASTER_FF is not set
-CONFIG_HID_WACOM=m
-# CONFIG_HID_WACOM_POWER_SUPPLY is not set
-CONFIG_HID_WIIMOTE=m
-CONFIG_HID_ZEROPLUS=m
-# CONFIG_ZEROPLUS_FF is not set
+CONFIG_HID_THINGM=m
+# CONFIG_HID_THRUSTMASTER is not set
+# CONFIG_HID_WACOM is not set
+# CONFIG_HID_WIIMOTE is not set
+# CONFIG_HID_ZEROPLUS is not set
 CONFIG_HID_ZYDACRON=m
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_COMMON=y
-CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_HID_SENSOR_HUB=m
+
+#
+# USB HID support
+#
+CONFIG_USB_HID=y
+CONFIG_HID_PID=y
+CONFIG_USB_HIDDEV=y
+
+#
+# I2C HID support
+#
+CONFIG_I2C_HID=m
 CONFIG_USB_ARCH_HAS_OHCI=y
 CONFIG_USB_ARCH_HAS_EHCI=y
 CONFIG_USB_ARCH_HAS_XHCI=y
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_COMMON=y
+CONFIG_USB_ARCH_HAS_HCD=y
 CONFIG_USB=y
 # CONFIG_USB_DEBUG is not set
 CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
@@ -3262,14 +3834,12 @@ CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
 #
 # Miscellaneous USB options
 #
-CONFIG_USB_DEVICEFS=y
-CONFIG_USB_DEVICE_CLASS=y
-CONFIG_USB_DYNAMIC_MINORS=y
-CONFIG_USB_SUSPEND=y
+CONFIG_USB_DEFAULT_PERSIST=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
 # CONFIG_USB_OTG is not set
-CONFIG_USB_DWC3=m
-# CONFIG_USB_DWC3_DEBUG is not set
-# CONFIG_USB_MON is not set
+# CONFIG_USB_OTG_WHITELIST is not set
+# CONFIG_USB_OTG_BLACKLIST_HUB is not set
+CONFIG_USB_MON=m
 CONFIG_USB_WUSB=m
 CONFIG_USB_WUSB_CBAF=m
 # CONFIG_USB_WUSB_CBAF_DEBUG is not set
@@ -3278,27 +3848,32 @@ CONFIG_USB_WUSB_CBAF=m
 # USB Host Controller Drivers
 #
 # CONFIG_USB_C67X00_HCD is not set
-CONFIG_USB_XHCI_HCD=m
+CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_XHCI_PLATFORM=m
 # CONFIG_USB_XHCI_HCD_DEBUGGING is not set
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_EHCI_ROOT_HUB_TT=y
 CONFIG_USB_EHCI_TT_NEWSCHED=y
-CONFIG_USB_OXU210HP_HCD=m
-CONFIG_USB_ISP116X_HCD=m
+CONFIG_USB_EHCI_PCI=y
+CONFIG_USB_EHCI_HCD_ORION=y
+CONFIG_USB_EHCI_HCD_PLATFORM=y
+# CONFIG_USB_OXU210HP_HCD is not set
+# CONFIG_USB_ISP116X_HCD is not set
 # CONFIG_USB_ISP1760_HCD is not set
 CONFIG_USB_ISP1362_HCD=m
 CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_OHCI_HCD_PLATFORM=y
 # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
 # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
 CONFIG_USB_OHCI_LITTLE_ENDIAN=y
 CONFIG_USB_UHCI_HCD=y
-CONFIG_USB_U132_HCD=m
+# CONFIG_USB_U132_HCD is not set
 CONFIG_USB_SL811_HCD=m
-# CONFIG_USB_SL811_HCD_ISO is not set
-# CONFIG_USB_SL811_CS is not set
-CONFIG_USB_R8A66597_HCD=m
+CONFIG_USB_SL811_HCD_ISO=y
+# CONFIG_USB_R8A66597_HCD is not set
 CONFIG_USB_WHCI_HCD=m
 CONFIG_USB_HWA_HCD=m
+CONFIG_USB_HCD_SSB=m
 
 #
 # USB Device Class drivers
@@ -3315,7 +3890,7 @@ CONFIG_USB_TMC=m
 #
 # also be needed; see USB_STORAGE Help for more info
 #
-CONFIG_USB_STORAGE=m
+CONFIG_USB_STORAGE=y
 # CONFIG_USB_STORAGE_DEBUG is not set
 CONFIG_USB_STORAGE_REALTEK=m
 CONFIG_REALTEK_AUTOPM=y
@@ -3331,21 +3906,24 @@ CONFIG_USB_STORAGE_ONETOUCH=m
 CONFIG_USB_STORAGE_KARMA=m
 CONFIG_USB_STORAGE_CYPRESS_ATACB=m
 CONFIG_USB_STORAGE_ENE_UB6250=m
-CONFIG_USB_UAS=m
-# CONFIG_USB_LIBUSUAL is not set
 
 #
 # USB Imaging devices
 #
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
+CONFIG_USB_MDC800=m
+CONFIG_USB_MICROTEK=m
+CONFIG_USB_DWC3=m
+CONFIG_USB_DWC3_HOST=y
+# CONFIG_USB_DWC3_DEBUG is not set
+CONFIG_USB_CHIPIDEA=m
+# CONFIG_USB_CHIPIDEA_HOST is not set
+# CONFIG_USB_CHIPIDEA_DEBUG is not set
 
 #
 # USB port drivers
 #
 CONFIG_USB_USS720=m
 CONFIG_USB_SERIAL=m
-CONFIG_USB_EZUSB=y
 CONFIG_USB_SERIAL_GENERIC=y
 CONFIG_USB_SERIAL_AIRCABLE=m
 CONFIG_USB_SERIAL_ARK3116=m
@@ -3355,7 +3933,7 @@ CONFIG_USB_SERIAL_WHITEHEAT=m
 CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
 CONFIG_USB_SERIAL_CP210X=m
 CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
+# CONFIG_USB_SERIAL_EMPEG is not set
 CONFIG_USB_SERIAL_FTDI_SIO=m
 CONFIG_USB_SERIAL_FUNSOFT=m
 CONFIG_USB_SERIAL_VISOR=m
@@ -3363,16 +3941,18 @@ CONFIG_USB_SERIAL_IPAQ=m
 CONFIG_USB_SERIAL_IR=m
 CONFIG_USB_SERIAL_EDGEPORT=m
 CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_F81232=m
+# CONFIG_USB_SERIAL_GARMIN is not set
 CONFIG_USB_SERIAL_IPW=m
 CONFIG_USB_SERIAL_IUU=m
-# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
 # CONFIG_USB_SERIAL_KEYSPAN is not set
-# CONFIG_USB_SERIAL_KLSI is not set
+CONFIG_USB_SERIAL_KLSI=m
 # CONFIG_USB_SERIAL_KOBIL_SCT is not set
 CONFIG_USB_SERIAL_MCT_U232=m
+# CONFIG_USB_SERIAL_METRO is not set
 CONFIG_USB_SERIAL_MOS7720=m
-# CONFIG_USB_SERIAL_MOS7715_PARPORT is not set
+CONFIG_USB_SERIAL_MOS7715_PARPORT=y
 CONFIG_USB_SERIAL_MOS7840=m
 CONFIG_USB_SERIAL_MOTOROLA=m
 # CONFIG_USB_SERIAL_NAVMAN is not set
@@ -3381,22 +3961,25 @@ CONFIG_USB_SERIAL_OTI6858=m
 CONFIG_USB_SERIAL_QCAUX=m
 CONFIG_USB_SERIAL_QUALCOMM=m
 CONFIG_USB_SERIAL_SPCP8X5=m
-CONFIG_USB_SERIAL_HP4X=m
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
+# CONFIG_USB_SERIAL_HP4X is not set
+# CONFIG_USB_SERIAL_SAFE is not set
 CONFIG_USB_SERIAL_SIEMENS_MPI=m
 CONFIG_USB_SERIAL_SIERRAWIRELESS=m
-CONFIG_USB_SERIAL_SYMBOL=m
-CONFIG_USB_SERIAL_TI=m
+# CONFIG_USB_SERIAL_SYMBOL is not set
+# CONFIG_USB_SERIAL_TI is not set
 # CONFIG_USB_SERIAL_CYBERJACK is not set
 CONFIG_USB_SERIAL_XIRCOM=m
 CONFIG_USB_SERIAL_WWAN=m
 CONFIG_USB_SERIAL_OPTION=m
 # CONFIG_USB_SERIAL_OMNINET is not set
-CONFIG_USB_SERIAL_OPTICON=m
-CONFIG_USB_SERIAL_VIVOPAY_SERIAL=m
-CONFIG_USB_SERIAL_ZIO=m
+# CONFIG_USB_SERIAL_OPTICON is not set
+# CONFIG_USB_SERIAL_VIVOPAY_SERIAL is not set
+# CONFIG_USB_SERIAL_XSENS_MT is not set
+# CONFIG_USB_SERIAL_ZIO is not set
+# CONFIG_USB_SERIAL_WISHBONE is not set
+CONFIG_USB_SERIAL_ZTE=m
 CONFIG_USB_SERIAL_SSU100=m
+CONFIG_USB_SERIAL_QT2=m
 # CONFIG_USB_SERIAL_DEBUG is not set
 
 #
@@ -3404,14 +3987,14 @@ CONFIG_USB_SERIAL_SSU100=m
 #
 CONFIG_USB_EMI62=m
 CONFIG_USB_EMI26=m
-# CONFIG_USB_ADUTUX is not set
+CONFIG_USB_ADUTUX=m
 CONFIG_USB_SEVSEG=m
 # CONFIG_USB_RIO500 is not set
 # CONFIG_USB_LEGOTOWER is not set
 CONFIG_USB_LCD=m
 CONFIG_USB_LED=m
-CONFIG_USB_CYPRESS_CY7C63=m
-CONFIG_USB_CYTHERM=m
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
 # CONFIG_USB_IDMOUSE is not set
 CONFIG_USB_FTDI_ELAN=m
 # CONFIG_USB_APPLEDISPLAY is not set
@@ -3421,22 +4004,17 @@ CONFIG_USB_SISUSBVGA_CON=y
 # CONFIG_USB_TRANCEVIBRATOR is not set
 CONFIG_USB_IOWARRIOR=m
 # CONFIG_USB_TEST is not set
-CONFIG_USB_ISIGHTFW=m
+# CONFIG_USB_ISIGHTFW is not set
 CONFIG_USB_YUREX=m
+CONFIG_USB_EZUSB_FX2=m
+CONFIG_USB_HSIC_USB3503=m
 CONFIG_USB_ATM=m
 CONFIG_USB_SPEEDTOUCH=m
 CONFIG_USB_CXACRU=m
 CONFIG_USB_UEAGLEATM=m
 CONFIG_USB_XUSBATM=m
+# CONFIG_USB_PHY is not set
 # CONFIG_USB_GADGET is not set
-
-#
-# OTG and related infrastructure
-#
-CONFIG_USB_OTG_UTILS=y
-CONFIG_USB_GPIO_VBUS=m
-# CONFIG_USB_ULPI is not set
-CONFIG_NOP_USB_XCEIV=m
 CONFIG_UWB=m
 CONFIG_UWB_HWA=m
 CONFIG_UWB_WHCI=m
@@ -3452,25 +4030,30 @@ CONFIG_MMC=m
 CONFIG_MMC_BLOCK=m
 CONFIG_MMC_BLOCK_MINORS=8
 CONFIG_MMC_BLOCK_BOUNCE=y
-CONFIG_SDIO_UART=m
-CONFIG_MMC_TEST=m
+# CONFIG_SDIO_UART is not set
+# CONFIG_MMC_TEST is not set
 
 #
 # MMC/SD/SDIO Host Controller Drivers
 #
 CONFIG_MMC_SDHCI=m
 CONFIG_MMC_SDHCI_PCI=m
-# CONFIG_MMC_RICOH_MMC is not set
+CONFIG_MMC_RICOH_MMC=y
 CONFIG_MMC_SDHCI_PLTFM=m
+CONFIG_MMC_SDHCI_PXAV3=m
+CONFIG_MMC_SDHCI_PXAV2=m
 CONFIG_MMC_TIFM_SD=m
 CONFIG_MMC_MVSDIO=m
-CONFIG_MMC_SDRICOH_CS=m
 CONFIG_MMC_CB710=m
 CONFIG_MMC_VIA_SDMMC=m
 CONFIG_MMC_DW=m
 # CONFIG_MMC_DW_IDMAC is not set
+CONFIG_MMC_DW_PLTFM=m
+CONFIG_MMC_DW_EXYNOS=m
+CONFIG_MMC_DW_PCI=m
 CONFIG_MMC_VUB300=m
 CONFIG_MMC_USHC=m
+CONFIG_MMC_REALTEK_PCI=m
 CONFIG_MEMSTICK=m
 # CONFIG_MEMSTICK_DEBUG is not set
 
@@ -3486,46 +4069,63 @@ CONFIG_MSPRO_BLOCK=m
 CONFIG_MEMSTICK_TIFM_MS=m
 CONFIG_MEMSTICK_JMICRON_38X=m
 CONFIG_MEMSTICK_R592=m
+CONFIG_MEMSTICK_REALTEK_PCI=m
 CONFIG_NEW_LEDS=y
 CONFIG_LEDS_CLASS=y
 
 #
 # LED drivers
 #
-CONFIG_LEDS_88PM860X=m
+CONFIG_LEDS_88PM860X=y
 CONFIG_LEDS_LM3530=m
-CONFIG_LEDS_PCA9532=m
-CONFIG_LEDS_PCA9532_GPIO=y
-CONFIG_LEDS_GPIO=m
+CONFIG_LEDS_LM3533=m
+CONFIG_LEDS_LM3642=m
+# CONFIG_LEDS_PCA9532 is not set
+CONFIG_LEDS_GPIO=y
 CONFIG_LEDS_LP3944=m
+CONFIG_LEDS_LP55XX_COMMON=m
 CONFIG_LEDS_LP5521=m
 CONFIG_LEDS_LP5523=m
-CONFIG_LEDS_PCA955X=m
+CONFIG_LEDS_LP5562=m
+# CONFIG_LEDS_PCA955X is not set
+CONFIG_LEDS_PCA9633=m
+CONFIG_LEDS_PWM=m
 CONFIG_LEDS_REGULATOR=m
-CONFIG_LEDS_BD2802=m
+# CONFIG_LEDS_BD2802 is not set
 CONFIG_LEDS_LT3593=m
-CONFIG_LEDS_NS2=y
-CONFIG_LEDS_NETXBIG=y
-CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_NS2=m
+CONFIG_LEDS_NETXBIG=m
+# CONFIG_LEDS_RENESAS_TPU is not set
+CONFIG_LEDS_TCA6507=m
+CONFIG_LEDS_LM355x=m
+CONFIG_LEDS_OT200=m
+CONFIG_LEDS_BLINKM=m
 
 #
 # LED Triggers
 #
+CONFIG_LEDS_TRIGGERS=y
 CONFIG_LEDS_TRIGGER_TIMER=m
+CONFIG_LEDS_TRIGGER_ONESHOT=m
 CONFIG_LEDS_TRIGGER_HEARTBEAT=m
 CONFIG_LEDS_TRIGGER_BACKLIGHT=m
+CONFIG_LEDS_TRIGGER_CPU=y
 CONFIG_LEDS_TRIGGER_GPIO=m
 CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
 
 #
 # iptables trigger is under Netfilter config (LED target)
 #
+CONFIG_LEDS_TRIGGER_TRANSIENT=m
+CONFIG_LEDS_TRIGGER_CAMERA=m
 CONFIG_LEDS_TRIGGER_NETDEV=m
 # CONFIG_ACCESSIBILITY is not set
 # CONFIG_INFINIBAND is not set
+# CONFIG_EDAC is not set
 CONFIG_RTC_LIB=y
 CONFIG_RTC_CLASS=y
 CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_SYSTOHC=y
 CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
 # CONFIG_RTC_DEBUG is not set
 
@@ -3541,7 +4141,8 @@ CONFIG_RTC_INTF_DEV=y
 #
 # I2C RTC drivers
 #
-CONFIG_RTC_DRV_88PM860X=y
+CONFIG_RTC_DRV_88PM860X=m
+CONFIG_RTC_DRV_88PM80X=m
 CONFIG_RTC_DRV_DS1307=m
 CONFIG_RTC_DRV_DS1374=m
 CONFIG_RTC_DRV_DS1672=m
@@ -3551,12 +4152,13 @@ CONFIG_RTC_DRV_RS5C372=m
 CONFIG_RTC_DRV_ISL1208=m
 CONFIG_RTC_DRV_ISL12022=m
 CONFIG_RTC_DRV_X1205=m
+CONFIG_RTC_DRV_PCF8523=m
 CONFIG_RTC_DRV_PCF8563=m
 CONFIG_RTC_DRV_PCF8583=m
 CONFIG_RTC_DRV_M41T80=m
 CONFIG_RTC_DRV_M41T80_WDT=y
 CONFIG_RTC_DRV_BQ32K=m
-CONFIG_RTC_DRV_S35390A=m
+# CONFIG_RTC_DRV_S35390A is not set
 CONFIG_RTC_DRV_FM3130=m
 CONFIG_RTC_DRV_RX8581=m
 CONFIG_RTC_DRV_RX8025=m
@@ -3570,25 +4172,31 @@ CONFIG_RTC_DRV_RV3029C2=m
 #
 # Platform RTC drivers
 #
-CONFIG_RTC_DRV_CMOS=m
+CONFIG_RTC_DRV_CMOS=y
 CONFIG_RTC_DRV_DS1286=m
 CONFIG_RTC_DRV_DS1511=m
 CONFIG_RTC_DRV_DS1553=m
 CONFIG_RTC_DRV_DS1742=m
 CONFIG_RTC_DRV_STK17TA8=m
-CONFIG_RTC_DRV_M48T86=m
+# CONFIG_RTC_DRV_M48T86 is not set
 CONFIG_RTC_DRV_M48T35=m
 CONFIG_RTC_DRV_M48T59=m
 CONFIG_RTC_DRV_MSM6242=m
 CONFIG_RTC_DRV_BQ4802=m
 CONFIG_RTC_DRV_RP5C01=m
 CONFIG_RTC_DRV_V3020=m
-CONFIG_RTC_DRV_PCF50633=m
+CONFIG_RTC_DRV_DS2404=m
 
 #
 # on-CPU RTC drivers
 #
 CONFIG_RTC_DRV_MV=y
+CONFIG_RTC_DRV_SNVS=m
+
+#
+# HID Sensor RTC drivers
+#
+CONFIG_RTC_DRV_HID_SENSOR_TIME=m
 CONFIG_DMADEVICES=y
 # CONFIG_DMADEVICES_DEBUG is not set
 
@@ -3596,32 +4204,39 @@ CONFIG_DMADEVICES=y
 # DMA Devices
 #
 CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH=y
+# CONFIG_DW_DMAC is not set
 CONFIG_MV_XOR=y
-# CONFIG_TIMB_DMA is not set
+CONFIG_TIMB_DMA=m
 CONFIG_DMA_ENGINE=y
+CONFIG_DMA_OF=y
 
 #
 # DMA Clients
 #
-# CONFIG_NET_DMA is not set
+CONFIG_NET_DMA=y
 CONFIG_ASYNC_TX_DMA=y
-CONFIG_DMATEST=m
+# CONFIG_DMATEST is not set
 # CONFIG_AUXDISPLAY is not set
 CONFIG_UIO=m
-CONFIG_UIO_CIF=m
-CONFIG_UIO_PDRV=m
-CONFIG_UIO_PDRV_GENIRQ=m
+# CONFIG_UIO_CIF is not set
+# CONFIG_UIO_PDRV is not set
+# CONFIG_UIO_PDRV_GENIRQ is not set
+# CONFIG_UIO_DMEM_GENIRQ is not set
 CONFIG_UIO_AEC=m
 CONFIG_UIO_SERCOS3=m
 CONFIG_UIO_PCI_GENERIC=m
-CONFIG_UIO_NETX=m
+# CONFIG_UIO_NETX is not set
+CONFIG_VIRT_DRIVERS=y
 
 #
 # Virtio drivers
 #
 # CONFIG_VIRTIO_PCI is not set
-# CONFIG_VIRTIO_BALLOON is not set
 # CONFIG_VIRTIO_MMIO is not set
+
+#
+# Microsoft Hyper-V guest support
+#
 CONFIG_STAGING=y
 CONFIG_ET131X=m
 CONFIG_USBIP_CORE=m
@@ -3631,35 +4246,95 @@ CONFIG_USBIP_HOST=m
 # CONFIG_W35UND is not set
 # CONFIG_PRISM2_USB is not set
 # CONFIG_ECHO is not set
+# CONFIG_COMEDI is not set
 # CONFIG_ASUS_OLED is not set
 # CONFIG_PANEL is not set
 # CONFIG_R8187SE is not set
 # CONFIG_RTL8192U is not set
-# CONFIG_RTL8192E is not set
+# CONFIG_RTLLIB is not set
 # CONFIG_R8712U is not set
-# CONFIG_RTS_PSTOR is not set
 # CONFIG_RTS5139 is not set
 # CONFIG_TRANZPORT is not set
-# CONFIG_POHMELFS is not set
-CONFIG_IDE_PHISON=m
+# CONFIG_IDE_PHISON is not set
 # CONFIG_LINE6_USB is not set
-# CONFIG_DRM_NOUVEAU is not set
 # CONFIG_USB_SERIAL_QUATECH2 is not set
-# CONFIG_USB_SERIAL_QUATECH_USB2 is not set
 # CONFIG_VT6655 is not set
 # CONFIG_VT6656 is not set
-# CONFIG_VME_BUS is not set
 # CONFIG_DX_SEP is not set
-# CONFIG_IIO is not set
-# CONFIG_XVMALLOC is not set
-# CONFIG_ZRAM is not set
-# CONFIG_WLAGS49_H2 is not set
-# CONFIG_WLAGS49_H25 is not set
+
+#
+# IIO staging drivers
+#
+
+#
+# Accelerometers
+#
+
+#
+# Analog to digital converters
+#
+# CONFIG_AD7291 is not set
+# CONFIG_AD7606 is not set
+# CONFIG_AD799X is not set
+
+#
+# Analog digital bi-direction converters
+#
+# CONFIG_ADT7316 is not set
+
+#
+# Capacitance to digital converters
+#
+# CONFIG_AD7150 is not set
+# CONFIG_AD7152 is not set
+# CONFIG_AD7746 is not set
+
+#
+# Direct Digital Synthesis
+#
+
+#
+# Digital gyroscope sensors
+#
+
+#
+# Network Analyzer, Impedance Converters
+#
+# CONFIG_AD5933 is not set
+
+#
+# Light sensors
+#
+# CONFIG_SENSORS_ISL29018 is not set
+# CONFIG_SENSORS_ISL29028 is not set
+# CONFIG_TSL2583 is not set
+# CONFIG_TSL2x7x is not set
+
+#
+# Magnetometer sensors
+#
+# CONFIG_SENSORS_HMC5843 is not set
+
+#
+# Active energy metering IC
+#
+# CONFIG_ADE7854 is not set
+
+#
+# Resolver to digital converters
+#
+
+#
+# Triggers - standalone
+#
+# CONFIG_IIO_PERIODIC_RTC_TRIGGER is not set
+# CONFIG_IIO_GPIO_TRIGGER is not set
+# CONFIG_IIO_SYSFS_TRIGGER is not set
+# CONFIG_IIO_SIMPLE_DUMMY is not set
+# CONFIG_ZSMALLOC is not set
 # CONFIG_FB_SM7XX is not set
 # CONFIG_CRYSTALHD is not set
-# CONFIG_CXT1E1 is not set
 # CONFIG_FB_XGI is not set
-# CONFIG_SBE_2T3E3 is not set
 # CONFIG_USB_ENESTORAGE is not set
 # CONFIG_BCM_WIMAX is not set
 # CONFIG_FT1000 is not set
@@ -3672,13 +4347,135 @@ CONFIG_IDE_PHISON=m
 # CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4 is not set
 # CONFIG_STAGING_MEDIA is not set
 
+#
+# Android
+#
+# CONFIG_ANDROID is not set
+# CONFIG_USB_WPAN_HCD is not set
+# CONFIG_WIMAX_GDM72XX is not set
+# CONFIG_CSR_WIFI is not set
+CONFIG_NET_VENDOR_SILICOM=y
+CONFIG_SBYPASS=m
+CONFIG_BPCTL=m
+CONFIG_CED1401=m
+# CONFIG_DGRP is not set
+CONFIG_FIREWIRE_SERIAL=m
+CONFIG_CLKDEV_LOOKUP=y
+CONFIG_HAVE_CLK_PREPARE=y
+CONFIG_COMMON_CLK=y
+
+#
+# Common Clock Framework
+#
+# CONFIG_COMMON_CLK_DEBUG is not set
+CONFIG_COMMON_CLK_SI5351=m
+CONFIG_MVEBU_CLK_CORE=y
+CONFIG_MVEBU_CLK_GATING=y
+
 #
 # Hardware Spinlock drivers
 #
 CONFIG_CLKSRC_MMIO=y
+CONFIG_MAILBOX=y
 CONFIG_IOMMU_SUPPORT=y
-# CONFIG_VIRT_DRIVERS is not set
+CONFIG_OF_IOMMU=y
+
+#
+# Remoteproc drivers
+#
+# CONFIG_STE_MODEM_RPROC is not set
+
+#
+# Rpmsg drivers
+#
 # CONFIG_PM_DEVFREQ is not set
+# CONFIG_EXTCON is not set
+CONFIG_MEMORY=y
+CONFIG_IIO=m
+CONFIG_IIO_BUFFER=y
+CONFIG_IIO_BUFFER_CB=y
+CONFIG_IIO_KFIFO_BUF=m
+CONFIG_IIO_TRIGGER=y
+CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
+
+#
+# Accelerometers
+#
+# CONFIG_HID_SENSOR_ACCEL_3D is not set
+# CONFIG_IIO_ST_ACCEL_3AXIS is not set
+
+#
+# Analog to digital converters
+#
+# CONFIG_EXYNOS_ADC is not set
+# CONFIG_MAX1363 is not set
+# CONFIG_TI_ADC081C is not set
+# CONFIG_VIPERBOARD_ADC is not set
+
+#
+# Amplifiers
+#
+
+#
+# Hid Sensor IIO Common
+#
+CONFIG_HID_SENSOR_IIO_COMMON=m
+CONFIG_HID_SENSOR_IIO_TRIGGER=m
+# CONFIG_HID_SENSOR_ENUM_BASE_QUIRKS is not set
+
+#
+# Digital to analog converters
+#
+# CONFIG_AD5064 is not set
+# CONFIG_AD5380 is not set
+# CONFIG_AD5446 is not set
+# CONFIG_MAX517 is not set
+# CONFIG_MCP4725 is not set
+
+#
+# Frequency Synthesizers DDS/PLL
+#
+
+#
+# Clock Generator/Distribution
+#
+
+#
+# Phase-Locked Loop (PLL) frequency synthesizers
+#
+
+#
+# Digital gyroscope sensors
+#
+# CONFIG_HID_SENSOR_GYRO_3D is not set
+# CONFIG_IIO_ST_GYRO_3AXIS is not set
+# CONFIG_ITG3200 is not set
+
+#
+# Inertial measurement units
+#
+# CONFIG_INV_MPU6050_IIO is not set
+
+#
+# Light sensors
+#
+# CONFIG_ADJD_S311 is not set
+# CONFIG_SENSORS_LM3533 is not set
+# CONFIG_SENSORS_TSL2563 is not set
+# CONFIG_VCNL4000 is not set
+# CONFIG_HID_SENSOR_ALS is not set
+
+#
+# Magnetometer sensors
+#
+# CONFIG_AK8975 is not set
+# CONFIG_HID_SENSOR_MAGNETOMETER_3D is not set
+# CONFIG_IIO_ST_MAGN_3AXIS is not set
+# CONFIG_VME_BUS is not set
+CONFIG_PWM=y
+CONFIG_IRQCHIP=y
+# CONFIG_IPACK_BUS is not set
+# CONFIG_RESET_CONTROLLER is not set
 
 #
 # File systems
@@ -3687,11 +4484,11 @@ CONFIG_IOMMU_SUPPORT=y
 # CONFIG_EXT3_FS is not set
 CONFIG_EXT4_FS=y
 CONFIG_EXT4_USE_FOR_EXT23=y
-CONFIG_EXT4_FS_XATTR=y
 CONFIG_EXT4_FS_POSIX_ACL=y
 CONFIG_EXT4_FS_SECURITY=y
 # CONFIG_EXT4_DEBUG is not set
 CONFIG_JBD2=y
+# CONFIG_JBD2_DEBUG is not set
 CONFIG_FS_MBCACHE=y
 CONFIG_REISERFS_FS=m
 # CONFIG_REISERFS_CHECK is not set
@@ -3699,43 +4496,47 @@ CONFIG_REISERFS_PROC_INFO=y
 CONFIG_REISERFS_FS_XATTR=y
 CONFIG_REISERFS_FS_POSIX_ACL=y
 CONFIG_REISERFS_FS_SECURITY=y
-CONFIG_JFS_FS=m
-CONFIG_JFS_POSIX_ACL=y
-CONFIG_JFS_SECURITY=y
-# CONFIG_JFS_DEBUG is not set
-CONFIG_JFS_STATISTICS=y
+# CONFIG_JFS_FS is not set
 CONFIG_XFS_FS=m
 CONFIG_XFS_QUOTA=y
 CONFIG_XFS_POSIX_ACL=y
-# CONFIG_XFS_RT is not set
+CONFIG_XFS_RT=y
+# CONFIG_XFS_WARN is not set
 # CONFIG_XFS_DEBUG is not set
 # CONFIG_GFS2_FS is not set
-# CONFIG_BTRFS_FS is not set
+# CONFIG_OCFS2_FS is not set
+CONFIG_BTRFS_FS=m
+CONFIG_BTRFS_FS_POSIX_ACL=y
+# CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set
+# CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set
+# CONFIG_BTRFS_DEBUG is not set
 # CONFIG_NILFS2_FS is not set
 CONFIG_FS_POSIX_ACL=y
-CONFIG_EXPORTFS=m
+CONFIG_EXPORTFS=y
 CONFIG_FILE_LOCKING=y
 CONFIG_FSNOTIFY=y
 CONFIG_DNOTIFY=y
 CONFIG_INOTIFY_USER=y
 CONFIG_FANOTIFY=y
+CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
 CONFIG_QUOTA=y
 CONFIG_QUOTA_NETLINK_INTERFACE=y
-CONFIG_PRINT_QUOTA_WARNING=y
+# CONFIG_PRINT_QUOTA_WARNING is not set
 # CONFIG_QUOTA_DEBUG is not set
-CONFIG_QUOTA_TREE=m
-CONFIG_QFMT_V1=m
-CONFIG_QFMT_V2=m
+CONFIG_QUOTA_TREE=y
+# CONFIG_QFMT_V1 is not set
+CONFIG_QFMT_V2=y
 CONFIG_QUOTACTL=y
-CONFIG_AUTOFS4_FS=m
+CONFIG_AUTOFS4_FS=y
 CONFIG_FUSE_FS=m
 CONFIG_CUSE=m
+CONFIG_GENERIC_ACL=y
 
 #
 # Caches
 #
 CONFIG_FSCACHE=m
-# CONFIG_FSCACHE_STATS is not set
+CONFIG_FSCACHE_STATS=y
 # CONFIG_FSCACHE_HISTOGRAM is not set
 # CONFIG_FSCACHE_DEBUG is not set
 # CONFIG_FSCACHE_OBJECT_LIST is not set
@@ -3746,7 +4547,7 @@ CONFIG_CACHEFILES=m
 #
 # CD-ROM/DVD Filesystems
 #
-CONFIG_ISO9660_FS=m
+CONFIG_ISO9660_FS=y
 CONFIG_JOLIET=y
 CONFIG_ZISOFS=y
 CONFIG_UDF_FS=m
@@ -3756,10 +4557,10 @@ CONFIG_UDF_NLS=y
 # DOS/FAT/NT Filesystems
 #
 CONFIG_FAT_FS=m
-# CONFIG_MSDOS_FS is not set
+CONFIG_MSDOS_FS=m
 CONFIG_VFAT_FS=m
-CONFIG_FAT_DEFAULT_CODEPAGE=850
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
 # CONFIG_NTFS_FS is not set
 
 #
@@ -3767,37 +4568,22 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
 #
 CONFIG_PROC_FS=y
 CONFIG_PROC_SYSCTL=y
-CONFIG_PROC_PAGE_MONITOR=y
 CONFIG_SYSFS=y
 CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
+CONFIG_TMPFS_POSIX_ACL=y
 CONFIG_TMPFS_XATTR=y
 # CONFIG_HUGETLB_PAGE is not set
-# CONFIG_CONFIGFS_FS is not set
+CONFIG_CONFIGFS_FS=m
 CONFIG_MISC_FILESYSTEMS=y
 # CONFIG_ADFS_FS is not set
 # CONFIG_AFFS_FS is not set
-CONFIG_ECRYPT_FS=m
+# CONFIG_ECRYPT_FS is not set
 # CONFIG_HFS_FS is not set
 # CONFIG_HFSPLUS_FS is not set
 # CONFIG_BEFS_FS is not set
 # CONFIG_BFS_FS is not set
 # CONFIG_EFS_FS is not set
-CONFIG_JFFS2_FS=m
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
-# CONFIG_JFFS2_SUMMARY is not set
-# CONFIG_JFFS2_FS_XATTR is not set
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-# CONFIG_JFFS2_LZO is not set
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
+# CONFIG_JFFS2_FS is not set
 # CONFIG_UBIFS_FS is not set
 # CONFIG_LOGFS is not set
 # CONFIG_CRAMFS is not set
@@ -3807,113 +4593,116 @@ CONFIG_JFFS2_CMODE_PRIORITY=y
 # CONFIG_OMFS_FS is not set
 # CONFIG_HPFS_FS is not set
 # CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX6FS_FS is not set
 # CONFIG_ROMFS_FS is not set
-# CONFIG_PSTORE is not set
+CONFIG_PSTORE=y
+# CONFIG_PSTORE_CONSOLE is not set
+# CONFIG_PSTORE_FTRACE is not set
+# CONFIG_PSTORE_RAM is not set
 # CONFIG_SYSV_FS is not set
-CONFIG_UFS_FS=m
-# CONFIG_UFS_FS_WRITE is not set
-# CONFIG_UFS_DEBUG is not set
+# CONFIG_UFS_FS is not set
 # CONFIG_EXOFS_FS is not set
+# CONFIG_F2FS_FS is not set
+CONFIG_ORE=m
 CONFIG_NETWORK_FILESYSTEMS=y
 CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
+CONFIG_NFS_V2=m
+CONFIG_NFS_V3=m
 CONFIG_NFS_V3_ACL=y
-CONFIG_NFS_V4=y
-# CONFIG_NFS_V4_1 is not set
-# CONFIG_NFS_FSCACHE is not set
+CONFIG_NFS_V4=m
+# CONFIG_NFS_SWAP is not set
+CONFIG_NFS_V4_1=y
+CONFIG_PNFS_FILE_LAYOUT=m
+CONFIG_PNFS_BLOCK=m
+CONFIG_PNFS_OBJLAYOUT=m
+CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="ipfire.org"
+CONFIG_NFS_FSCACHE=y
 # CONFIG_NFS_USE_LEGACY_DNS is not set
 CONFIG_NFS_USE_KERNEL_DNS=y
-# CONFIG_NFS_USE_NEW_IDMAPPER is not set
 CONFIG_NFSD=m
 CONFIG_NFSD_V2_ACL=y
 CONFIG_NFSD_V3=y
 CONFIG_NFSD_V3_ACL=y
 CONFIG_NFSD_V4=y
+# CONFIG_NFSD_FAULT_INJECTION is not set
 CONFIG_LOCKD=m
 CONFIG_LOCKD_V4=y
 CONFIG_NFS_ACL_SUPPORT=m
 CONFIG_NFS_COMMON=y
 CONFIG_SUNRPC=m
 CONFIG_SUNRPC_GSS=m
+CONFIG_SUNRPC_BACKCHANNEL=y
 CONFIG_RPCSEC_GSS_KRB5=m
+# CONFIG_SUNRPC_DEBUG is not set
 # CONFIG_CEPH_FS is not set
 CONFIG_CIFS=m
 CONFIG_CIFS_STATS=y
-CONFIG_CIFS_STATS2=y
+# CONFIG_CIFS_STATS2 is not set
 # CONFIG_CIFS_WEAK_PW_HASH is not set
 # CONFIG_CIFS_UPCALL is not set
 CONFIG_CIFS_XATTR=y
 CONFIG_CIFS_POSIX=y
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_DFS_UPCALL is not set
-# CONFIG_CIFS_FSCACHE is not set
 CONFIG_CIFS_ACL=y
+# CONFIG_CIFS_DEBUG is not set
+CONFIG_CIFS_DFS_UPCALL=y
+CONFIG_CIFS_SMB2=y
+CONFIG_CIFS_FSCACHE=y
 # CONFIG_NCP_FS is not set
 # CONFIG_CODA_FS is not set
 # CONFIG_AFS_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-CONFIG_BSD_DISKLABEL=y
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-CONFIG_LDM_PARTITION=y
-# CONFIG_LDM_DEBUG is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-CONFIG_EFI_PARTITION=y
-# CONFIG_SYSV68_PARTITION is not set
 CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp850"
-# CONFIG_NLS_CODEPAGE_437 is not set
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-CONFIG_NLS_CODEPAGE_850=y
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-# CONFIG_NLS_ASCII is not set
-CONFIG_NLS_ISO8859_1=y
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-CONFIG_NLS_UTF8=y
+CONFIG_NLS_DEFAULT="utf-8"
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=y
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_MAC_ROMAN=m
+CONFIG_NLS_MAC_CELTIC=m
+CONFIG_NLS_MAC_CENTEURO=m
+CONFIG_NLS_MAC_CROATIAN=m
+CONFIG_NLS_MAC_CYRILLIC=m
+CONFIG_NLS_MAC_GAELIC=m
+CONFIG_NLS_MAC_GREEK=m
+CONFIG_NLS_MAC_ICELAND=m
+CONFIG_NLS_MAC_INUIT=m
+CONFIG_NLS_MAC_ROMANIAN=m
+CONFIG_NLS_MAC_TURKISH=m
+CONFIG_NLS_UTF8=m
+CONFIG_DLM=m
+# CONFIG_DLM_DEBUG is not set
 
 #
 # Kernel hacking
@@ -3922,27 +4711,29 @@ CONFIG_NLS_UTF8=y
 CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
 # CONFIG_ENABLE_WARN_DEPRECATED is not set
 CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_FRAME_WARN=1024
+CONFIG_FRAME_WARN=2048
 # CONFIG_MAGIC_SYSRQ is not set
 CONFIG_STRIP_ASM_SYMS=y
+# CONFIG_READABLE_ASM is not set
 # CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_FS=y
+CONFIG_HEADERS_CHECK=y
 # CONFIG_DEBUG_SECTION_MISMATCH is not set
 CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SHIRQ is not set
-# CONFIG_LOCKUP_DETECTOR is not set
-# CONFIG_HARDLOCKUP_DETECTOR is not set
-CONFIG_DETECT_HUNG_TASK=y
-CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
-# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
-CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
+CONFIG_DEBUG_SHIRQ=y
+CONFIG_LOCKUP_DETECTOR=y
+# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
+# CONFIG_PANIC_ON_OOPS is not set
+CONFIG_PANIC_ON_OOPS_VALUE=0
+# CONFIG_DETECT_HUNG_TASK is not set
 CONFIG_SCHED_DEBUG=y
-# CONFIG_SCHEDSTATS is not set
+CONFIG_SCHEDSTATS=y
 CONFIG_TIMER_STATS=y
 # CONFIG_DEBUG_OBJECTS is not set
 # CONFIG_SLUB_DEBUG_ON is not set
 # CONFIG_SLUB_STATS is not set
+CONFIG_HAVE_DEBUG_KMEMLEAK=y
 # CONFIG_DEBUG_KMEMLEAK is not set
 # CONFIG_DEBUG_RT_MUTEXES is not set
 # CONFIG_RT_MUTEX_TESTER is not set
@@ -3950,10 +4741,10 @@ CONFIG_TIMER_STATS=y
 # CONFIG_DEBUG_MUTEXES is not set
 # CONFIG_DEBUG_LOCK_ALLOC is not set
 # CONFIG_PROVE_LOCKING is not set
-# CONFIG_SPARSE_RCU_POINTER is not set
 # CONFIG_LOCK_STAT is not set
 # CONFIG_DEBUG_ATOMIC_SLEEP is not set
 # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+CONFIG_STACKTRACE=y
 # CONFIG_DEBUG_STACK_USAGE is not set
 # CONFIG_DEBUG_KOBJECT is not set
 # CONFIG_DEBUG_HIGHMEM is not set
@@ -3962,53 +4753,247 @@ CONFIG_DEBUG_BUGVERBOSE=y
 # CONFIG_DEBUG_VM is not set
 # CONFIG_DEBUG_WRITECOUNT is not set
 CONFIG_DEBUG_MEMORY_INIT=y
-# CONFIG_DEBUG_LIST is not set
+CONFIG_DEBUG_LIST=y
 # CONFIG_TEST_LIST_SORT is not set
 # CONFIG_DEBUG_SG is not set
 # CONFIG_DEBUG_NOTIFIERS is not set
 # CONFIG_DEBUG_CREDENTIALS is not set
 CONFIG_FRAME_POINTER=y
 # CONFIG_BOOT_PRINTK_DELAY is not set
+
+#
+# RCU Debugging
+#
+# CONFIG_SPARSE_RCU_POINTER is not set
 # CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_RCU_TRACE is not set
 # CONFIG_BACKTRACE_SELF_TEST is not set
 # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
 # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
+# CONFIG_LKDTM is not set
+# CONFIG_NOTIFIER_ERROR_INJECTION is not set
 # CONFIG_FAULT_INJECTION is not set
-# CONFIG_LATENCYTOP is not set
-# CONFIG_SYSCTL_SYSCALL_CHECK is not set
 # CONFIG_DEBUG_PAGEALLOC is not set
+CONFIG_NOP_TRACER=y
 CONFIG_HAVE_FUNCTION_TRACER=y
 CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
 CONFIG_HAVE_DYNAMIC_FTRACE=y
 CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
+CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
 CONFIG_HAVE_C_RECORDMCOUNT=y
+CONFIG_TRACER_MAX_TRACE=y
+CONFIG_TRACE_CLOCK=y
+CONFIG_RING_BUFFER=y
+CONFIG_EVENT_TRACING=y
+CONFIG_CONTEXT_SWITCH_TRACER=y
+CONFIG_TRACING=y
+CONFIG_GENERIC_TRACER=y
 CONFIG_TRACING_SUPPORT=y
-# CONFIG_FTRACE is not set
-# CONFIG_FIREWIRE_OHCI_REMOTE_DMA is not set
+CONFIG_FTRACE=y
+CONFIG_FUNCTION_TRACER=y
+CONFIG_FUNCTION_GRAPH_TRACER=y
+# CONFIG_IRQSOFF_TRACER is not set
+CONFIG_SCHED_TRACER=y
+# CONFIG_FTRACE_SYSCALLS is not set
+CONFIG_TRACER_SNAPSHOT=y
+# CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP is not set
+CONFIG_BRANCH_PROFILE_NONE=y
+# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
+# CONFIG_PROFILE_ALL_BRANCHES is not set
+CONFIG_STACK_TRACER=y
+CONFIG_BLK_DEV_IO_TRACE=y
+# CONFIG_PROBE_EVENTS is not set
+CONFIG_DYNAMIC_FTRACE=y
+CONFIG_FUNCTION_PROFILER=y
+CONFIG_FTRACE_MCOUNT_RECORD=y
+# CONFIG_FTRACE_STARTUP_TEST is not set
+CONFIG_RING_BUFFER_BENCHMARK=m
+# CONFIG_RING_BUFFER_STARTUP_TEST is not set
+CONFIG_RBTREE_TEST=m
+# CONFIG_INTERVAL_TREE_TEST is not set
+# CONFIG_BUILD_DOCSRC is not set
+CONFIG_DYNAMIC_DEBUG=y
 # CONFIG_DMA_API_DEBUG is not set
 # CONFIG_ATOMIC64_SELFTEST is not set
 CONFIG_ASYNC_RAID6_TEST=m
 # CONFIG_SAMPLES is not set
 CONFIG_HAVE_ARCH_KGDB=y
 # CONFIG_KGDB is not set
+# CONFIG_TEST_STRING_HELPERS is not set
 # CONFIG_TEST_KSTRTOX is not set
-# CONFIG_STRICT_DEVMEM is not set
-# CONFIG_ARM_UNWIND is not set
+CONFIG_STRICT_DEVMEM=y
+CONFIG_ARM_UNWIND=y
+CONFIG_OLD_MCOUNT=y
 # CONFIG_DEBUG_USER is not set
 CONFIG_DEBUG_LL=y
 CONFIG_DEBUG_LL_UART_NONE=y
 # CONFIG_DEBUG_ICEDCC is not set
+# CONFIG_DEBUG_SEMIHOSTING is not set
+CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
+CONFIG_UNCOMPRESS_INCLUDE="mach/uncompress.h"
 CONFIG_EARLY_PRINTK=y
 
 #
 # Security options
 #
+
+#
+# Grsecurity
+#
+CONFIG_PAX_USERCOPY_SLABS=y
+CONFIG_GRKERNSEC=y
+# CONFIG_GRKERNSEC_CONFIG_AUTO is not set
+CONFIG_GRKERNSEC_CONFIG_CUSTOM=y
+
+#
+# Customize Configuration
+#
+
+#
+# PaX
+#
+CONFIG_PAX=y
+
+#
+# PaX Control
+#
+# CONFIG_PAX_SOFTMODE is not set
+CONFIG_PAX_EI_PAX=y
+CONFIG_PAX_PT_PAX_FLAGS=y
+# CONFIG_PAX_XATTR_PAX_FLAGS is not set
+# CONFIG_PAX_NO_ACL_FLAGS is not set
+CONFIG_PAX_HAVE_ACL_FLAGS=y
+# CONFIG_PAX_HOOK_ACL_FLAGS is not set
+
+#
+# Non-executable pages
+#
+CONFIG_PAX_KERNEXEC_PLUGIN_METHOD=""
+
+#
+# Address Space Layout Randomization
+#
+CONFIG_PAX_ASLR=y
+CONFIG_PAX_RANDUSTACK=y
+CONFIG_PAX_RANDMMAP=y
+
+#
+# Miscellaneous hardening features
+#
+CONFIG_PAX_MEMORY_SANITIZE=y
+CONFIG_PAX_MEMORY_STRUCTLEAK=y
+CONFIG_PAX_USERCOPY=y
+# CONFIG_PAX_LATENT_ENTROPY is not set
+
+#
+# Memory Protections
+#
+# CONFIG_GRKERNSEC_KMEM is not set
+CONFIG_GRKERNSEC_JIT_HARDEN=y
+# CONFIG_GRKERNSEC_PERF_HARDEN is not set
+CONFIG_GRKERNSEC_RAND_THREADSTACK=y
+CONFIG_GRKERNSEC_PROC_MEMMAP=y
+CONFIG_GRKERNSEC_BRUTE=y
+CONFIG_GRKERNSEC_MODHARDEN=y
+CONFIG_GRKERNSEC_HIDESYM=y
+CONFIG_GRKERNSEC_KERN_LOCKOUT=y
+
+#
+# Role Based Access Control Options
+#
+CONFIG_GRKERNSEC_NO_RBAC=y
+# CONFIG_GRKERNSEC_ACL_HIDEKERN is not set
+CONFIG_GRKERNSEC_ACL_MAXTRIES=3
+CONFIG_GRKERNSEC_ACL_TIMEOUT=30
+
+#
+# Filesystem Protections
+#
+# CONFIG_GRKERNSEC_PROC is not set
+CONFIG_GRKERNSEC_LINK=y
+# CONFIG_GRKERNSEC_SYMLINKOWN is not set
+CONFIG_GRKERNSEC_FIFO=y
+# CONFIG_GRKERNSEC_SYSFS_RESTRICT is not set
+# CONFIG_GRKERNSEC_ROFS is not set
+CONFIG_GRKERNSEC_DEVICE_SIDECHANNEL=y
+CONFIG_GRKERNSEC_CHROOT=y
+# CONFIG_GRKERNSEC_CHROOT_MOUNT is not set
+CONFIG_GRKERNSEC_CHROOT_DOUBLE=y
+CONFIG_GRKERNSEC_CHROOT_PIVOT=y
+CONFIG_GRKERNSEC_CHROOT_CHDIR=y
+# CONFIG_GRKERNSEC_CHROOT_CHMOD is not set
+CONFIG_GRKERNSEC_CHROOT_FCHDIR=y
+# CONFIG_GRKERNSEC_CHROOT_MKNOD is not set
+CONFIG_GRKERNSEC_CHROOT_SHMAT=y
+CONFIG_GRKERNSEC_CHROOT_UNIX=y
+CONFIG_GRKERNSEC_CHROOT_FINDTASK=y
+CONFIG_GRKERNSEC_CHROOT_NICE=y
+CONFIG_GRKERNSEC_CHROOT_SYSCTL=y
+# CONFIG_GRKERNSEC_CHROOT_CAPS is not set
+CONFIG_GRKERNSEC_CHROOT_INITRD=y
+
+#
+# Kernel Auditing
+#
+# CONFIG_GRKERNSEC_AUDIT_GROUP is not set
+# CONFIG_GRKERNSEC_EXECLOG is not set
+CONFIG_GRKERNSEC_RESLOG=y
+# CONFIG_GRKERNSEC_CHROOT_EXECLOG is not set
+# CONFIG_GRKERNSEC_AUDIT_PTRACE is not set
+# CONFIG_GRKERNSEC_AUDIT_CHDIR is not set
+# CONFIG_GRKERNSEC_AUDIT_MOUNT is not set
+CONFIG_GRKERNSEC_SIGNAL=y
+CONFIG_GRKERNSEC_FORKFAIL=y
+# CONFIG_GRKERNSEC_TIME is not set
+CONFIG_GRKERNSEC_PROC_IPADDR=y
+
+#
+# Executable Protections
+#
+CONFIG_GRKERNSEC_DMESG=y
+CONFIG_GRKERNSEC_HARDEN_PTRACE=y
+CONFIG_GRKERNSEC_PTRACE_READEXEC=y
+CONFIG_GRKERNSEC_SETXID=y
+# CONFIG_GRKERNSEC_TPE is not set
+
+#
+# Network Protections
+#
+CONFIG_GRKERNSEC_RANDNET=y
+CONFIG_GRKERNSEC_BLACKHOLE=y
+CONFIG_GRKERNSEC_NO_SIMULT_CONNECT=y
+# CONFIG_GRKERNSEC_SOCKET is not set
+
+#
+# Physical Protections
+#
+# CONFIG_GRKERNSEC_DENYUSB is not set
+
+#
+# Sysctl Support
+#
+# CONFIG_GRKERNSEC_SYSCTL is not set
+
+#
+# Logging Options
+#
+CONFIG_GRKERNSEC_FLOODTIME=10
+CONFIG_GRKERNSEC_FLOODBURST=6
 CONFIG_KEYS=y
 # CONFIG_ENCRYPTED_KEYS is not set
-# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
-# CONFIG_SECURITY_DMESG_RESTRICT is not set
-# CONFIG_SECURITY is not set
-# CONFIG_SECURITYFS is not set
+CONFIG_KEYS_DEBUG_PROC_KEYS=y
+CONFIG_SECURITY_DMESG_RESTRICT=y
+CONFIG_SECURITY=y
+CONFIG_SECURITYFS=y
+CONFIG_SECURITY_NETWORK=y
+CONFIG_SECURITY_NETWORK_XFRM=y
+# CONFIG_SECURITY_PATH is not set
+# CONFIG_SECURITY_SELINUX is not set
+# CONFIG_SECURITY_SMACK is not set
+# CONFIG_SECURITY_TOMOYO is not set
+# CONFIG_SECURITY_APPARMOR is not set
+# CONFIG_IMA is not set
+# CONFIG_EVM is not set
 CONFIG_DEFAULT_SECURITY_DAC=y
 CONFIG_DEFAULT_SECURITY=""
 CONFIG_XOR_BLOCKS=m
@@ -4022,43 +5007,44 @@ CONFIG_CRYPTO=y
 #
 # Crypto core or helper
 #
+CONFIG_CRYPTO_FIPS=y
 CONFIG_CRYPTO_ALGAPI=y
 CONFIG_CRYPTO_ALGAPI2=y
-CONFIG_CRYPTO_AEAD=m
+CONFIG_CRYPTO_AEAD=y
 CONFIG_CRYPTO_AEAD2=y
-CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_BLKCIPHER=y
 CONFIG_CRYPTO_BLKCIPHER2=y
 CONFIG_CRYPTO_HASH=y
 CONFIG_CRYPTO_HASH2=y
-CONFIG_CRYPTO_RNG=m
+CONFIG_CRYPTO_RNG=y
 CONFIG_CRYPTO_RNG2=y
 CONFIG_CRYPTO_PCOMP=m
 CONFIG_CRYPTO_PCOMP2=y
 CONFIG_CRYPTO_MANAGER=y
 CONFIG_CRYPTO_MANAGER2=y
-CONFIG_CRYPTO_USER=m
-CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
+# CONFIG_CRYPTO_USER is not set
+# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
 CONFIG_CRYPTO_GF128MUL=m
-# CONFIG_CRYPTO_NULL is not set
+CONFIG_CRYPTO_NULL=m
 CONFIG_CRYPTO_WORKQUEUE=y
-CONFIG_CRYPTO_CRYPTD=m
+CONFIG_CRYPTO_CRYPTD=y
 CONFIG_CRYPTO_AUTHENC=m
-# CONFIG_CRYPTO_TEST is not set
+CONFIG_CRYPTO_TEST=m
 
 #
 # Authenticated Encryption with Associated Data
 #
 CONFIG_CRYPTO_CCM=m
 CONFIG_CRYPTO_GCM=m
-CONFIG_CRYPTO_SEQIV=m
+CONFIG_CRYPTO_SEQIV=y
 
 #
 # Block modes
 #
-CONFIG_CRYPTO_CBC=m
-CONFIG_CRYPTO_CTR=m
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_CTR=y
 CONFIG_CRYPTO_CTS=m
-CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_ECB=y
 CONFIG_CRYPTO_LRW=m
 CONFIG_CRYPTO_PCBC=m
 CONFIG_CRYPTO_XTS=m
@@ -4066,6 +5052,7 @@ CONFIG_CRYPTO_XTS=m
 #
 # Hash modes
 #
+CONFIG_CRYPTO_CMAC=m
 CONFIG_CRYPTO_HMAC=y
 CONFIG_CRYPTO_XCBC=m
 CONFIG_CRYPTO_VMAC=m
@@ -4073,17 +5060,19 @@ CONFIG_CRYPTO_VMAC=m
 #
 # Digest
 #
-CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_CRC32C=y
+CONFIG_CRYPTO_CRC32=y
 CONFIG_CRYPTO_GHASH=m
 CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_MD5=y
 CONFIG_CRYPTO_MICHAEL_MIC=m
 CONFIG_CRYPTO_RMD128=m
 CONFIG_CRYPTO_RMD160=m
 CONFIG_CRYPTO_RMD256=m
 CONFIG_CRYPTO_RMD320=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA1=y
+CONFIG_CRYPTO_SHA1_ARM=y
+CONFIG_CRYPTO_SHA256=y
 CONFIG_CRYPTO_SHA512=m
 CONFIG_CRYPTO_TGR192=m
 CONFIG_CRYPTO_WP512=m
@@ -4091,12 +5080,14 @@ CONFIG_CRYPTO_WP512=m
 #
 # Ciphers
 #
-CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_AES=y
+CONFIG_CRYPTO_AES_ARM=m
 CONFIG_CRYPTO_ANUBIS=m
 CONFIG_CRYPTO_ARC4=m
 CONFIG_CRYPTO_BLOWFISH=m
 CONFIG_CRYPTO_BLOWFISH_COMMON=m
 CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_CAST_COMMON=m
 CONFIG_CRYPTO_CAST5=m
 CONFIG_CRYPTO_CAST6=m
 CONFIG_CRYPTO_DES=m
@@ -4112,7 +5103,7 @@ CONFIG_CRYPTO_TWOFISH_COMMON=m
 #
 # Compression
 #
-CONFIG_CRYPTO_DEFLATE=y
+CONFIG_CRYPTO_DEFLATE=m
 CONFIG_CRYPTO_ZLIB=m
 CONFIG_CRYPTO_LZO=m
 
@@ -4120,31 +5111,45 @@ CONFIG_CRYPTO_LZO=m
 # Random Number Generation
 #
 CONFIG_CRYPTO_ANSI_CPRNG=m
-CONFIG_CRYPTO_USER_API=m
-CONFIG_CRYPTO_USER_API_HASH=m
-CONFIG_CRYPTO_USER_API_SKCIPHER=m
+CONFIG_CRYPTO_USER_API=y
+CONFIG_CRYPTO_USER_API_HASH=y
+CONFIG_CRYPTO_USER_API_SKCIPHER=y
 CONFIG_CRYPTO_HW=y
-CONFIG_CRYPTO_DEV_MV_CESA=m
+CONFIG_CRYPTO_DEV_MV_CESA=y
 CONFIG_CRYPTO_DEV_HIFN_795X=m
 CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y
-# CONFIG_BINARY_PRINTF is not set
+CONFIG_ASYMMETRIC_KEY_TYPE=m
+CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=m
+CONFIG_PUBLIC_KEY_ALGO_RSA=m
+CONFIG_X509_CERTIFICATE_PARSER=m
+CONFIG_BINARY_PRINTF=y
 
 #
 # Library routines
 #
 CONFIG_RAID6_PQ=m
 CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=m
+CONFIG_RATIONAL=y
+CONFIG_GENERIC_STRNCPY_FROM_USER=y
+CONFIG_GENERIC_STRNLEN_USER=y
+CONFIG_GENERIC_PCI_IOMAP=y
+CONFIG_GENERIC_IO=y
+CONFIG_CRC_CCITT=y
 CONFIG_CRC16=y
-CONFIG_CRC_T10DIF=m
+CONFIG_CRC_T10DIF=y
 CONFIG_CRC_ITU_T=m
 CONFIG_CRC32=y
+# CONFIG_CRC32_SELFTEST is not set
+CONFIG_CRC32_SLICEBY8=y
+# CONFIG_CRC32_SLICEBY4 is not set
+# CONFIG_CRC32_SARWATE is not set
+# CONFIG_CRC32_BIT is not set
 CONFIG_CRC7=m
 CONFIG_LIBCRC32C=m
 CONFIG_CRC8=m
 CONFIG_AUDIT_GENERIC=y
 CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
+CONFIG_ZLIB_DEFLATE=m
 CONFIG_LZO_COMPRESS=y
 CONFIG_LZO_DECOMPRESS=y
 CONFIG_XZ_DEC=y
@@ -4169,7 +5174,19 @@ CONFIG_HAS_IOMEM=y
 CONFIG_HAS_IOPORT=y
 CONFIG_HAS_DMA=y
 CONFIG_CHECK_SIGNATURE=y
+CONFIG_DQL=y
 CONFIG_NLATTR=y
 CONFIG_GENERIC_ATOMIC64=y
+CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y
 CONFIG_AVERAGE=y
+CONFIG_CLZ_TAB=y
 CONFIG_CORDIC=m
+# CONFIG_DDR is not set
+CONFIG_MPILIB=m
+CONFIG_OID_REGISTRY=m
+CONFIG_VIRTUALIZATION=y
+CONFIG_KVM_ARM_MAX_VCPUS=0
+
+#
+# Virtio drivers
+#
diff --git a/config/kernel/kernel.config.armv5tel-ipfire-multi b/config/kernel/kernel.config.armv5tel-ipfire-multi
new file mode 100644 (file)
index 0000000..868a50c
--- /dev/null
@@ -0,0 +1,5964 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# Linux/arm 3.10.11-ipfire-multi Kernel Configuration
+#
+CONFIG_ARM=y
+CONFIG_MIGHT_HAVE_PCI=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_HAVE_TCM=y
+CONFIG_HAVE_PROC_CPU=y
+CONFIG_NO_IOPORT=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_ARCH_HAS_CPUFREQ=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_NEED_DMA_MAP_STATE=y
+CONFIG_FIQ=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_ARM_PATCH_PHYS_VIRT=y
+CONFIG_GENERIC_BUG=y
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+CONFIG_IRQ_WORK=y
+CONFIG_BUILDTIME_EXTABLE_SORT=y
+
+#
+# General setup
+#
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_CROSS_COMPILE=""
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_HAVE_KERNEL_GZIP=y
+CONFIG_HAVE_KERNEL_LZMA=y
+CONFIG_HAVE_KERNEL_XZ=y
+CONFIG_HAVE_KERNEL_LZO=y
+# CONFIG_KERNEL_GZIP is not set
+# CONFIG_KERNEL_LZMA is not set
+CONFIG_KERNEL_XZ=y
+# CONFIG_KERNEL_LZO is not set
+CONFIG_DEFAULT_HOSTNAME="(none)"
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_POSIX_MQUEUE_SYSCTL=y
+CONFIG_FHANDLE=y
+CONFIG_AUDIT=y
+CONFIG_AUDITSYSCALL=y
+CONFIG_AUDIT_WATCH=y
+CONFIG_AUDIT_TREE=y
+CONFIG_AUDIT_LOGINUID_IMMUTABLE=y
+CONFIG_HAVE_GENERIC_HARDIRQS=y
+
+#
+# IRQ subsystem
+#
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_GENERIC_IRQ_SHOW=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_CHIP=y
+CONFIG_IRQ_DOMAIN=y
+# CONFIG_IRQ_DOMAIN_DEBUG is not set
+CONFIG_SPARSE_IRQ=y
+CONFIG_KTIME_SCALAR=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_ARCH_HAS_TICK_BROADCAST=y
+CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
+
+#
+# Timers subsystem
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ_COMMON=y
+# CONFIG_HZ_PERIODIC is not set
+CONFIG_NO_HZ_IDLE=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+
+#
+# CPU/Task time and stats accounting
+#
+CONFIG_TICK_CPU_ACCOUNTING=y
+# CONFIG_IRQ_TIME_ACCOUNTING is not set
+CONFIG_BSD_PROCESS_ACCT=y
+# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+CONFIG_TASKSTATS=y
+CONFIG_TASK_DELAY_ACCT=y
+CONFIG_TASK_XACCT=y
+CONFIG_TASK_IO_ACCOUNTING=y
+
+#
+# RCU Subsystem
+#
+CONFIG_TREE_RCU=y
+# CONFIG_PREEMPT_RCU is not set
+CONFIG_RCU_STALL_COMMON=y
+CONFIG_CONTEXT_TRACKING=y
+CONFIG_RCU_USER_QS=y
+CONFIG_CONTEXT_TRACKING_FORCE=y
+CONFIG_RCU_FANOUT=32
+CONFIG_RCU_FANOUT_LEAF=16
+# CONFIG_RCU_FANOUT_EXACT is not set
+CONFIG_RCU_FAST_NO_HZ=y
+# CONFIG_TREE_RCU_TRACE is not set
+CONFIG_RCU_NOCB_CPU=y
+# CONFIG_RCU_NOCB_CPU_NONE is not set
+# CONFIG_RCU_NOCB_CPU_ZERO is not set
+CONFIG_RCU_NOCB_CPU_ALL=y
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=18
+CONFIG_CGROUPS=y
+# CONFIG_CGROUP_DEBUG is not set
+CONFIG_CGROUP_FREEZER=y
+CONFIG_CGROUP_DEVICE=y
+CONFIG_CPUSETS=y
+CONFIG_PROC_PID_CPUSET=y
+CONFIG_CGROUP_CPUACCT=y
+CONFIG_RESOURCE_COUNTERS=y
+# CONFIG_MEMCG is not set
+CONFIG_CGROUP_PERF=y
+CONFIG_CGROUP_SCHED=y
+CONFIG_FAIR_GROUP_SCHED=y
+# CONFIG_CFS_BANDWIDTH is not set
+CONFIG_RT_GROUP_SCHED=y
+CONFIG_BLK_CGROUP=y
+# CONFIG_DEBUG_BLK_CGROUP is not set
+CONFIG_NAMESPACES=y
+CONFIG_UTS_NS=y
+CONFIG_IPC_NS=y
+CONFIG_PID_NS=y
+CONFIG_NET_NS=y
+CONFIG_SCHED_AUTOGROUP=y
+# CONFIG_SYSFS_DEPRECATED is not set
+CONFIG_RELAY=y
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_RD_GZIP=y
+CONFIG_RD_BZIP2=y
+CONFIG_RD_LZMA=y
+CONFIG_RD_XZ=y
+CONFIG_RD_LZO=y
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SYSCTL=y
+CONFIG_ANON_INODES=y
+CONFIG_HAVE_UID16=y
+CONFIG_HOTPLUG=y
+CONFIG_EXPERT=y
+CONFIG_UID16=y
+# CONFIG_SYSCTL_SYSCALL is not set
+CONFIG_KALLSYMS=y
+CONFIG_KALLSYMS_ALL=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_AIO=y
+CONFIG_PCI_QUIRKS=y
+CONFIG_EMBEDDED=y
+CONFIG_HAVE_PERF_EVENTS=y
+CONFIG_PERF_USE_VMALLOC=y
+
+#
+# Kernel Performance Events And Counters
+#
+CONFIG_PERF_EVENTS=y
+# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLUB_DEBUG=y
+# CONFIG_COMPAT_BRK is not set
+# CONFIG_SLAB is not set
+CONFIG_SLUB=y
+# CONFIG_SLOB is not set
+# CONFIG_PROFILING is not set
+CONFIG_TRACEPOINTS=y
+CONFIG_HAVE_OPROFILE=y
+# CONFIG_KPROBES is not set
+CONFIG_JUMP_LABEL=y
+# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_ARCH_TRACEHOOK=y
+CONFIG_HAVE_DMA_ATTRS=y
+CONFIG_HAVE_DMA_CONTIGUOUS=y
+CONFIG_USE_GENERIC_SMP_HELPERS=y
+CONFIG_GENERIC_SMP_IDLE_THREAD=y
+CONFIG_GENERIC_IDLE_POLL_SETUP=y
+CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
+CONFIG_HAVE_CLK=y
+CONFIG_HAVE_DMA_API_DEBUG=y
+CONFIG_HAVE_HW_BREAKPOINT=y
+CONFIG_HAVE_ARCH_JUMP_LABEL=y
+CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
+CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
+CONFIG_SECCOMP_FILTER=y
+CONFIG_HAVE_CONTEXT_TRACKING=y
+CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
+CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
+CONFIG_MODULES_USE_ELF_REL=y
+CONFIG_CLONE_BACKWARDS=y
+CONFIG_OLD_SIGSUSPEND3=y
+CONFIG_OLD_SIGACTION=y
+
+#
+# GCOV-based kernel profiling
+#
+# CONFIG_GCOV_KERNEL is not set
+CONFIG_HAVE_GENERIC_DMA_COHERENT=y
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+# CONFIG_MODULE_FORCE_LOAD is not set
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+# CONFIG_MODVERSIONS is not set
+CONFIG_MODULE_SRCVERSION_ALL=y
+# CONFIG_MODULE_SIG is not set
+CONFIG_STOP_MACHINE=y
+CONFIG_BLOCK=y
+CONFIG_LBDAF=y
+CONFIG_BLK_DEV_BSG=y
+CONFIG_BLK_DEV_BSGLIB=y
+CONFIG_BLK_DEV_INTEGRITY=y
+CONFIG_BLK_DEV_THROTTLING=y
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+CONFIG_LDM_PARTITION=y
+# CONFIG_LDM_DEBUG is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+CONFIG_EFI_PARTITION=y
+# CONFIG_SYSV68_PARTITION is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+CONFIG_CFQ_GROUP_IOSCHED=y
+# CONFIG_DEFAULT_DEADLINE is not set
+CONFIG_DEFAULT_CFQ=y
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="cfq"
+CONFIG_PADATA=y
+CONFIG_ASN1=m
+CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
+CONFIG_INLINE_READ_UNLOCK=y
+CONFIG_INLINE_READ_UNLOCK_IRQ=y
+CONFIG_INLINE_WRITE_UNLOCK=y
+CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
+CONFIG_MUTEX_SPIN_ON_OWNER=y
+CONFIG_FREEZER=y
+
+#
+# System Type
+#
+CONFIG_MMU=y
+CONFIG_ARCH_MULTIPLATFORM=y
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_GEMINI is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_DOVE is not set
+# CONFIG_ARCH_KIRKWOOD is not set
+# CONFIG_ARCH_MV78XX0 is not set
+# CONFIG_ARCH_ORION5X is not set
+# CONFIG_ARCH_MMP is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_W90X900 is not set
+# CONFIG_ARCH_LPC32XX is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_MSM is not set
+# CONFIG_ARCH_SHMOBILE is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C24XX is not set
+# CONFIG_ARCH_S3C64XX is not set
+# CONFIG_ARCH_S5P64X0 is not set
+# CONFIG_ARCH_S5PC100 is not set
+# CONFIG_ARCH_S5PV210 is not set
+# CONFIG_ARCH_EXYNOS is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_U300 is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP1 is not set
+
+#
+# Multiple platform selection
+#
+
+#
+# CPU Core family selection
+#
+CONFIG_ARCH_MULTI_V6=y
+CONFIG_ARCH_MULTI_V7=y
+CONFIG_ARCH_MULTI_V6_V7=y
+# CONFIG_ARCH_MULTI_CPU_AUTO is not set
+CONFIG_ARCH_MVEBU=y
+
+#
+# Marvell SOC with device tree
+#
+CONFIG_MACH_ARMADA_370_XP=y
+CONFIG_MACH_ARMADA_370=y
+CONFIG_MACH_ARMADA_XP=y
+CONFIG_ARCH_BCM=y
+CONFIG_ARCH_BCM2835=y
+CONFIG_ARCH_CNS3XXX=y
+
+#
+# CNS3XXX platform type
+#
+CONFIG_MACH_CNS3420VB=y
+# CONFIG_GPIO_PCA953X is not set
+CONFIG_KEYBOARD_GPIO_POLLED=m
+CONFIG_ARCH_HIGHBANK=y
+CONFIG_ARCH_MXC=y
+
+#
+# Freescale i.MX support
+#
+CONFIG_MXC_IRQ_PRIOR=y
+CONFIG_MXC_TZIC=y
+CONFIG_MXC_AVIC=y
+CONFIG_MXC_DEBUG_BOARD=y
+CONFIG_HAVE_EPIT=y
+# CONFIG_MXC_USE_EPIT is not set
+CONFIG_MXC_ULPI=y
+CONFIG_ARCH_HAS_RNGA=y
+CONFIG_HAVE_IMX_ANATOP=y
+CONFIG_HAVE_IMX_GPC=y
+CONFIG_HAVE_IMX_MMDC=y
+CONFIG_HAVE_IMX_SRC=y
+CONFIG_ARCH_MXC_IOMUX_V3=y
+CONFIG_SOC_IMX31=y
+CONFIG_SOC_IMX35=y
+CONFIG_SOC_IMX5=y
+CONFIG_SOC_IMX51=y
+
+#
+# MX31 platforms:
+#
+CONFIG_MACH_MX31ADS=y
+CONFIG_MACH_MX31LILLY=y
+CONFIG_MACH_MX31LITE=y
+CONFIG_MACH_PCM037=y
+CONFIG_MACH_PCM037_EET=y
+CONFIG_MACH_MX31_3DS=y
+CONFIG_MACH_MX31_3DS_MXC_NAND_USE_BBT=y
+CONFIG_MACH_MX31MOBOARD=y
+CONFIG_MACH_QONG=y
+CONFIG_MACH_ARMADILLO5X0=y
+CONFIG_MACH_KZM_ARM11_01=y
+CONFIG_MACH_BUG=y
+CONFIG_MACH_IMX31_DT=y
+
+#
+# MX35 platforms:
+#
+CONFIG_MACH_PCM043=y
+CONFIG_MACH_MX35_3DS=y
+CONFIG_MACH_EUKREA_CPUIMX35SD=y
+CONFIG_MACH_EUKREA_MBIMXSD35_BASEBOARD=y
+CONFIG_MACH_VPR200=y
+
+#
+# i.MX51 machines:
+#
+CONFIG_MACH_IMX51_DT=y
+CONFIG_MACH_MX51_BABBAGE=y
+CONFIG_MACH_EUKREA_CPUIMX51SD=y
+CONFIG_MACH_EUKREA_MBIMXSD51_BASEBOARD=y
+
+#
+# Device tree only
+#
+CONFIG_SOC_IMX53=y
+CONFIG_SOC_IMX6Q=y
+CONFIG_IMX_HAVE_PLATFORM_FEC=y
+CONFIG_IMX_HAVE_PLATFORM_FLEXCAN=y
+CONFIG_IMX_HAVE_PLATFORM_FSL_USB2_UDC=y
+CONFIG_IMX_HAVE_PLATFORM_GPIO_KEYS=y
+CONFIG_IMX_HAVE_PLATFORM_IMX2_WDT=y
+CONFIG_IMX_HAVE_PLATFORM_IMX_FB=y
+CONFIG_IMX_HAVE_PLATFORM_IMX_I2C=y
+CONFIG_IMX_HAVE_PLATFORM_IMX_KEYPAD=y
+CONFIG_IMX_HAVE_PLATFORM_IMX_SSI=y
+CONFIG_IMX_HAVE_PLATFORM_IMX_UART=y
+CONFIG_IMX_HAVE_PLATFORM_IPU_CORE=y
+CONFIG_IMX_HAVE_PLATFORM_MXC_EHCI=y
+CONFIG_IMX_HAVE_PLATFORM_MXC_MMC=y
+CONFIG_IMX_HAVE_PLATFORM_MXC_NAND=y
+CONFIG_IMX_HAVE_PLATFORM_MXC_RNGA=y
+CONFIG_IMX_HAVE_PLATFORM_MXC_RTC=y
+CONFIG_IMX_HAVE_PLATFORM_MXC_W1=y
+CONFIG_IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX=y
+CONFIG_IMX_HAVE_PLATFORM_SPI_IMX=y
+
+#
+# TI OMAP Common Features
+#
+
+#
+# OMAP Feature Selections
+#
+CONFIG_OMAP_DEBUG_DEVICES=y
+CONFIG_OMAP_DEBUG_LEDS=y
+CONFIG_POWER_AVS_OMAP=y
+CONFIG_POWER_AVS_OMAP_CLASS3=y
+CONFIG_OMAP_RESET_CLOCKS=y
+CONFIG_OMAP_MUX=y
+# CONFIG_OMAP_MUX_DEBUG is not set
+CONFIG_OMAP_MUX_WARNINGS=y
+CONFIG_OMAP_32K_TIMER=y
+# CONFIG_OMAP3_L2_AUX_SECURE_SAVE_RESTORE is not set
+CONFIG_OMAP_DM_TIMER=y
+CONFIG_OMAP_PM_NOOP=y
+CONFIG_MACH_OMAP_GENERIC=y
+CONFIG_ARCH_OMAP=y
+CONFIG_ARCH_OMAP2PLUS=y
+
+#
+# TI OMAP2/3/4 Specific Features
+#
+CONFIG_ARCH_OMAP2PLUS_TYPICAL=y
+CONFIG_SOC_HAS_OMAP2_SDRC=y
+CONFIG_SOC_HAS_REALTIME_COUNTER=y
+CONFIG_ARCH_OMAP2=y
+CONFIG_ARCH_OMAP3=y
+CONFIG_ARCH_OMAP4=y
+CONFIG_SOC_OMAP5=y
+
+#
+# OMAP Core Type
+#
+CONFIG_SOC_OMAP2420=y
+CONFIG_SOC_OMAP2430=y
+CONFIG_SOC_OMAP3430=y
+CONFIG_SOC_TI81XX=y
+CONFIG_SOC_AM33XX=y
+CONFIG_OMAP_PACKAGE_ZAF=y
+CONFIG_OMAP_PACKAGE_ZAC=y
+CONFIG_OMAP_PACKAGE_CBB=y
+CONFIG_OMAP_PACKAGE_CUS=y
+CONFIG_OMAP_PACKAGE_CBP=y
+CONFIG_OMAP_PACKAGE_CBL=y
+CONFIG_OMAP_PACKAGE_CBS=y
+
+#
+# OMAP Board Type
+#
+CONFIG_MACH_OMAP2_TUSB6010=y
+CONFIG_MACH_OMAP_H4=y
+CONFIG_MACH_OMAP_2430SDP=y
+CONFIG_MACH_OMAP3_BEAGLE=y
+CONFIG_MACH_DEVKIT8000=y
+CONFIG_MACH_OMAP_LDP=y
+CONFIG_MACH_OMAP3530_LV_SOM=y
+CONFIG_MACH_OMAP3_TORPEDO=y
+CONFIG_MACH_OVERO=y
+CONFIG_MACH_OMAP3EVM=y
+CONFIG_MACH_OMAP3517EVM=y
+CONFIG_MACH_CRANEBOARD=y
+CONFIG_MACH_OMAP3_PANDORA=y
+CONFIG_MACH_TOUCHBOOK=y
+CONFIG_MACH_OMAP_3430SDP=y
+CONFIG_MACH_NOKIA_N800=y
+CONFIG_MACH_NOKIA_N810=y
+CONFIG_MACH_NOKIA_N810_WIMAX=y
+CONFIG_MACH_NOKIA_N8X0=y
+CONFIG_MACH_NOKIA_RM680=y
+CONFIG_MACH_NOKIA_RX51=y
+CONFIG_MACH_OMAP_ZOOM2=y
+CONFIG_MACH_OMAP_ZOOM3=y
+CONFIG_MACH_CM_T35=y
+CONFIG_MACH_CM_T3517=y
+CONFIG_MACH_CM_T3730=y
+CONFIG_MACH_IGEP0020=y
+CONFIG_MACH_IGEP0030=y
+CONFIG_MACH_SBC3530=y
+CONFIG_MACH_OMAP_3630SDP=y
+CONFIG_MACH_TI8168EVM=y
+CONFIG_MACH_TI8148EVM=y
+CONFIG_MACH_OMAP_4430SDP=y
+CONFIG_MACH_OMAP4_PANDA=y
+CONFIG_OMAP3_EMU=y
+# CONFIG_OMAP3_SDRC_AC_TIMING is not set
+CONFIG_ARCH_PICOXCELL=y
+CONFIG_ARCH_SOCFPGA=y
+CONFIG_PLAT_SPEAR=y
+CONFIG_ARCH_SPEAR13XX=y
+CONFIG_MACH_SPEAR1310=y
+CONFIG_MACH_SPEAR1340=y
+CONFIG_ARCH_SUNXI=y
+CONFIG_ARCH_SIRF=y
+
+#
+# CSR SiRF atlas6/primaII/Marco/Polo Specific Features
+#
+CONFIG_ARCH_ATLAS6=y
+CONFIG_ARCH_PRIMA2=y
+CONFIG_ARCH_MARCO=y
+CONFIG_SIRF_IRQ=y
+CONFIG_ARCH_TEGRA=y
+
+#
+# NVIDIA Tegra options
+#
+CONFIG_ARCH_TEGRA_2x_SOC=y
+CONFIG_ARCH_TEGRA_3x_SOC=y
+CONFIG_ARCH_TEGRA_114_SOC=y
+CONFIG_TEGRA_PCI=y
+CONFIG_TEGRA_AHB=y
+# CONFIG_TEGRA_EMC_SCALING_ENABLE is not set
+CONFIG_ARCH_U8500=y
+CONFIG_UX500_SOC_COMMON=y
+CONFIG_UX500_SOC_DB8500=y
+
+#
+# Ux500 target platform (boards)
+#
+CONFIG_MACH_MOP500=y
+CONFIG_MACH_HREFV60=y
+CONFIG_MACH_SNOWBALL=y
+CONFIG_UX500_AUTO_PLATFORM=y
+CONFIG_MACH_UX500_DT=y
+CONFIG_UX500_DEBUG_UART=2
+CONFIG_ARCH_VEXPRESS=y
+
+#
+# Versatile Express platform type
+#
+CONFIG_ARCH_VEXPRESS_CORTEX_A5_A9_ERRATA=y
+CONFIG_ARCH_VEXPRESS_CA9X4=y
+CONFIG_PLAT_VERSATILE_CLCD=y
+CONFIG_PLAT_VERSATILE_SCHED_CLOCK=y
+CONFIG_ARCH_VIRT=y
+CONFIG_ARCH_VT8500=y
+CONFIG_ARCH_WM8750=y
+CONFIG_ARCH_WM8850=y
+CONFIG_ARCH_ZYNQ=y
+CONFIG_PLAT_ORION=y
+CONFIG_PLAT_VERSATILE=y
+CONFIG_ARM_TIMER_SP804=y
+
+#
+# Processor Type
+#
+CONFIG_CPU_PJ4B=y
+CONFIG_CPU_V6=y
+CONFIG_CPU_V6K=y
+CONFIG_CPU_V7=y
+CONFIG_CPU_32v6=y
+CONFIG_CPU_32v6K=y
+CONFIG_CPU_32v7=y
+CONFIG_CPU_ABRT_EV6=y
+CONFIG_CPU_ABRT_EV7=y
+CONFIG_CPU_PABRT_V6=y
+CONFIG_CPU_PABRT_V7=y
+CONFIG_CPU_CACHE_V6=y
+CONFIG_CPU_CACHE_V7=y
+CONFIG_CPU_CACHE_VIPT=y
+CONFIG_CPU_COPY_V6=y
+CONFIG_CPU_TLB_V6=y
+CONFIG_CPU_TLB_V7=y
+CONFIG_CPU_HAS_ASID=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
+CONFIG_ARM_THUMB=y
+# CONFIG_ARM_THUMBEE is not set
+CONFIG_ARM_VIRT_EXT=y
+CONFIG_SWP_EMULATE=y
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_CPU_BPREDICT_DISABLE is not set
+CONFIG_DMA_CACHE_RWFO=y
+CONFIG_OUTER_CACHE=y
+CONFIG_OUTER_CACHE_SYNC=y
+CONFIG_MIGHT_HAVE_CACHE_L2X0=y
+CONFIG_CACHE_L2X0=y
+CONFIG_ARM_L1_CACHE_SHIFT_6=y
+CONFIG_ARM_L1_CACHE_SHIFT=6
+CONFIG_ARM_DMA_MEM_BUFFERABLE=y
+CONFIG_ARM_NR_BANKS=8
+CONFIG_MULTI_IRQ_HANDLER=y
+CONFIG_PJ4B_ERRATA_4742=y
+# CONFIG_ARM_ERRATA_326103 is not set
+CONFIG_ARM_ERRATA_411920=y
+CONFIG_ARM_ERRATA_430973=y
+CONFIG_PL310_ERRATA_588369=y
+CONFIG_ARM_ERRATA_643719=y
+CONFIG_ARM_ERRATA_720789=y
+CONFIG_PL310_ERRATA_727915=y
+CONFIG_ARM_ERRATA_754322=y
+CONFIG_ARM_ERRATA_754327=y
+CONFIG_ARM_ERRATA_764369=y
+CONFIG_PL310_ERRATA_769419=y
+CONFIG_ARM_ERRATA_775420=y
+# CONFIG_ARM_ERRATA_798181 is not set
+CONFIG_ICST=y
+
+#
+# Bus support
+#
+CONFIG_ARM_AMBA=y
+CONFIG_PCI=y
+CONFIG_PCI_DOMAINS=y
+CONFIG_PCI_SYSCALL=y
+# CONFIG_PCI_DEBUG is not set
+# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
+CONFIG_PCI_STUB=y
+CONFIG_PCI_ATS=y
+CONFIG_PCI_IOV=y
+# CONFIG_PCI_PRI is not set
+# CONFIG_PCI_PASID is not set
+CONFIG_PCCARD=m
+# CONFIG_PCMCIA is not set
+CONFIG_CARDBUS=y
+
+#
+# PC-card bridges
+#
+CONFIG_YENTA=m
+CONFIG_YENTA_O2=y
+CONFIG_YENTA_RICOH=y
+CONFIG_YENTA_TI=y
+CONFIG_YENTA_ENE_TUNE=y
+CONFIG_YENTA_TOSHIBA=y
+
+#
+# Kernel Features
+#
+CONFIG_HAVE_SMP=y
+CONFIG_SMP=y
+CONFIG_SMP_ON_UP=y
+CONFIG_ARM_CPU_TOPOLOGY=y
+CONFIG_SCHED_MC=y
+CONFIG_SCHED_SMT=y
+CONFIG_HAVE_ARM_SCU=y
+CONFIG_HAVE_ARM_ARCH_TIMER=y
+CONFIG_HAVE_ARM_TWD=y
+# CONFIG_MCPM is not set
+CONFIG_VMSPLIT_3G=y
+# CONFIG_VMSPLIT_2G is not set
+# CONFIG_VMSPLIT_1G is not set
+CONFIG_PAGE_OFFSET=0xC0000000
+CONFIG_NR_CPUS=8
+CONFIG_HOTPLUG_CPU=y
+CONFIG_ARM_PSCI=y
+CONFIG_LOCAL_TIMERS=y
+CONFIG_ARCH_NR_GPIO=1024
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT is not set
+CONFIG_HZ=100
+CONFIG_SCHED_HRTICK=y
+CONFIG_AEABI=y
+# CONFIG_OABI_COMPAT is not set
+CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
+# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
+# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
+CONFIG_HAVE_ARCH_PFN_VALID=y
+CONFIG_HIGHMEM=y
+# CONFIG_HIGHPTE is not set
+CONFIG_HW_PERF_EVENTS=y
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+CONFIG_HAVE_MEMBLOCK=y
+# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
+CONFIG_PAGEFLAGS_EXTENDED=y
+CONFIG_SPLIT_PTLOCK_CPUS=4
+CONFIG_COMPACTION=y
+CONFIG_MIGRATION=y
+# CONFIG_PHYS_ADDR_T_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_KSM=y
+CONFIG_DEFAULT_MMAP_MIN_ADDR=32768
+CONFIG_CROSS_MEMORY_ATTACH=y
+CONFIG_CLEANCACHE=y
+# CONFIG_FRONTSWAP is not set
+CONFIG_FORCE_MAX_ZONEORDER=12
+CONFIG_ALIGNMENT_TRAP=y
+CONFIG_SECCOMP=y
+CONFIG_CC_STACKPROTECTOR=y
+
+#
+# Boot options
+#
+CONFIG_USE_OF=y
+CONFIG_ATAGS=y
+# CONFIG_DEPRECATED_PARAM_STRUCT is not set
+CONFIG_ZBOOT_ROM_TEXT=0
+CONFIG_ZBOOT_ROM_BSS=0
+CONFIG_ARM_APPENDED_DTB=y
+# CONFIG_ARM_ATAG_DTB_COMPAT is not set
+CONFIG_CMDLINE="console=ttyAM0,115200 root=/dev/sda1 rootdelay=20"
+CONFIG_CMDLINE_FROM_BOOTLOADER=y
+# CONFIG_CMDLINE_EXTEND is not set
+# CONFIG_CMDLINE_FORCE is not set
+# CONFIG_KEXEC is not set
+CONFIG_CRASH_DUMP=y
+CONFIG_AUTO_ZRELADDR=y
+
+#
+# CPU Power Management
+#
+
+#
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ is not set
+# CONFIG_CPU_IDLE is not set
+CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED=y
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_VFP=y
+CONFIG_VFPv3=y
+CONFIG_NEON=y
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
+CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
+CONFIG_BINFMT_SCRIPT=y
+# CONFIG_HAVE_AOUT is not set
+CONFIG_BINFMT_MISC=y
+CONFIG_COREDUMP=y
+
+#
+# Power management options
+#
+CONFIG_SUSPEND=y
+CONFIG_SUSPEND_FREEZER=y
+CONFIG_PM_SLEEP=y
+CONFIG_PM_SLEEP_SMP=y
+# CONFIG_PM_AUTOSLEEP is not set
+# CONFIG_PM_WAKELOCKS is not set
+CONFIG_PM_RUNTIME=y
+CONFIG_PM=y
+# CONFIG_PM_DEBUG is not set
+CONFIG_APM_EMULATION=y
+CONFIG_ARCH_HAS_OPP=y
+CONFIG_PM_OPP=y
+CONFIG_PM_CLK=y
+CONFIG_CPU_PM=y
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_ARM_CPU_SUSPEND=y
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_DIAG=y
+CONFIG_UNIX=y
+CONFIG_UNIX_DIAG=m
+CONFIG_XFRM=y
+CONFIG_XFRM_ALGO=y
+CONFIG_XFRM_USER=y
+CONFIG_XFRM_SUB_POLICY=y
+CONFIG_XFRM_MIGRATE=y
+CONFIG_XFRM_STATISTICS=y
+CONFIG_XFRM_IPCOMP=m
+CONFIG_NET_KEY=m
+CONFIG_NET_KEY_MIGRATE=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_ADVANCED_ROUTER=y
+CONFIG_IP_FIB_TRIE_STATS=y
+CONFIG_IP_MULTIPLE_TABLES=y
+CONFIG_IP_ROUTE_MULTIPATH=y
+CONFIG_IP_ROUTE_VERBOSE=y
+CONFIG_IP_ROUTE_CLASSID=y
+# CONFIG_IP_PNP is not set
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE_DEMUX=m
+CONFIG_NET_IP_TUNNEL=m
+CONFIG_NET_IPGRE=m
+CONFIG_NET_IPGRE_BROADCAST=y
+CONFIG_IP_MROUTE=y
+CONFIG_IP_MROUTE_MULTIPLE_TABLES=y
+CONFIG_IP_PIMSM_V1=y
+CONFIG_IP_PIMSM_V2=y
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+CONFIG_NET_IPVTI=m
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_XFRM_TUNNEL=m
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
+CONFIG_INET_LRO=y
+CONFIG_INET_DIAG=m
+CONFIG_INET_TCP_DIAG=m
+CONFIG_INET_UDP_DIAG=m
+CONFIG_TCP_CONG_ADVANCED=y
+CONFIG_TCP_CONG_BIC=m
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_TCP_CONG_WESTWOOD=m
+CONFIG_TCP_CONG_HTCP=m
+CONFIG_TCP_CONG_HSTCP=m
+CONFIG_TCP_CONG_HYBLA=m
+CONFIG_TCP_CONG_VEGAS=m
+CONFIG_TCP_CONG_SCALABLE=m
+CONFIG_TCP_CONG_LP=m
+CONFIG_TCP_CONG_VENO=m
+CONFIG_TCP_CONG_YEAH=m
+CONFIG_TCP_CONG_ILLINOIS=m
+CONFIG_DEFAULT_CUBIC=y
+# CONFIG_DEFAULT_RENO is not set
+CONFIG_DEFAULT_TCP_CONG="cubic"
+CONFIG_TCP_MD5SIG=y
+CONFIG_IPV6=y
+CONFIG_IPV6_PRIVACY=y
+CONFIG_IPV6_ROUTER_PREF=y
+CONFIG_IPV6_ROUTE_INFO=y
+CONFIG_IPV6_OPTIMISTIC_DAD=y
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+CONFIG_IPV6_MIP6=m
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_SIT_6RD=y
+CONFIG_IPV6_NDISC_NODETYPE=y
+CONFIG_IPV6_TUNNEL=m
+CONFIG_IPV6_GRE=m
+CONFIG_IPV6_MULTIPLE_TABLES=y
+CONFIG_IPV6_SUBTREES=y
+CONFIG_IPV6_MROUTE=y
+CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
+CONFIG_IPV6_PIMSM_V2=y
+# CONFIG_NETLABEL is not set
+CONFIG_NETWORK_SECMARK=y
+# CONFIG_NETWORK_PHY_TIMESTAMPING is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_NETFILTER_ADVANCED=y
+CONFIG_BRIDGE_NETFILTER=y
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_ACCT=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK=y
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_SECMARK=y
+CONFIG_NF_CONNTRACK_ZONES=y
+CONFIG_NF_CONNTRACK_PROCFS=y
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CONNTRACK_TIMEOUT=y
+CONFIG_NF_CONNTRACK_TIMESTAMP=y
+CONFIG_NF_CONNTRACK_LABELS=y
+CONFIG_NF_CT_PROTO_DCCP=m
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=m
+CONFIG_NF_CT_PROTO_UDPLITE=m
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_BROADCAST=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_SNMP=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NF_CT_NETLINK_TIMEOUT=m
+CONFIG_NF_CT_NETLINK_HELPER=m
+CONFIG_NETFILTER_NETLINK_QUEUE_CT=y
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_NF_NAT_PROTO_DCCP=m
+CONFIG_NF_NAT_PROTO_UDPLITE=m
+CONFIG_NF_NAT_PROTO_SCTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NETFILTER_TPROXY=m
+CONFIG_NETFILTER_XTABLES=y
+
+#
+# Xtables combined modules
+#
+CONFIG_NETFILTER_XT_MARK=m
+CONFIG_NETFILTER_XT_CONNMARK=m
+CONFIG_NETFILTER_XT_SET=m
+
+#
+# Xtables targets
+#
+CONFIG_NETFILTER_XT_TARGET_AUDIT=m
+CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m
+CONFIG_NETFILTER_XT_TARGET_CT=m
+CONFIG_NETFILTER_XT_TARGET_DSCP=m
+CONFIG_NETFILTER_XT_TARGET_HL=m
+CONFIG_NETFILTER_XT_TARGET_HMARK=m
+CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m
+CONFIG_NETFILTER_XT_TARGET_LED=m
+CONFIG_NETFILTER_XT_TARGET_LOG=m
+CONFIG_NETFILTER_XT_TARGET_IMQ=m
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NETMAP=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
+CONFIG_NETFILTER_XT_TARGET_RATEEST=m
+CONFIG_NETFILTER_XT_TARGET_REDIRECT=m
+CONFIG_NETFILTER_XT_TARGET_TEE=m
+CONFIG_NETFILTER_XT_TARGET_TPROXY=m
+CONFIG_NETFILTER_XT_TARGET_TRACE=m
+CONFIG_NETFILTER_XT_TARGET_SECMARK=m
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
+
+#
+# Xtables matches
+#
+CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
+CONFIG_NETFILTER_XT_MATCH_BPF=m
+CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m
+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_CPU=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ECN=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_HL=m
+CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
+# CONFIG_NETFILTER_XT_MATCH_IPVS is not set
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_NFACCT=m
+CONFIG_NETFILTER_XT_MATCH_OSF=m
+CONFIG_NETFILTER_XT_MATCH_OWNER=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_RATEEST=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_RECENT=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_SOCKET=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_LAYER7=m
+# CONFIG_NETFILTER_XT_MATCH_LAYER7_DEBUG is not set
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_TIME=m
+CONFIG_NETFILTER_XT_MATCH_U32=m
+CONFIG_IP_SET=m
+CONFIG_IP_SET_MAX=256
+CONFIG_IP_SET_BITMAP_IP=m
+CONFIG_IP_SET_BITMAP_IPMAC=m
+CONFIG_IP_SET_BITMAP_PORT=m
+CONFIG_IP_SET_HASH_IP=m
+CONFIG_IP_SET_HASH_IPPORT=m
+CONFIG_IP_SET_HASH_IPPORTIP=m
+CONFIG_IP_SET_HASH_IPPORTNET=m
+CONFIG_IP_SET_HASH_NET=m
+CONFIG_IP_SET_HASH_NETPORT=m
+CONFIG_IP_SET_HASH_NETIFACE=m
+CONFIG_IP_SET_LIST_SET=m
+CONFIG_IP_VS=m
+CONFIG_IP_VS_IPV6=y
+# CONFIG_IP_VS_DEBUG is not set
+CONFIG_IP_VS_TAB_BITS=12
+
+#
+# IPVS transport protocol load balancing support
+#
+CONFIG_IP_VS_PROTO_TCP=y
+CONFIG_IP_VS_PROTO_UDP=y
+CONFIG_IP_VS_PROTO_AH_ESP=y
+CONFIG_IP_VS_PROTO_ESP=y
+CONFIG_IP_VS_PROTO_AH=y
+CONFIG_IP_VS_PROTO_SCTP=y
+
+#
+# IPVS scheduler
+#
+CONFIG_IP_VS_RR=m
+CONFIG_IP_VS_WRR=m
+CONFIG_IP_VS_LC=m
+CONFIG_IP_VS_WLC=m
+CONFIG_IP_VS_LBLC=m
+CONFIG_IP_VS_LBLCR=m
+CONFIG_IP_VS_DH=m
+CONFIG_IP_VS_SH=m
+CONFIG_IP_VS_SED=m
+CONFIG_IP_VS_NQ=m
+
+#
+# IPVS SH scheduler
+#
+CONFIG_IP_VS_SH_TAB_BITS=8
+
+#
+# IPVS application helper
+#
+CONFIG_IP_VS_FTP=m
+CONFIG_IP_VS_NFCT=y
+CONFIG_IP_VS_PE_SIP=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_DEFRAG_IPV4=y
+CONFIG_NF_CONNTRACK_IPV4=y
+# CONFIG_NF_CONNTRACK_PROC_COMPAT is not set
+CONFIG_IP_NF_IPTABLES=y
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_RPFILTER=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+# CONFIG_IP_NF_TARGET_ULOG is not set
+CONFIG_NF_NAT_IPV4=m
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_SECURITY=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+CONFIG_IP_NF_MATCH_IPP2P=m
+
+#
+# IPv6: Netfilter Configuration
+#
+CONFIG_NF_DEFRAG_IPV6=y
+CONFIG_NF_CONNTRACK_IPV6=y
+CONFIG_IP6_NF_IPTABLES=y
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_RPFILTER=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_RAW=m
+CONFIG_IP6_NF_SECURITY=m
+CONFIG_NF_NAT_IPV6=m
+CONFIG_IP6_NF_TARGET_MASQUERADE=m
+CONFIG_IP6_NF_TARGET_NPT=m
+CONFIG_BRIDGE_NF_EBTABLES=m
+CONFIG_BRIDGE_EBT_BROUTE=m
+CONFIG_BRIDGE_EBT_T_FILTER=m
+CONFIG_BRIDGE_EBT_T_NAT=m
+CONFIG_BRIDGE_EBT_802_3=m
+CONFIG_BRIDGE_EBT_AMONG=m
+CONFIG_BRIDGE_EBT_ARP=m
+CONFIG_BRIDGE_EBT_IP=m
+CONFIG_BRIDGE_EBT_IP6=m
+CONFIG_BRIDGE_EBT_LIMIT=m
+CONFIG_BRIDGE_EBT_MARK=m
+CONFIG_BRIDGE_EBT_PKTTYPE=m
+CONFIG_BRIDGE_EBT_STP=m
+CONFIG_BRIDGE_EBT_VLAN=m
+CONFIG_BRIDGE_EBT_ARPREPLY=m
+CONFIG_BRIDGE_EBT_DNAT=m
+CONFIG_BRIDGE_EBT_MARK_T=m
+CONFIG_BRIDGE_EBT_REDIRECT=m
+CONFIG_BRIDGE_EBT_SNAT=m
+CONFIG_BRIDGE_EBT_LOG=m
+# CONFIG_BRIDGE_EBT_ULOG is not set
+CONFIG_BRIDGE_EBT_NFLOG=m
+# CONFIG_IP_DCCP is not set
+CONFIG_IP_SCTP=m
+# CONFIG_SCTP_DBG_MSG is not set
+# CONFIG_SCTP_DBG_OBJCNT is not set
+# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5 is not set
+CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1=y
+# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set
+CONFIG_SCTP_COOKIE_HMAC_MD5=y
+CONFIG_SCTP_COOKIE_HMAC_SHA1=y
+# CONFIG_RDS is not set
+# CONFIG_TIPC is not set
+CONFIG_ATM=m
+CONFIG_ATM_CLIP=m
+# CONFIG_ATM_CLIP_NO_ICMP is not set
+# CONFIG_ATM_LANE is not set
+CONFIG_ATM_BR2684=m
+# CONFIG_ATM_BR2684_IPFILTER is not set
+CONFIG_L2TP=m
+# CONFIG_L2TP_DEBUGFS is not set
+CONFIG_L2TP_V3=y
+CONFIG_L2TP_IP=m
+CONFIG_L2TP_ETH=m
+CONFIG_STP=y
+CONFIG_GARP=y
+CONFIG_BRIDGE=y
+CONFIG_BRIDGE_IGMP_SNOOPING=y
+CONFIG_BRIDGE_VLAN_FILTERING=y
+CONFIG_HAVE_NET_DSA=y
+CONFIG_NET_DSA=y
+CONFIG_NET_DSA_TAG_DSA=y
+CONFIG_NET_DSA_TAG_EDSA=y
+CONFIG_NET_DSA_TAG_TRAILER=y
+CONFIG_VLAN_8021Q=m
+CONFIG_VLAN_8021Q_GVRP=y
+# CONFIG_VLAN_8021Q_MVRP is not set
+# CONFIG_DECNET is not set
+CONFIG_LLC=y
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_PHONET is not set
+# CONFIG_IEEE802154 is not set
+CONFIG_NET_SCHED=y
+
+#
+# Queueing/Scheduling
+#
+CONFIG_NET_SCH_CBQ=m
+CONFIG_NET_SCH_HTB=m
+CONFIG_NET_SCH_HFSC=m
+CONFIG_NET_SCH_ATM=m
+CONFIG_NET_SCH_PRIO=m
+CONFIG_NET_SCH_MULTIQ=m
+CONFIG_NET_SCH_RED=m
+CONFIG_NET_SCH_SFB=m
+CONFIG_NET_SCH_SFQ=m
+CONFIG_NET_SCH_TEQL=m
+CONFIG_NET_SCH_TBF=m
+CONFIG_NET_SCH_GRED=m
+CONFIG_NET_SCH_DSMARK=m
+CONFIG_NET_SCH_NETEM=m
+CONFIG_NET_SCH_DRR=m
+CONFIG_NET_SCH_MQPRIO=m
+CONFIG_NET_SCH_CHOKE=m
+CONFIG_NET_SCH_QFQ=m
+CONFIG_NET_SCH_CODEL=m
+CONFIG_NET_SCH_FQ_CODEL=m
+CONFIG_NET_SCH_INGRESS=m
+CONFIG_NET_SCH_PLUG=m
+
+#
+# Classification
+#
+CONFIG_NET_CLS=y
+CONFIG_NET_CLS_BASIC=m
+CONFIG_NET_CLS_TCINDEX=m
+CONFIG_NET_CLS_ROUTE4=m
+CONFIG_NET_CLS_FW=m
+CONFIG_NET_CLS_U32=m
+CONFIG_CLS_U32_PERF=y
+CONFIG_CLS_U32_MARK=y
+CONFIG_NET_CLS_RSVP=m
+CONFIG_NET_CLS_RSVP6=m
+CONFIG_NET_CLS_FLOW=m
+CONFIG_NET_CLS_CGROUP=m
+CONFIG_NET_EMATCH=y
+CONFIG_NET_EMATCH_STACK=32
+CONFIG_NET_EMATCH_CMP=m
+CONFIG_NET_EMATCH_NBYTE=m
+CONFIG_NET_EMATCH_U32=m
+CONFIG_NET_EMATCH_META=m
+CONFIG_NET_EMATCH_TEXT=m
+CONFIG_NET_EMATCH_IPSET=m
+CONFIG_NET_CLS_ACT=y
+CONFIG_NET_ACT_POLICE=m
+CONFIG_NET_ACT_GACT=m
+CONFIG_GACT_PROB=y
+CONFIG_NET_ACT_MIRRED=m
+CONFIG_NET_ACT_IPT=m
+CONFIG_NET_ACT_NAT=m
+CONFIG_NET_ACT_PEDIT=m
+CONFIG_NET_ACT_SIMP=m
+CONFIG_NET_ACT_SKBEDIT=m
+CONFIG_NET_ACT_CSUM=m
+CONFIG_NET_CLS_IND=y
+CONFIG_NET_SCH_FIFO=y
+# CONFIG_DCB is not set
+CONFIG_DNS_RESOLVER=y
+CONFIG_BATMAN_ADV=m
+CONFIG_BATMAN_ADV_BLA=y
+CONFIG_BATMAN_ADV_DAT=y
+CONFIG_BATMAN_ADV_NC=y
+# CONFIG_BATMAN_ADV_DEBUG is not set
+CONFIG_OPENVSWITCH=m
+CONFIG_VSOCKETS=m
+CONFIG_NETLINK_MMAP=y
+CONFIG_NETLINK_DIAG=m
+CONFIG_RPS=y
+CONFIG_RFS_ACCEL=y
+CONFIG_XPS=y
+CONFIG_NETPRIO_CGROUP=m
+CONFIG_BQL=y
+CONFIG_BPF_JIT=y
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_NET_DROP_MONITOR is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_CAN is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_CMTP=m
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIBTUSB=m
+CONFIG_BT_HCIBTSDIO=m
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIUART_ATH3K=y
+CONFIG_BT_HCIUART_LL=y
+CONFIG_BT_HCIUART_3WIRE=y
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIVHCI=m
+CONFIG_BT_MRVL=m
+CONFIG_BT_MRVL_SDIO=m
+CONFIG_BT_ATH3K=m
+CONFIG_BT_WILINK=m
+# CONFIG_AF_RXRPC is not set
+CONFIG_FIB_RULES=y
+CONFIG_WIRELESS=y
+CONFIG_WIRELESS_EXT=y
+CONFIG_WEXT_CORE=y
+CONFIG_WEXT_PROC=y
+CONFIG_WEXT_SPY=y
+CONFIG_WEXT_PRIV=y
+CONFIG_CFG80211=m
+# CONFIG_NL80211_TESTMODE is not set
+# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
+# CONFIG_CFG80211_REG_DEBUG is not set
+# CONFIG_CFG80211_CERTIFICATION_ONUS is not set
+CONFIG_CFG80211_DEFAULT_PS=y
+# CONFIG_CFG80211_DEBUGFS is not set
+# CONFIG_CFG80211_INTERNAL_REGDB is not set
+CONFIG_CFG80211_WEXT=y
+CONFIG_LIB80211=m
+CONFIG_LIB80211_CRYPT_WEP=m
+CONFIG_LIB80211_CRYPT_CCMP=m
+CONFIG_LIB80211_CRYPT_TKIP=m
+# CONFIG_LIB80211_DEBUG is not set
+CONFIG_MAC80211=m
+CONFIG_MAC80211_HAS_RC=y
+# CONFIG_MAC80211_RC_PID is not set
+CONFIG_MAC80211_RC_MINSTREL=y
+CONFIG_MAC80211_RC_MINSTREL_HT=y
+CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
+CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
+CONFIG_MAC80211_MESH=y
+CONFIG_MAC80211_LEDS=y
+# CONFIG_MAC80211_DEBUGFS is not set
+# CONFIG_MAC80211_MESSAGE_TRACING is not set
+# CONFIG_MAC80211_DEBUG_MENU is not set
+# CONFIG_WIMAX is not set
+CONFIG_RFKILL=m
+CONFIG_RFKILL_LEDS=y
+CONFIG_RFKILL_INPUT=y
+# CONFIG_RFKILL_REGULATOR is not set
+# CONFIG_RFKILL_GPIO is not set
+# CONFIG_NET_9P is not set
+# CONFIG_CAIF is not set
+# CONFIG_CEPH_LIB is not set
+# CONFIG_NFC is not set
+CONFIG_HAVE_BPF_JIT=y
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH=""
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_FIRMWARE_IN_KERNEL is not set
+CONFIG_EXTRA_FIRMWARE=""
+CONFIG_FW_LOADER_USER_HELPER=y
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+# CONFIG_GENERIC_CPU_DEVICES is not set
+CONFIG_SOC_BUS=y
+CONFIG_REGMAP=y
+CONFIG_REGMAP_I2C=y
+CONFIG_REGMAP_MMIO=y
+CONFIG_REGMAP_IRQ=y
+CONFIG_DMA_SHARED_BUFFER=y
+# CONFIG_CMA is not set
+
+#
+# Bus devices
+#
+CONFIG_MVEBU_MBUS=y
+CONFIG_OMAP_OCP2SCP=m
+CONFIG_OMAP_INTERCONNECT=y
+CONFIG_CONNECTOR=y
+CONFIG_PROC_EVENTS=y
+CONFIG_MTD=y
+CONFIG_MTD_TESTS=m
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_AFS_PARTS is not set
+CONFIG_MTD_OF_PARTS=y
+# CONFIG_MTD_AR7_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+CONFIG_SM_FTL=m
+# CONFIG_MTD_OOPS is not set
+# CONFIG_MTD_SWAP is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+# CONFIG_MTD_CFI is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+CONFIG_MTD_RAM=m
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_INTEL_VR_NOR is not set
+CONFIG_MTD_PLATRAM=m
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+CONFIG_MTD_SPEAR_SMI=y
+CONFIG_MTD_SLRAM=m
+CONFIG_MTD_PHRAM=m
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOCG3 is not set
+CONFIG_MTD_NAND_ECC=y
+# CONFIG_MTD_NAND_ECC_SMC is not set
+CONFIG_MTD_NAND=y
+# CONFIG_MTD_NAND_ECC_BCH is not set
+# CONFIG_MTD_SM_COMMON is not set
+# CONFIG_MTD_NAND_DENALI is not set
+# CONFIG_MTD_NAND_GPIO is not set
+CONFIG_MTD_NAND_OMAP2=y
+# CONFIG_MTD_NAND_OMAP_BCH is not set
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_RICOH is not set
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_DOCG4 is not set
+# CONFIG_MTD_NAND_CAFE is not set
+# CONFIG_MTD_NAND_NANDSIM is not set
+CONFIG_MTD_NAND_PLATFORM=y
+# CONFIG_MTD_ALAUDA is not set
+CONFIG_MTD_NAND_ORION=m
+CONFIG_MTD_NAND_MXC=m
+# CONFIG_MTD_NAND_FSMC is not set
+CONFIG_MTD_ONENAND=y
+# CONFIG_MTD_ONENAND_VERIFY_WRITE is not set
+# CONFIG_MTD_ONENAND_GENERIC is not set
+CONFIG_MTD_ONENAND_OMAP2=y
+# CONFIG_MTD_ONENAND_OTP is not set
+CONFIG_MTD_ONENAND_2X_PROGRAM=y
+
+#
+# LPDDR flash memory drivers
+#
+# CONFIG_MTD_LPDDR is not set
+# CONFIG_MTD_UBI is not set
+CONFIG_DTC=y
+CONFIG_OF=y
+
+#
+# Device Tree and Open Firmware support
+#
+CONFIG_PROC_DEVICETREE=y
+# CONFIG_OF_SELFTEST is not set
+CONFIG_OF_FLATTREE=y
+CONFIG_OF_EARLY_FLATTREE=y
+CONFIG_OF_ADDRESS=y
+CONFIG_OF_IRQ=y
+CONFIG_OF_DEVICE=y
+CONFIG_OF_I2C=y
+CONFIG_OF_NET=y
+CONFIG_OF_MDIO=y
+CONFIG_OF_PCI=y
+CONFIG_OF_PCI_IRQ=y
+CONFIG_OF_MTD=y
+# CONFIG_PARPORT is not set
+CONFIG_BLK_DEV=y
+CONFIG_BLK_DEV_PCIESSD_MTIP32XX=y
+CONFIG_BLK_CPQ_CISS_DA=m
+# CONFIG_CISS_SCSI_TAPE is not set
+CONFIG_BLK_DEV_DAC960=m
+CONFIG_BLK_DEV_UMEM=m
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
+CONFIG_BLK_DEV_CRYPTOLOOP=m
+# CONFIG_BLK_DEV_DRBD is not set
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_NVME=m
+# CONFIG_BLK_DEV_OSD is not set
+CONFIG_BLK_DEV_SX8=m
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=65536
+# CONFIG_BLK_DEV_XIP is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_MG_DISK=m
+CONFIG_MG_DISK_RES=0
+# CONFIG_BLK_DEV_RBD is not set
+CONFIG_BLK_DEV_RSXX=m
+
+#
+# Misc devices
+#
+# CONFIG_SENSORS_LIS3LV02D is not set
+# CONFIG_AD525X_DPOT is not set
+# CONFIG_ATMEL_PWM is not set
+CONFIG_DUMMY_IRQ=m
+# CONFIG_PHANTOM is not set
+# CONFIG_INTEL_MID_PTI is not set
+# CONFIG_SGI_IOC4 is not set
+CONFIG_TIFM_CORE=m
+CONFIG_TIFM_7XX1=m
+CONFIG_ICS932S401=m
+# CONFIG_ATMEL_SSC is not set
+CONFIG_ENCLOSURE_SERVICES=m
+CONFIG_HP_ILO=m
+# CONFIG_APDS9802ALS is not set
+# CONFIG_ISL29003 is not set
+# CONFIG_ISL29020 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_SENSORS_BH1780 is not set
+# CONFIG_SENSORS_BH1770 is not set
+# CONFIG_SENSORS_APDS990X is not set
+# CONFIG_HMC6352 is not set
+CONFIG_DS1682=m
+# CONFIG_ARM_CHARLCD is not set
+CONFIG_BMP085=y
+CONFIG_BMP085_I2C=m
+CONFIG_PCH_PHUB=m
+CONFIG_USB_SWITCH_FSA9480=m
+# CONFIG_SRAM is not set
+# CONFIG_C2PORT is not set
+
+#
+# EEPROM support
+#
+CONFIG_EEPROM_AT24=m
+CONFIG_EEPROM_LEGACY=m
+CONFIG_EEPROM_MAX6875=m
+CONFIG_EEPROM_93CX6=m
+CONFIG_CB710_CORE=m
+# CONFIG_CB710_DEBUG is not set
+CONFIG_CB710_DEBUG_ASSUMPTIONS=y
+
+#
+# Texas Instruments shared transport line discipline
+#
+CONFIG_TI_ST=m
+# CONFIG_SENSORS_LIS3_I2C is not set
+
+#
+# Altera FPGA firmware download module
+#
+CONFIG_ALTERA_STAPL=m
+CONFIG_HAVE_IDE=y
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+CONFIG_SCSI_MOD=y
+CONFIG_RAID_ATTRS=m
+CONFIG_SCSI=y
+CONFIG_SCSI_DMA=y
+CONFIG_SCSI_TGT=m
+CONFIG_SCSI_NETLINK=y
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+CONFIG_CHR_DEV_ST=m
+CONFIG_CHR_DEV_OSST=m
+CONFIG_BLK_DEV_SR=y
+CONFIG_BLK_DEV_SR_VENDOR=y
+CONFIG_CHR_DEV_SG=y
+CONFIG_CHR_DEV_SCH=m
+CONFIG_SCSI_ENCLOSURE=m
+CONFIG_SCSI_MULTI_LUN=y
+CONFIG_SCSI_CONSTANTS=y
+CONFIG_SCSI_LOGGING=y
+CONFIG_SCSI_SCAN_ASYNC=y
+
+#
+# SCSI Transports
+#
+CONFIG_SCSI_SPI_ATTRS=m
+CONFIG_SCSI_FC_ATTRS=m
+CONFIG_SCSI_FC_TGT_ATTRS=y
+CONFIG_SCSI_ISCSI_ATTRS=m
+CONFIG_SCSI_SAS_ATTRS=m
+CONFIG_SCSI_SAS_LIBSAS=m
+CONFIG_SCSI_SAS_ATA=y
+CONFIG_SCSI_SAS_HOST_SMP=y
+CONFIG_SCSI_SRP_ATTRS=m
+CONFIG_SCSI_SRP_TGT_ATTRS=y
+CONFIG_SCSI_LOWLEVEL=y
+CONFIG_ISCSI_TCP=m
+CONFIG_ISCSI_BOOT_SYSFS=m
+CONFIG_SCSI_CXGB3_ISCSI=m
+CONFIG_SCSI_CXGB4_ISCSI=m
+CONFIG_SCSI_BNX2_ISCSI=m
+CONFIG_SCSI_BNX2X_FCOE=m
+CONFIG_BE2ISCSI=m
+CONFIG_BLK_DEV_3W_XXXX_RAID=m
+CONFIG_SCSI_HPSA=m
+CONFIG_SCSI_3W_9XXX=m
+CONFIG_SCSI_3W_SAS=m
+# CONFIG_SCSI_ACARD is not set
+CONFIG_SCSI_AACRAID=m
+CONFIG_SCSI_AIC7XXX=m
+CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
+CONFIG_AIC7XXX_RESET_DELAY_MS=5000
+CONFIG_AIC7XXX_DEBUG_ENABLE=y
+CONFIG_AIC7XXX_DEBUG_MASK=0
+CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
+# CONFIG_SCSI_AIC7XXX_OLD is not set
+CONFIG_SCSI_AIC79XX=m
+CONFIG_AIC79XX_CMDS_PER_DEVICE=32
+CONFIG_AIC79XX_RESET_DELAY_MS=4000
+# CONFIG_AIC79XX_DEBUG_ENABLE is not set
+CONFIG_AIC79XX_DEBUG_MASK=0
+# CONFIG_AIC79XX_REG_PRETTY_PRINT is not set
+CONFIG_SCSI_AIC94XX=m
+# CONFIG_AIC94XX_DEBUG is not set
+CONFIG_SCSI_MVSAS=m
+# CONFIG_SCSI_MVSAS_DEBUG is not set
+CONFIG_SCSI_MVSAS_TASKLET=y
+# CONFIG_SCSI_MVUMI is not set
+CONFIG_SCSI_ARCMSR=m
+CONFIG_MEGARAID_NEWGEN=y
+CONFIG_MEGARAID_MM=m
+CONFIG_MEGARAID_MAILBOX=m
+CONFIG_MEGARAID_LEGACY=m
+CONFIG_MEGARAID_SAS=m
+CONFIG_SCSI_MPT2SAS=m
+CONFIG_SCSI_MPT2SAS_MAX_SGE=128
+# CONFIG_SCSI_MPT2SAS_LOGGING is not set
+CONFIG_SCSI_MPT3SAS=m
+CONFIG_SCSI_MPT3SAS_MAX_SGE=128
+# CONFIG_SCSI_MPT3SAS_LOGGING is not set
+CONFIG_SCSI_UFSHCD=m
+CONFIG_SCSI_UFSHCD_PCI=m
+CONFIG_SCSI_UFSHCD_PLATFORM=m
+CONFIG_SCSI_HPTIOP=m
+CONFIG_LIBFC=m
+CONFIG_LIBFCOE=m
+CONFIG_FCOE=m
+CONFIG_SCSI_DMX3191D=m
+CONFIG_SCSI_FUTURE_DOMAIN=m
+CONFIG_SCSI_IPS=m
+CONFIG_SCSI_INITIO=m
+CONFIG_SCSI_INIA100=m
+CONFIG_SCSI_STEX=m
+CONFIG_SCSI_SYM53C8XX_2=m
+CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
+CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
+CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
+CONFIG_SCSI_SYM53C8XX_MMIO=y
+CONFIG_SCSI_IPR=m
+CONFIG_SCSI_IPR_TRACE=y
+CONFIG_SCSI_IPR_DUMP=y
+CONFIG_SCSI_QLOGIC_1280=m
+CONFIG_SCSI_QLA_FC=m
+CONFIG_SCSI_QLA_ISCSI=m
+CONFIG_SCSI_LPFC=m
+# CONFIG_SCSI_LPFC_DEBUG_FS is not set
+CONFIG_SCSI_DC395x=m
+CONFIG_SCSI_DC390T=m
+# CONFIG_SCSI_NSP32 is not set
+# CONFIG_SCSI_DEBUG is not set
+CONFIG_SCSI_PMCRAID=m
+CONFIG_SCSI_PM8001=m
+# CONFIG_SCSI_SRP is not set
+CONFIG_SCSI_BFA_FC=m
+CONFIG_SCSI_CHELSIO_FCOE=m
+CONFIG_SCSI_DH=y
+CONFIG_SCSI_DH_RDAC=m
+CONFIG_SCSI_DH_HP_SW=m
+CONFIG_SCSI_DH_EMC=m
+CONFIG_SCSI_DH_ALUA=m
+CONFIG_SCSI_OSD_INITIATOR=m
+CONFIG_SCSI_OSD_ULD=m
+CONFIG_SCSI_OSD_DPRINT_SENSE=1
+# CONFIG_SCSI_OSD_DEBUG is not set
+CONFIG_HAVE_PATA_PLATFORM=y
+CONFIG_ATA=y
+# CONFIG_ATA_NONSTANDARD is not set
+CONFIG_ATA_VERBOSE_ERROR=y
+CONFIG_SATA_PMP=y
+
+#
+# Controllers with non-SFF native interface
+#
+CONFIG_SATA_AHCI=y
+CONFIG_SATA_AHCI_PLATFORM=m
+CONFIG_SATA_INIC162X=m
+CONFIG_SATA_ACARD_AHCI=m
+CONFIG_SATA_SIL24=m
+CONFIG_ATA_SFF=y
+
+#
+# SFF controllers with custom DMA interface
+#
+CONFIG_PDC_ADMA=m
+CONFIG_SATA_QSTOR=m
+CONFIG_SATA_SX4=m
+CONFIG_ATA_BMDMA=y
+
+#
+# SATA SFF controllers with BMDMA
+#
+CONFIG_ATA_PIIX=y
+CONFIG_SATA_HIGHBANK=m
+CONFIG_SATA_MV=m
+CONFIG_SATA_NV=m
+CONFIG_SATA_PROMISE=m
+CONFIG_SATA_SIL=m
+CONFIG_SATA_SIS=m
+CONFIG_SATA_SVW=m
+CONFIG_SATA_ULI=m
+CONFIG_SATA_VIA=m
+CONFIG_SATA_VITESSE=m
+
+#
+# PATA SFF controllers with BMDMA
+#
+CONFIG_PATA_ALI=m
+CONFIG_PATA_AMD=m
+CONFIG_PATA_ARASAN_CF=m
+CONFIG_PATA_ARTOP=m
+CONFIG_PATA_ATIIXP=m
+CONFIG_PATA_ATP867X=m
+CONFIG_PATA_CMD64X=m
+CONFIG_PATA_CS5520=m
+CONFIG_PATA_CS5530=m
+CONFIG_PATA_CS5536=m
+CONFIG_PATA_CYPRESS=m
+CONFIG_PATA_EFAR=m
+CONFIG_PATA_HPT366=m
+CONFIG_PATA_HPT37X=m
+CONFIG_PATA_HPT3X2N=m
+CONFIG_PATA_HPT3X3=m
+# CONFIG_PATA_HPT3X3_DMA is not set
+CONFIG_PATA_IMX=m
+CONFIG_PATA_IT8213=m
+CONFIG_PATA_IT821X=m
+CONFIG_PATA_JMICRON=m
+CONFIG_PATA_MARVELL=m
+CONFIG_PATA_NETCELL=m
+CONFIG_PATA_NINJA32=m
+CONFIG_PATA_NS87415=m
+CONFIG_PATA_OLDPIIX=m
+CONFIG_PATA_OPTIDMA=m
+CONFIG_PATA_PDC2027X=m
+CONFIG_PATA_PDC_OLD=m
+# CONFIG_PATA_RADISYS is not set
+CONFIG_PATA_RDC=m
+# CONFIG_PATA_SC1200 is not set
+CONFIG_PATA_SCH=m
+CONFIG_PATA_SERVERWORKS=m
+CONFIG_PATA_SIL680=m
+CONFIG_PATA_SIS=m
+CONFIG_PATA_TOSHIBA=m
+CONFIG_PATA_TRIFLEX=m
+CONFIG_PATA_VIA=m
+CONFIG_PATA_WINBOND=m
+
+#
+# PIO-only SFF controllers
+#
+CONFIG_PATA_CMD640_PCI=m
+CONFIG_PATA_MPIIX=m
+CONFIG_PATA_NS87410=m
+CONFIG_PATA_OPTI=m
+CONFIG_PATA_PLATFORM=m
+CONFIG_PATA_OF_PLATFORM=m
+CONFIG_PATA_RZ1000=m
+
+#
+# Generic fallback / legacy drivers
+#
+CONFIG_ATA_GENERIC=m
+# CONFIG_PATA_LEGACY is not set
+CONFIG_MD=y
+CONFIG_BLK_DEV_MD=y
+CONFIG_MD_AUTODETECT=y
+CONFIG_MD_LINEAR=m
+CONFIG_MD_RAID0=m
+CONFIG_MD_RAID1=m
+CONFIG_MD_RAID10=m
+CONFIG_MD_RAID456=m
+CONFIG_MD_MULTIPATH=m
+CONFIG_MD_FAULTY=m
+CONFIG_BCACHE=m
+# CONFIG_BCACHE_DEBUG is not set
+# CONFIG_BCACHE_EDEBUG is not set
+# CONFIG_BCACHE_CLOSURES_DEBUG is not set
+CONFIG_BLK_DEV_DM=y
+# CONFIG_DM_DEBUG is not set
+CONFIG_DM_BUFIO=m
+CONFIG_DM_BIO_PRISON=m
+CONFIG_DM_PERSISTENT_DATA=m
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=y
+# CONFIG_DM_THIN_PROVISIONING is not set
+CONFIG_DM_CACHE=m
+CONFIG_DM_CACHE_MQ=m
+CONFIG_DM_CACHE_CLEANER=m
+CONFIG_DM_MIRROR=y
+CONFIG_DM_RAID=m
+CONFIG_DM_LOG_USERSPACE=m
+CONFIG_DM_ZERO=y
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_MULTIPATH_QL=m
+CONFIG_DM_MULTIPATH_ST=m
+# CONFIG_DM_DELAY is not set
+CONFIG_DM_UEVENT=y
+# CONFIG_DM_FLAKEY is not set
+CONFIG_DM_VERITY=m
+# CONFIG_TARGET_CORE is not set
+CONFIG_FUSION=y
+CONFIG_FUSION_SPI=m
+CONFIG_FUSION_FC=m
+CONFIG_FUSION_SAS=m
+CONFIG_FUSION_MAX_SGE=40
+CONFIG_FUSION_CTL=m
+CONFIG_FUSION_LOGGING=y
+
+#
+# IEEE 1394 (FireWire) support
+#
+CONFIG_FIREWIRE=m
+CONFIG_FIREWIRE_OHCI=m
+CONFIG_FIREWIRE_SBP2=m
+# CONFIG_FIREWIRE_NET is not set
+# CONFIG_FIREWIRE_NOSY is not set
+CONFIG_I2O=m
+# CONFIG_I2O_LCT_NOTIFY_ON_CHANGES is not set
+CONFIG_I2O_EXT_ADAPTEC=y
+CONFIG_I2O_BUS=m
+CONFIG_I2O_BLOCK=m
+CONFIG_I2O_SCSI=m
+CONFIG_I2O_PROC=m
+CONFIG_NETDEVICES=y
+CONFIG_NET_CORE=y
+CONFIG_BONDING=m
+CONFIG_DUMMY=m
+# CONFIG_EQUALIZER is not set
+# CONFIG_NET_FC is not set
+CONFIG_MII=m
+CONFIG_IFB=m
+# CONFIG_NET_TEAM is not set
+CONFIG_MACVLAN=m
+CONFIG_MACVTAP=m
+CONFIG_VXLAN=m
+CONFIG_NETCONSOLE=m
+CONFIG_NETCONSOLE_DYNAMIC=y
+CONFIG_NETPOLL=y
+CONFIG_NETPOLL_TRAP=y
+CONFIG_NET_POLL_CONTROLLER=y
+CONFIG_IMQ=m
+# CONFIG_IMQ_BEHAVIOR_AA is not set
+CONFIG_IMQ_BEHAVIOR_AB=y
+# CONFIG_IMQ_BEHAVIOR_BA is not set
+# CONFIG_IMQ_BEHAVIOR_BB is not set
+CONFIG_IMQ_NUM_DEVS=2
+CONFIG_TUN=m
+CONFIG_VETH=m
+CONFIG_SUNGEM_PHY=m
+# CONFIG_ARCNET is not set
+CONFIG_ATM_DRIVERS=y
+# CONFIG_ATM_DUMMY is not set
+CONFIG_ATM_TCP=m
+CONFIG_ATM_LANAI=m
+CONFIG_ATM_ENI=m
+# CONFIG_ATM_ENI_DEBUG is not set
+# CONFIG_ATM_ENI_TUNE_BURST is not set
+CONFIG_ATM_NICSTAR=m
+# CONFIG_ATM_NICSTAR_USE_SUNI is not set
+# CONFIG_ATM_NICSTAR_USE_IDT77105 is not set
+CONFIG_ATM_IDT77252=m
+# CONFIG_ATM_IDT77252_DEBUG is not set
+# CONFIG_ATM_IDT77252_RCV_ALL is not set
+CONFIG_ATM_IDT77252_USE_SUNI=y
+CONFIG_ATM_IA=m
+# CONFIG_ATM_IA_DEBUG is not set
+CONFIG_ATM_FORE200E=m
+# CONFIG_ATM_FORE200E_USE_TASKLET is not set
+CONFIG_ATM_FORE200E_TX_RETRY=16
+CONFIG_ATM_FORE200E_DEBUG=0
+CONFIG_ATM_HE=m
+# CONFIG_ATM_HE_USE_SUNI is not set
+CONFIG_ATM_SOLOS=m
+
+#
+# CAIF transport drivers
+#
+
+#
+# Distributed Switch Architecture drivers
+#
+CONFIG_NET_DSA_MV88E6XXX=y
+CONFIG_NET_DSA_MV88E6060=y
+CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y
+CONFIG_NET_DSA_MV88E6131=y
+CONFIG_NET_DSA_MV88E6123_61_65=y
+CONFIG_ETHERNET=y
+CONFIG_MDIO=m
+CONFIG_NET_VENDOR_3COM=y
+CONFIG_TYPHOON=m
+CONFIG_NET_VENDOR_ADAPTEC=y
+CONFIG_ADAPTEC_STARFIRE=m
+CONFIG_NET_VENDOR_ALTEON=y
+CONFIG_ACENIC=m
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+CONFIG_NET_VENDOR_AMD=y
+CONFIG_AMD8111_ETH=m
+CONFIG_PCNET32=m
+CONFIG_NET_VENDOR_ATHEROS=y
+CONFIG_ATL2=m
+CONFIG_ATL1=m
+CONFIG_ATL1E=m
+CONFIG_ATL1C=m
+CONFIG_ALX=m
+CONFIG_NET_CADENCE=y
+CONFIG_ARM_AT91_ETHER=m
+CONFIG_MACB=m
+CONFIG_NET_VENDOR_BROADCOM=y
+CONFIG_B44=m
+CONFIG_B44_PCI_AUTOSELECT=y
+CONFIG_B44_PCICORE_AUTOSELECT=y
+CONFIG_B44_PCI=y
+CONFIG_BNX2=m
+CONFIG_CNIC=m
+CONFIG_TIGON3=m
+CONFIG_BNX2X=m
+CONFIG_BNX2X_SRIOV=y
+CONFIG_NET_VENDOR_BROCADE=y
+CONFIG_BNA=m
+CONFIG_NET_CALXEDA_XGMAC=m
+CONFIG_NET_VENDOR_CHELSIO=y
+CONFIG_CHELSIO_T1=m
+CONFIG_CHELSIO_T1_1G=y
+CONFIG_CHELSIO_T3=m
+CONFIG_CHELSIO_T4=m
+CONFIG_CHELSIO_T4VF=m
+CONFIG_NET_VENDOR_CIRRUS=y
+CONFIG_CS89x0=m
+CONFIG_CS89x0_PLATFORM=y
+CONFIG_NET_VENDOR_CISCO=y
+CONFIG_ENIC=m
+CONFIG_DM9000=m
+# CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL is not set
+CONFIG_DNET=m
+CONFIG_NET_VENDOR_DEC=y
+CONFIG_NET_TULIP=y
+CONFIG_DE2104X=m
+CONFIG_DE2104X_DSL=0
+CONFIG_TULIP=m
+# CONFIG_TULIP_MWI is not set
+CONFIG_TULIP_MMIO=y
+CONFIG_TULIP_NAPI=y
+CONFIG_TULIP_NAPI_HW_MITIGATION=y
+CONFIG_WINBOND_840=m
+CONFIG_DM9102=m
+CONFIG_ULI526X=m
+# CONFIG_PCMCIA_XIRCOM is not set
+CONFIG_NET_VENDOR_DLINK=y
+CONFIG_DL2K=m
+CONFIG_SUNDANCE=m
+# CONFIG_SUNDANCE_MMIO is not set
+CONFIG_NET_VENDOR_EMULEX=y
+CONFIG_BE2NET=m
+CONFIG_NET_VENDOR_EXAR=y
+CONFIG_S2IO=m
+CONFIG_VXGE=m
+# CONFIG_VXGE_DEBUG_TRACE_ALL is not set
+CONFIG_NET_VENDOR_FARADAY=y
+CONFIG_FTMAC100=m
+CONFIG_FTGMAC100=m
+CONFIG_NET_VENDOR_FREESCALE=y
+CONFIG_FEC=m
+CONFIG_NET_VENDOR_HP=y
+CONFIG_HP100=m
+CONFIG_NET_VENDOR_INTEL=y
+CONFIG_E100=m
+CONFIG_E1000=m
+CONFIG_E1000E=m
+CONFIG_IGB=m
+CONFIG_IGB_HWMON=y
+CONFIG_IGBVF=m
+CONFIG_IXGB=m
+CONFIG_IXGBE=m
+CONFIG_IXGBE_HWMON=y
+CONFIG_NET_VENDOR_I825XX=y
+CONFIG_IP1000=m
+CONFIG_JME=m
+CONFIG_NET_VENDOR_MARVELL=y
+CONFIG_MV643XX_ETH=m
+CONFIG_MVMDIO=m
+CONFIG_MVNETA=m
+CONFIG_SKGE=m
+# CONFIG_SKGE_DEBUG is not set
+CONFIG_SKGE_GENESIS=y
+CONFIG_SKY2=m
+# CONFIG_SKY2_DEBUG is not set
+CONFIG_NET_VENDOR_MELLANOX=y
+CONFIG_MLX4_EN=m
+CONFIG_MLX4_CORE=m
+CONFIG_MLX4_DEBUG=y
+CONFIG_NET_VENDOR_MICREL=y
+CONFIG_KS8842=m
+CONFIG_KS8851_MLL=m
+CONFIG_KSZ884X_PCI=m
+CONFIG_NET_VENDOR_MYRI=y
+CONFIG_MYRI10GE=m
+CONFIG_FEALNX=m
+CONFIG_NET_VENDOR_NATSEMI=y
+CONFIG_NATSEMI=m
+CONFIG_NS83820=m
+CONFIG_NET_VENDOR_8390=y
+CONFIG_AX88796=m
+CONFIG_AX88796_93CX6=y
+CONFIG_NE2K_PCI=m
+CONFIG_NET_VENDOR_NVIDIA=y
+CONFIG_FORCEDETH=m
+CONFIG_NET_VENDOR_OKI=y
+CONFIG_PCH_GBE=m
+CONFIG_ETHOC=m
+# CONFIG_NET_PACKET_ENGINE is not set
+CONFIG_NET_VENDOR_QLOGIC=y
+CONFIG_QLA3XXX=m
+CONFIG_QLCNIC=m
+CONFIG_QLCNIC_SRIOV=y
+CONFIG_QLGE=m
+CONFIG_NETXEN_NIC=m
+CONFIG_NET_VENDOR_REALTEK=y
+CONFIG_8139CP=m
+CONFIG_8139TOO=m
+# CONFIG_8139TOO_PIO is not set
+# CONFIG_8139TOO_TUNE_TWISTER is not set
+CONFIG_8139TOO_8129=y
+# CONFIG_8139_OLD_RX_RESET is not set
+CONFIG_R8169=m
+CONFIG_NET_VENDOR_RDC=y
+CONFIG_R6040=m
+CONFIG_NET_VENDOR_SEEQ=y
+CONFIG_NET_VENDOR_SILAN=y
+CONFIG_SC92031=m
+CONFIG_NET_VENDOR_SIS=y
+CONFIG_SIS900=m
+CONFIG_SIS190=m
+CONFIG_SFC=m
+CONFIG_SFC_MTD=y
+CONFIG_SFC_MCDI_MON=y
+CONFIG_SFC_SRIOV=y
+CONFIG_NET_VENDOR_SMSC=y
+CONFIG_SMC91X=m
+CONFIG_EPIC100=m
+CONFIG_SMC911X=m
+CONFIG_SMSC911X=m
+# CONFIG_SMSC911X_ARCH_HOOKS is not set
+CONFIG_SMSC9420=m
+CONFIG_NET_VENDOR_STMICRO=y
+CONFIG_STMMAC_ETH=m
+CONFIG_STMMAC_PLATFORM=y
+CONFIG_STMMAC_PCI=y
+# CONFIG_STMMAC_DEBUG_FS is not set
+# CONFIG_STMMAC_DA is not set
+CONFIG_NET_VENDOR_SUN=y
+CONFIG_HAPPYMEAL=m
+CONFIG_SUNGEM=m
+CONFIG_CASSINI=m
+CONFIG_NIU=m
+CONFIG_NET_VENDOR_TEHUTI=y
+CONFIG_TEHUTI=m
+CONFIG_NET_VENDOR_TI=y
+CONFIG_TI_DAVINCI_EMAC=m
+CONFIG_TI_DAVINCI_MDIO=m
+CONFIG_TI_DAVINCI_CPDMA=m
+CONFIG_TI_CPSW=m
+# CONFIG_TI_CPTS is not set
+CONFIG_TLAN=m
+CONFIG_NET_VENDOR_VIA=y
+CONFIG_VIA_RHINE=m
+CONFIG_VIA_RHINE_MMIO=y
+CONFIG_VIA_VELOCITY=m
+CONFIG_NET_VENDOR_WIZNET=y
+CONFIG_WIZNET_W5100=m
+CONFIG_WIZNET_W5300=m
+# CONFIG_WIZNET_BUS_DIRECT is not set
+# CONFIG_WIZNET_BUS_INDIRECT is not set
+CONFIG_WIZNET_BUS_ANY=y
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+CONFIG_PHYLIB=y
+
+#
+# MII PHY device drivers
+#
+CONFIG_AT803X_PHY=m
+CONFIG_AMD_PHY=m
+CONFIG_MARVELL_PHY=m
+CONFIG_DAVICOM_PHY=m
+CONFIG_QSEMI_PHY=m
+CONFIG_LXT_PHY=m
+CONFIG_CICADA_PHY=m
+CONFIG_VITESSE_PHY=m
+CONFIG_SMSC_PHY=m
+CONFIG_BROADCOM_PHY=m
+CONFIG_BCM87XX_PHY=m
+CONFIG_ICPLUS_PHY=m
+CONFIG_REALTEK_PHY=m
+CONFIG_NATIONAL_PHY=m
+CONFIG_STE10XP=m
+CONFIG_LSI_ET1011C_PHY=m
+CONFIG_MICREL_PHY=m
+CONFIG_FIXED_PHY=y
+CONFIG_MDIO_BITBANG=m
+# CONFIG_MDIO_GPIO is not set
+CONFIG_MDIO_BUS_MUX=m
+CONFIG_MDIO_BUS_MUX_GPIO=m
+CONFIG_MDIO_BUS_MUX_MMIOREG=m
+CONFIG_PPP=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_MPPE=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPPOATM=m
+CONFIG_PPPOE=m
+CONFIG_PPTP=m
+CONFIG_PPPOL2TP=m
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_RTL8152=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_AX88179_178A=m
+CONFIG_USB_NET_CDCETHER=m
+CONFIG_USB_NET_CDC_EEM=m
+CONFIG_USB_NET_CDC_NCM=m
+CONFIG_USB_NET_CDC_MBIM=m
+CONFIG_USB_NET_DM9601=m
+CONFIG_USB_NET_SMSC75XX=m
+CONFIG_USB_NET_SMSC95XX=m
+CONFIG_USB_NET_GL620A=m
+CONFIG_USB_NET_NET1080=m
+CONFIG_USB_NET_PLUSB=m
+CONFIG_USB_NET_MCS7830=m
+CONFIG_USB_NET_RNDIS_HOST=m
+CONFIG_USB_NET_CDC_SUBSET=m
+CONFIG_USB_ALI_M5632=y
+CONFIG_USB_AN2720=y
+CONFIG_USB_BELKIN=y
+CONFIG_USB_ARMLINUX=y
+CONFIG_USB_EPSON2888=y
+CONFIG_USB_KC2190=y
+CONFIG_USB_NET_ZAURUS=m
+CONFIG_USB_NET_CX82310_ETH=m
+CONFIG_USB_NET_KALMIA=m
+CONFIG_USB_NET_QMI_WWAN=m
+CONFIG_USB_HSO=m
+CONFIG_USB_NET_INT51X1=m
+CONFIG_USB_IPHETH=m
+CONFIG_USB_SIERRA_NET=m
+CONFIG_USB_VL600=m
+CONFIG_WLAN=y
+CONFIG_LIBERTAS_THINFIRM=m
+# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set
+CONFIG_LIBERTAS_THINFIRM_USB=m
+CONFIG_ATMEL=m
+CONFIG_PCI_ATMEL=m
+CONFIG_AT76C50X_USB=m
+# CONFIG_PRISM54 is not set
+CONFIG_USB_ZD1201=m
+CONFIG_USB_NET_RNDIS_WLAN=m
+CONFIG_RTL8180=m
+CONFIG_RTL8187=m
+CONFIG_RTL8187_LEDS=y
+CONFIG_ADM8211=m
+CONFIG_MAC80211_HWSIM=m
+CONFIG_MWL8K=m
+CONFIG_ATH_COMMON=m
+CONFIG_ATH_CARDS=m
+# CONFIG_ATH_DEBUG is not set
+CONFIG_ATH5K=m
+CONFIG_ATH5K_DEBUG=y
+# CONFIG_ATH5K_TRACER is not set
+CONFIG_ATH5K_PCI=y
+CONFIG_ATH9K_HW=m
+CONFIG_ATH9K_COMMON=m
+CONFIG_ATH9K_BTCOEX_SUPPORT=y
+CONFIG_ATH9K=m
+CONFIG_ATH9K_PCI=y
+CONFIG_ATH9K_AHB=y
+# CONFIG_ATH9K_DEBUGFS is not set
+# CONFIG_ATH9K_LEGACY_RATE_CONTROL is not set
+CONFIG_ATH9K_HTC=m
+# CONFIG_ATH9K_HTC_DEBUGFS is not set
+CONFIG_CARL9170=m
+CONFIG_CARL9170_LEDS=y
+CONFIG_CARL9170_WPC=y
+# CONFIG_CARL9170_HWRNG is not set
+# CONFIG_ATH6KL is not set
+CONFIG_AR5523=m
+CONFIG_WIL6210=m
+CONFIG_WIL6210_ISR_COR=y
+CONFIG_B43=m
+CONFIG_B43_SSB=y
+CONFIG_B43_PCI_AUTOSELECT=y
+CONFIG_B43_PCICORE_AUTOSELECT=y
+CONFIG_B43_SDIO=y
+CONFIG_B43_PIO=y
+CONFIG_B43_PHY_N=y
+CONFIG_B43_PHY_LP=y
+CONFIG_B43_LEDS=y
+CONFIG_B43_HWRNG=y
+# CONFIG_B43_DEBUG is not set
+CONFIG_B43LEGACY=m
+CONFIG_B43LEGACY_PCI_AUTOSELECT=y
+CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y
+CONFIG_B43LEGACY_LEDS=y
+CONFIG_B43LEGACY_HWRNG=y
+# CONFIG_B43LEGACY_DEBUG is not set
+CONFIG_B43LEGACY_DMA=y
+CONFIG_B43LEGACY_PIO=y
+CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
+# CONFIG_B43LEGACY_DMA_MODE is not set
+# CONFIG_B43LEGACY_PIO_MODE is not set
+CONFIG_BRCMUTIL=m
+CONFIG_BRCMFMAC=m
+CONFIG_BRCMFMAC_SDIO=y
+CONFIG_BRCMFMAC_USB=y
+# CONFIG_BRCM_TRACING is not set
+# CONFIG_BRCMDBG is not set
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+CONFIG_HOSTAP_FIRMWARE_NVRAM=y
+CONFIG_HOSTAP_PLX=m
+CONFIG_HOSTAP_PCI=m
+CONFIG_IPW2100=m
+CONFIG_IPW2100_MONITOR=y
+# CONFIG_IPW2100_DEBUG is not set
+CONFIG_IPW2200=m
+CONFIG_IPW2200_MONITOR=y
+CONFIG_IPW2200_RADIOTAP=y
+CONFIG_IPW2200_PROMISCUOUS=y
+CONFIG_IPW2200_QOS=y
+# CONFIG_IPW2200_DEBUG is not set
+CONFIG_LIBIPW=m
+# CONFIG_LIBIPW_DEBUG is not set
+CONFIG_IWLWIFI=m
+CONFIG_IWLDVM=m
+CONFIG_IWLMVM=m
+CONFIG_IWLWIFI_OPMODE_MODULAR=y
+
+#
+# Debugging Options
+#
+# CONFIG_IWLWIFI_DEBUG is not set
+# CONFIG_IWLWIFI_DEVICE_TRACING is not set
+CONFIG_IWLWIFI_P2P=y
+CONFIG_IWLEGACY=m
+CONFIG_IWL4965=m
+CONFIG_IWL3945=m
+
+#
+# iwl3945 / iwl4965 Debugging Options
+#
+# CONFIG_IWLEGACY_DEBUG is not set
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
+CONFIG_LIBERTAS_SDIO=m
+# CONFIG_LIBERTAS_DEBUG is not set
+CONFIG_LIBERTAS_MESH=y
+CONFIG_HERMES=m
+# CONFIG_HERMES_PRISM is not set
+CONFIG_HERMES_CACHE_FW_ON_INIT=y
+CONFIG_PLX_HERMES=m
+CONFIG_TMD_HERMES=m
+CONFIG_NORTEL_HERMES=m
+CONFIG_ORINOCO_USB=m
+CONFIG_P54_COMMON=m
+CONFIG_P54_USB=m
+CONFIG_P54_PCI=m
+CONFIG_P54_LEDS=y
+CONFIG_RT2X00=m
+CONFIG_RT2400PCI=m
+CONFIG_RT2500PCI=m
+CONFIG_RT61PCI=m
+CONFIG_RT2800PCI=m
+CONFIG_RT2800PCI_RT33XX=y
+CONFIG_RT2800PCI_RT35XX=y
+CONFIG_RT2800PCI_RT53XX=y
+CONFIG_RT2800PCI_RT3290=y
+CONFIG_RT2500USB=m
+CONFIG_RT73USB=m
+CONFIG_RT2800USB=m
+CONFIG_RT2800USB_RT33XX=y
+CONFIG_RT2800USB_RT35XX=y
+CONFIG_RT2800USB_RT53XX=y
+CONFIG_RT2800USB_RT55XX=y
+CONFIG_RT2800USB_UNKNOWN=y
+CONFIG_RT2800_LIB=m
+CONFIG_RT2X00_LIB_MMIO=m
+CONFIG_RT2X00_LIB_PCI=m
+CONFIG_RT2X00_LIB_USB=m
+CONFIG_RT2X00_LIB=m
+CONFIG_RT2X00_LIB_FIRMWARE=y
+CONFIG_RT2X00_LIB_CRYPTO=y
+CONFIG_RT2X00_LIB_LEDS=y
+# CONFIG_RT2X00_DEBUG is not set
+CONFIG_RTLWIFI=m
+# CONFIG_RTLWIFI_DEBUG is not set
+CONFIG_RTL8192CE=m
+CONFIG_RTL8192SE=m
+CONFIG_RTL8192DE=m
+CONFIG_RTL8723AE=m
+CONFIG_RTL8188EE=m
+CONFIG_RTL8192CU=m
+CONFIG_RTL8192C_COMMON=m
+CONFIG_WL_TI=y
+CONFIG_WL1251=m
+CONFIG_WL1251_SDIO=m
+CONFIG_WL12XX=m
+CONFIG_WL18XX=m
+CONFIG_WLCORE=m
+CONFIG_WLCORE_SDIO=m
+CONFIG_WILINK_PLATFORM_DATA=y
+CONFIG_ZD1211RW=m
+# CONFIG_ZD1211RW_DEBUG is not set
+CONFIG_MWIFIEX=m
+CONFIG_MWIFIEX_SDIO=m
+CONFIG_MWIFIEX_PCIE=m
+CONFIG_MWIFIEX_USB=m
+
+#
+# Enable WiMAX (Networking options) to see the WiMAX drivers
+#
+# CONFIG_WAN is not set
+# CONFIG_VMXNET3 is not set
+CONFIG_ISDN=y
+CONFIG_ISDN_I4L=m
+CONFIG_ISDN_PPP=y
+CONFIG_ISDN_PPP_VJ=y
+CONFIG_ISDN_MPP=y
+CONFIG_IPPP_FILTER=y
+CONFIG_ISDN_PPP_BSDCOMP=m
+CONFIG_ISDN_AUDIO=y
+CONFIG_ISDN_TTY_FAX=y
+
+#
+# ISDN feature submodules
+#
+CONFIG_ISDN_DIVERSION=m
+
+#
+# ISDN4Linux hardware drivers
+#
+
+#
+# Passive cards
+#
+CONFIG_ISDN_DRV_HISAX=m
+
+#
+# D-channel protocol features
+#
+CONFIG_HISAX_EURO=y
+CONFIG_DE_AOC=y
+CONFIG_HISAX_NO_SENDCOMPLETE=y
+CONFIG_HISAX_NO_LLC=y
+CONFIG_HISAX_NO_KEYPAD=y
+CONFIG_HISAX_1TR6=y
+CONFIG_HISAX_NI1=y
+CONFIG_HISAX_MAX_CARDS=8
+
+#
+# HiSax supported cards
+#
+CONFIG_HISAX_16_3=y
+CONFIG_HISAX_TELESPCI=y
+CONFIG_HISAX_S0BOX=y
+CONFIG_HISAX_FRITZPCI=y
+CONFIG_HISAX_AVM_A1_PCMCIA=y
+CONFIG_HISAX_ELSA=y
+CONFIG_HISAX_DIEHLDIVA=y
+CONFIG_HISAX_SEDLBAUER=y
+CONFIG_HISAX_NICCY=y
+CONFIG_HISAX_BKM_A4T=y
+CONFIG_HISAX_SCT_QUADRO=y
+CONFIG_HISAX_GAZEL=y
+CONFIG_HISAX_HFC_PCI=y
+CONFIG_HISAX_W6692=y
+CONFIG_HISAX_HFC_SX=y
+# CONFIG_HISAX_DEBUG is not set
+
+#
+# HiSax PCMCIA card service modules
+#
+
+#
+# HiSax sub driver modules
+#
+CONFIG_HISAX_ST5481=m
+CONFIG_HISAX_HFCUSB=m
+CONFIG_HISAX_HFC4S8S=m
+CONFIG_HISAX_FRITZ_PCIPNP=m
+
+#
+# Active cards
+#
+CONFIG_ISDN_CAPI=m
+CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
+CONFIG_CAPI_TRACE=y
+CONFIG_ISDN_CAPI_MIDDLEWARE=y
+CONFIG_ISDN_CAPI_CAPI20=m
+CONFIG_ISDN_CAPI_CAPIDRV=m
+
+#
+# CAPI hardware drivers
+#
+CONFIG_CAPI_AVM=y
+CONFIG_ISDN_DRV_AVMB1_B1PCI=m
+CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
+CONFIG_ISDN_DRV_AVMB1_T1PCI=m
+CONFIG_ISDN_DRV_AVMB1_C4=m
+CONFIG_CAPI_EICON=y
+CONFIG_ISDN_DIVAS=m
+CONFIG_ISDN_DIVAS_BRIPCI=y
+CONFIG_ISDN_DIVAS_PRIPCI=y
+CONFIG_ISDN_DIVAS_DIVACAPI=m
+CONFIG_ISDN_DIVAS_USERIDI=m
+CONFIG_ISDN_DIVAS_MAINT=m
+CONFIG_ISDN_DRV_GIGASET=m
+CONFIG_GIGASET_CAPI=y
+# CONFIG_GIGASET_I4L is not set
+# CONFIG_GIGASET_DUMMYLL is not set
+CONFIG_GIGASET_BASE=m
+CONFIG_GIGASET_M105=m
+CONFIG_GIGASET_M101=m
+# CONFIG_GIGASET_DEBUG is not set
+CONFIG_HYSDN=m
+CONFIG_HYSDN_CAPI=y
+CONFIG_MISDN=m
+CONFIG_MISDN_DSP=m
+CONFIG_MISDN_L1OIP=m
+
+#
+# mISDN hardware drivers
+#
+CONFIG_MISDN_HFCPCI=m
+CONFIG_MISDN_HFCMULTI=m
+CONFIG_MISDN_HFCUSB=m
+CONFIG_MISDN_AVMFRITZ=m
+CONFIG_MISDN_SPEEDFAX=m
+CONFIG_MISDN_INFINEON=m
+CONFIG_MISDN_W6692=m
+CONFIG_MISDN_NETJET=m
+CONFIG_MISDN_IPAC=m
+CONFIG_MISDN_ISAR=m
+CONFIG_ISDN_HDLC=m
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+CONFIG_INPUT_FF_MEMLESS=y
+CONFIG_INPUT_POLLDEV=m
+CONFIG_INPUT_SPARSEKMAP=m
+CONFIG_INPUT_MATRIXKMAP=m
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+# CONFIG_INPUT_APMPOWER is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ADP5520 is not set
+# CONFIG_KEYBOARD_ADP5588 is not set
+# CONFIG_KEYBOARD_ADP5589 is not set
+CONFIG_KEYBOARD_ATKBD=y
+# CONFIG_KEYBOARD_QT1070 is not set
+# CONFIG_KEYBOARD_QT2160 is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+CONFIG_KEYBOARD_GPIO=m
+# CONFIG_KEYBOARD_TCA6416 is not set
+# CONFIG_KEYBOARD_TCA8418 is not set
+# CONFIG_KEYBOARD_MATRIX is not set
+# CONFIG_KEYBOARD_LM8323 is not set
+CONFIG_KEYBOARD_LM8333=m
+# CONFIG_KEYBOARD_MAX7359 is not set
+# CONFIG_KEYBOARD_MCS is not set
+# CONFIG_KEYBOARD_MPR121 is not set
+CONFIG_KEYBOARD_IMX=m
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_NOMADIK is not set
+CONFIG_KEYBOARD_TEGRA=m
+# CONFIG_KEYBOARD_OPENCORES is not set
+# CONFIG_KEYBOARD_SAMSUNG is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_STMPE is not set
+CONFIG_KEYBOARD_OMAP4=m
+# CONFIG_KEYBOARD_SPEAR is not set
+# CONFIG_KEYBOARD_TC3589X is not set
+CONFIG_KEYBOARD_TWL4030=m
+# CONFIG_KEYBOARD_XTKBD is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=m
+CONFIG_MOUSE_PS2_ALPS=y
+CONFIG_MOUSE_PS2_LOGIPS2PP=y
+CONFIG_MOUSE_PS2_SYNAPTICS=y
+CONFIG_MOUSE_PS2_CYPRESS=y
+CONFIG_MOUSE_PS2_TRACKPOINT=y
+CONFIG_MOUSE_PS2_ELANTECH=y
+CONFIG_MOUSE_PS2_SENTELIC=y
+CONFIG_MOUSE_PS2_TOUCHKIT=y
+CONFIG_MOUSE_SERIAL=m
+CONFIG_MOUSE_APPLETOUCH=m
+CONFIG_MOUSE_BCM5974=m
+CONFIG_MOUSE_CYAPA=m
+CONFIG_MOUSE_VSXXXAA=m
+CONFIG_MOUSE_GPIO=m
+CONFIG_MOUSE_SYNAPTICS_I2C=m
+CONFIG_MOUSE_SYNAPTICS_USB=m
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_88PM860X_ONKEY is not set
+# CONFIG_INPUT_88PM80X_ONKEY is not set
+# CONFIG_INPUT_AB8500_PONKEY is not set
+# CONFIG_INPUT_AD714X is not set
+# CONFIG_INPUT_BMA150 is not set
+# CONFIG_INPUT_MAX8925_ONKEY is not set
+# CONFIG_INPUT_MMA8450 is not set
+# CONFIG_INPUT_MPU3050 is not set
+# CONFIG_INPUT_GP2A is not set
+# CONFIG_INPUT_GPIO_TILT_POLLED is not set
+CONFIG_INPUT_ATI_REMOTE2=m
+CONFIG_INPUT_KEYSPAN_REMOTE=m
+# CONFIG_INPUT_KXTJ9 is not set
+CONFIG_INPUT_POWERMATE=m
+CONFIG_INPUT_YEALINK=m
+CONFIG_INPUT_CM109=m
+CONFIG_INPUT_RETU_PWRBUTTON=m
+CONFIG_INPUT_TWL4030_PWRBUTTON=y
+CONFIG_INPUT_TWL4030_VIBRA=y
+CONFIG_INPUT_TWL6040_VIBRA=y
+CONFIG_INPUT_UINPUT=m
+# CONFIG_INPUT_PCF8574 is not set
+# CONFIG_INPUT_PWM_BEEPER is not set
+CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
+# CONFIG_INPUT_DA9052_ONKEY is not set
+# CONFIG_INPUT_DA9055_ONKEY is not set
+# CONFIG_INPUT_WM831X_ON is not set
+# CONFIG_INPUT_ADXL34X is not set
+# CONFIG_INPUT_IMS_PCU is not set
+# CONFIG_INPUT_CMA3000 is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_SERPORT=y
+CONFIG_SERIO_AMBAKMI=m
+# CONFIG_SERIO_PCIPS2 is not set
+CONFIG_SERIO_LIBPS2=y
+CONFIG_SERIO_RAW=m
+CONFIG_SERIO_ALTERA_PS2=m
+# CONFIG_SERIO_PS2MULT is not set
+CONFIG_SERIO_ARC_PS2=m
+CONFIG_SERIO_APBPS2=m
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_TTY=y
+CONFIG_VT=y
+CONFIG_CONSOLE_TRANSLATIONS=y
+CONFIG_VT_CONSOLE=y
+CONFIG_VT_CONSOLE_SLEEP=y
+CONFIG_HW_CONSOLE=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
+# CONFIG_LEGACY_PTYS is not set
+CONFIG_SERIAL_NONSTANDARD=y
+CONFIG_ROCKETPORT=m
+CONFIG_CYCLADES=m
+# CONFIG_CYZ_INTR is not set
+# CONFIG_MOXA_INTELLIO is not set
+# CONFIG_MOXA_SMARTIO is not set
+CONFIG_SYNCLINKMP=m
+CONFIG_SYNCLINK_GT=m
+CONFIG_NOZOMI=m
+# CONFIG_ISI is not set
+CONFIG_N_HDLC=m
+CONFIG_N_GSM=m
+# CONFIG_TRACE_SINK is not set
+# CONFIG_DEVKMEM is not set
+# CONFIG_STALDRV is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_DMA=y
+CONFIG_SERIAL_8250_PCI=y
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+CONFIG_SERIAL_8250_EXTENDED=y
+CONFIG_SERIAL_8250_MANY_PORTS=y
+CONFIG_SERIAL_8250_SHARE_IRQ=y
+CONFIG_SERIAL_8250_DETECT_IRQ=y
+CONFIG_SERIAL_8250_RSA=y
+# CONFIG_SERIAL_8250_DW is not set
+# CONFIG_SERIAL_8250_EM is not set
+
+#
+# Non-8250 serial port support
+#
+# CONFIG_SERIAL_AMBA_PL010 is not set
+CONFIG_SERIAL_AMBA_PL011=y
+CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
+# CONFIG_SERIAL_SIRFSOC is not set
+# CONFIG_SERIAL_TEGRA is not set
+# CONFIG_SERIAL_MFD_HSU is not set
+CONFIG_SERIAL_IMX=y
+CONFIG_SERIAL_IMX_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_SERIAL_JSM=m
+CONFIG_SERIAL_VT8500=y
+CONFIG_SERIAL_VT8500_CONSOLE=y
+CONFIG_SERIAL_OF_PLATFORM=y
+CONFIG_SERIAL_OMAP=y
+CONFIG_SERIAL_OMAP_CONSOLE=y
+CONFIG_SERIAL_SCCNXP=m
+# CONFIG_SERIAL_TIMBERDALE is not set
+# CONFIG_SERIAL_ALTERA_JTAGUART is not set
+# CONFIG_SERIAL_ALTERA_UART is not set
+# CONFIG_SERIAL_PCH_UART is not set
+# CONFIG_SERIAL_XILINX_PS_UART is not set
+CONFIG_SERIAL_ARC=m
+CONFIG_SERIAL_ARC_NR_PORTS=1
+CONFIG_SERIAL_RP2=m
+CONFIG_SERIAL_RP2_NR_UARTS=32
+# CONFIG_TTY_PRINTK is not set
+# CONFIG_HVC_DCC is not set
+CONFIG_IPMI_HANDLER=m
+# CONFIG_IPMI_PANIC_EVENT is not set
+CONFIG_IPMI_DEVICE_INTERFACE=m
+CONFIG_IPMI_SI=m
+CONFIG_IPMI_WATCHDOG=m
+CONFIG_IPMI_POWEROFF=m
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_TIMERIOMEM=m
+CONFIG_HW_RANDOM_ATMEL=m
+CONFIG_HW_RANDOM_BCM2835=y
+CONFIG_HW_RANDOM_OMAP=y
+# CONFIG_HW_RANDOM_MXC_RNGA is not set
+CONFIG_HW_RANDOM_EXYNOS=m
+CONFIG_NVRAM=y
+CONFIG_R3964=m
+# CONFIG_APPLICOM is not set
+CONFIG_RAW_DRIVER=y
+CONFIG_MAX_RAW_DEVS=8192
+# CONFIG_TCG_TPM is not set
+CONFIG_DEVPORT=y
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_COMPAT=y
+CONFIG_I2C_CHARDEV=m
+# CONFIG_I2C_MUX is not set
+CONFIG_I2C_HELPER_AUTO=y
+CONFIG_I2C_SMBUS=m
+CONFIG_I2C_ALGOBIT=m
+CONFIG_I2C_ALGOPCA=m
+
+#
+# I2C Hardware Bus support
+#
+
+#
+# PC SMBus host controller drivers
+#
+CONFIG_I2C_ALI1535=m
+CONFIG_I2C_ALI1563=m
+CONFIG_I2C_ALI15X3=m
+CONFIG_I2C_AMD756=m
+CONFIG_I2C_AMD8111=m
+CONFIG_I2C_I801=m
+CONFIG_I2C_ISCH=m
+CONFIG_I2C_PIIX4=m
+CONFIG_I2C_NFORCE2=m
+CONFIG_I2C_SIS5595=m
+CONFIG_I2C_SIS630=m
+CONFIG_I2C_SIS96X=m
+CONFIG_I2C_VIA=m
+CONFIG_I2C_VIAPRO=m
+
+#
+# I2C system bus drivers (mostly embedded / system-on-chip)
+#
+# CONFIG_I2C_BCM2835 is not set
+CONFIG_I2C_CBUS_GPIO=m
+# CONFIG_I2C_DESIGNWARE_PLATFORM is not set
+# CONFIG_I2C_DESIGNWARE_PCI is not set
+# CONFIG_I2C_EG20T is not set
+# CONFIG_I2C_GPIO is not set
+CONFIG_I2C_IMX=m
+# CONFIG_I2C_INTEL_MID is not set
+CONFIG_I2C_MV64XXX=m
+CONFIG_I2C_NOMADIK=y
+# CONFIG_I2C_OCORES is not set
+CONFIG_I2C_OMAP=y
+CONFIG_I2C_PCA_PLATFORM=m
+# CONFIG_I2C_PXA_PCI is not set
+CONFIG_I2C_SIMTEC=m
+CONFIG_I2C_SIRF=y
+CONFIG_I2C_TEGRA=y
+CONFIG_I2C_VERSATILE=m
+# CONFIG_I2C_XILINX is not set
+
+#
+# External I2C/SMBus adapter drivers
+#
+CONFIG_I2C_DIOLAN_U2C=m
+CONFIG_I2C_PARPORT_LIGHT=m
+# CONFIG_I2C_TAOS_EVM is not set
+CONFIG_I2C_TINY_USB=m
+CONFIG_I2C_VIPERBOARD=m
+
+#
+# Other I2C/SMBus bus drivers
+#
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_SPI is not set
+
+#
+# Qualcomm MSM SSBI bus support
+#
+# CONFIG_SSBI is not set
+CONFIG_HSI=m
+CONFIG_HSI_BOARDINFO=y
+
+#
+# HSI clients
+#
+CONFIG_HSI_CHAR=m
+
+#
+# PPS support
+#
+CONFIG_PPS=m
+# CONFIG_PPS_DEBUG is not set
+
+#
+# PPS clients support
+#
+# CONFIG_PPS_CLIENT_KTIMER is not set
+# CONFIG_PPS_CLIENT_LDISC is not set
+# CONFIG_PPS_CLIENT_GPIO is not set
+
+#
+# PPS generators support
+#
+
+#
+# PTP clock support
+#
+CONFIG_PTP_1588_CLOCK=m
+
+#
+# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.
+#
+CONFIG_PTP_1588_CLOCK_PCH=m
+CONFIG_PINCTRL=y
+
+#
+# Pin controllers
+#
+CONFIG_PINMUX=y
+CONFIG_PINCONF=y
+CONFIG_GENERIC_PINCONF=y
+# CONFIG_DEBUG_PINCTRL is not set
+CONFIG_PINCTRL_ABX500=y
+CONFIG_PINCTRL_AB8500=y
+CONFIG_PINCTRL_AB8540=y
+CONFIG_PINCTRL_AB9540=y
+CONFIG_PINCTRL_AB8505=y
+CONFIG_PINCTRL_BCM2835=y
+CONFIG_PINCTRL_IMX=y
+# CONFIG_PINCTRL_IMX35 is not set
+CONFIG_PINCTRL_IMX51=y
+CONFIG_PINCTRL_IMX53=y
+CONFIG_PINCTRL_IMX6Q=y
+CONFIG_PINCTRL_NOMADIK=y
+CONFIG_PINCTRL_DB8500=y
+CONFIG_PINCTRL_DB8540=y
+# CONFIG_PINCTRL_SINGLE is not set
+CONFIG_PINCTRL_SIRF=y
+CONFIG_PINCTRL_SUNXI=y
+CONFIG_PINCTRL_TEGRA=y
+CONFIG_PINCTRL_TEGRA20=y
+CONFIG_PINCTRL_TEGRA30=y
+CONFIG_PINCTRL_TEGRA114=y
+CONFIG_PINCTRL_SAMSUNG=y
+CONFIG_PINCTRL_EXYNOS=y
+CONFIG_PINCTRL_EXYNOS5440=y
+CONFIG_PINCTRL_MVEBU=y
+CONFIG_PINCTRL_ARMADA_370=y
+CONFIG_PINCTRL_ARMADA_XP=y
+CONFIG_PINCTRL_SPEAR=y
+CONFIG_PINCTRL_SPEAR1310=y
+CONFIG_PINCTRL_SPEAR1340=y
+CONFIG_PINCTRL_SPEAR_PLGPIO=y
+CONFIG_PINCTRL_WMT=y
+# CONFIG_PINCTRL_WM8750 is not set
+CONFIG_PINCTRL_WM8850=y
+CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
+CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
+CONFIG_ARCH_REQUIRE_GPIOLIB=y
+CONFIG_GPIO_DEVRES=y
+CONFIG_GPIOLIB=y
+CONFIG_OF_GPIO=y
+# CONFIG_DEBUG_GPIO is not set
+CONFIG_GPIO_SYSFS=y
+CONFIG_GPIO_GENERIC=y
+# CONFIG_GPIO_DA9052 is not set
+# CONFIG_GPIO_DA9055 is not set
+
+#
+# Memory mapped GPIO drivers:
+#
+# CONFIG_GPIO_GENERIC_PLATFORM is not set
+# CONFIG_GPIO_EM is not set
+CONFIG_GPIO_MVEBU=y
+CONFIG_GPIO_MXC=y
+CONFIG_GPIO_PL061=y
+# CONFIG_GPIO_RCAR is not set
+CONFIG_GPIO_SPEAR_SPICS=y
+CONFIG_GPIO_TS5500=m
+# CONFIG_GPIO_VX855 is not set
+# CONFIG_GPIO_GRGPIO is not set
+
+#
+# I2C GPIO expanders:
+#
+# CONFIG_GPIO_MAX7300 is not set
+# CONFIG_GPIO_MAX732X is not set
+# CONFIG_GPIO_MC9S08DZ60 is not set
+# CONFIG_GPIO_PCF857X is not set
+# CONFIG_GPIO_RC5T583 is not set
+# CONFIG_GPIO_SX150X is not set
+# CONFIG_GPIO_STMPE is not set
+# CONFIG_GPIO_TC3589X is not set
+# CONFIG_GPIO_TPS65912 is not set
+CONFIG_GPIO_TWL4030=m
+CONFIG_GPIO_TWL6040=m
+# CONFIG_GPIO_WM831X is not set
+# CONFIG_GPIO_WM8350 is not set
+# CONFIG_GPIO_WM8994 is not set
+# CONFIG_GPIO_ADP5520 is not set
+# CONFIG_GPIO_ADP5588 is not set
+CONFIG_GPIO_ADNP=m
+
+#
+# PCI GPIO expanders:
+#
+# CONFIG_GPIO_AMD8111 is not set
+# CONFIG_GPIO_ML_IOH is not set
+# CONFIG_GPIO_RDC321X is not set
+
+#
+# SPI GPIO expanders:
+#
+# CONFIG_GPIO_MCP23S08 is not set
+
+#
+# AC97 GPIO expanders:
+#
+
+#
+# MODULbus GPIO expanders:
+#
+# CONFIG_GPIO_PALMAS is not set
+# CONFIG_GPIO_TPS6586X is not set
+# CONFIG_GPIO_TPS65910 is not set
+
+#
+# USB GPIO expanders:
+#
+CONFIG_GPIO_VIPERBOARD=m
+CONFIG_W1=m
+CONFIG_W1_CON=y
+
+#
+# 1-wire Bus Masters
+#
+# CONFIG_W1_MASTER_MATROX is not set
+CONFIG_W1_MASTER_DS2490=m
+CONFIG_W1_MASTER_DS2482=m
+CONFIG_W1_MASTER_MXC=m
+CONFIG_W1_MASTER_DS1WM=m
+# CONFIG_W1_MASTER_GPIO is not set
+# CONFIG_HDQ_MASTER_OMAP is not set
+
+#
+# 1-wire Slaves
+#
+CONFIG_W1_SLAVE_THERM=m
+CONFIG_W1_SLAVE_SMEM=m
+CONFIG_W1_SLAVE_DS2408=m
+CONFIG_W1_SLAVE_DS2408_READBACK=y
+CONFIG_W1_SLAVE_DS2413=m
+CONFIG_W1_SLAVE_DS2423=m
+CONFIG_W1_SLAVE_DS2431=m
+CONFIG_W1_SLAVE_DS2433=m
+CONFIG_W1_SLAVE_DS2433_CRC=y
+CONFIG_W1_SLAVE_DS2760=m
+CONFIG_W1_SLAVE_DS2780=m
+CONFIG_W1_SLAVE_DS2781=m
+CONFIG_W1_SLAVE_DS28E04=m
+CONFIG_W1_SLAVE_BQ27000=m
+CONFIG_POWER_SUPPLY=y
+# CONFIG_POWER_SUPPLY_DEBUG is not set
+# CONFIG_PDA_POWER is not set
+# CONFIG_APM_POWER is not set
+CONFIG_GENERIC_ADC_BATTERY=m
+# CONFIG_MAX8925_POWER is not set
+# CONFIG_WM831X_BACKUP is not set
+# CONFIG_WM831X_POWER is not set
+# CONFIG_WM8350_POWER is not set
+# CONFIG_TEST_POWER is not set
+# CONFIG_BATTERY_88PM860X is not set
+# CONFIG_BATTERY_DS2760 is not set
+# CONFIG_BATTERY_DS2780 is not set
+# CONFIG_BATTERY_DS2781 is not set
+# CONFIG_BATTERY_DS2782 is not set
+# CONFIG_BATTERY_SBS is not set
+# CONFIG_BATTERY_BQ27x00 is not set
+# CONFIG_BATTERY_DA9030 is not set
+# CONFIG_BATTERY_DA9052 is not set
+# CONFIG_BATTERY_MAX17040 is not set
+# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_BATTERY_RX51 is not set
+# CONFIG_CHARGER_ISP1704 is not set
+# CONFIG_CHARGER_MAX8903 is not set
+# CONFIG_CHARGER_TWL4030 is not set
+# CONFIG_CHARGER_LP8727 is not set
+# CONFIG_CHARGER_GPIO is not set
+# CONFIG_CHARGER_MANAGER is not set
+# CONFIG_CHARGER_MAX8997 is not set
+# CONFIG_CHARGER_MAX8998 is not set
+# CONFIG_CHARGER_BQ2415X is not set
+# CONFIG_CHARGER_SMB347 is not set
+# CONFIG_CHARGER_TPS65090 is not set
+# CONFIG_AB8500_BM is not set
+# CONFIG_BATTERY_GOLDFISH is not set
+CONFIG_POWER_RESET=y
+CONFIG_POWER_RESET_GPIO=y
+CONFIG_POWER_RESET_QNAP=y
+CONFIG_POWER_RESET_RESTART=y
+CONFIG_POWER_RESET_VEXPRESS=y
+CONFIG_POWER_AVS=y
+CONFIG_HWMON=y
+CONFIG_HWMON_VID=m
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Native drivers
+#
+CONFIG_SENSORS_AD7414=m
+CONFIG_SENSORS_AD7418=m
+CONFIG_SENSORS_ADM1021=m
+CONFIG_SENSORS_ADM1025=m
+CONFIG_SENSORS_ADM1026=m
+CONFIG_SENSORS_ADM1029=m
+CONFIG_SENSORS_ADM1031=m
+CONFIG_SENSORS_ADM9240=m
+CONFIG_SENSORS_ADT7X10=m
+CONFIG_SENSORS_ADT7410=m
+CONFIG_SENSORS_ADT7411=m
+CONFIG_SENSORS_ADT7462=m
+CONFIG_SENSORS_ADT7470=m
+CONFIG_SENSORS_ADT7475=m
+CONFIG_SENSORS_ASC7621=m
+CONFIG_SENSORS_ATXP1=m
+CONFIG_SENSORS_DS620=m
+CONFIG_SENSORS_DS1621=m
+# CONFIG_SENSORS_DA9052_ADC is not set
+# CONFIG_SENSORS_DA9055 is not set
+CONFIG_SENSORS_I5K_AMB=m
+CONFIG_SENSORS_F71805F=m
+CONFIG_SENSORS_F71882FG=m
+CONFIG_SENSORS_F75375S=m
+CONFIG_SENSORS_G760A=m
+CONFIG_SENSORS_GL518SM=m
+CONFIG_SENSORS_GL520SM=m
+# CONFIG_SENSORS_GPIO_FAN is not set
+CONFIG_SENSORS_HIH6130=m
+CONFIG_SENSORS_IBMAEM=m
+CONFIG_SENSORS_IBMPEX=m
+# CONFIG_SENSORS_IIO_HWMON is not set
+CONFIG_SENSORS_IT87=m
+# CONFIG_SENSORS_JC42 is not set
+CONFIG_SENSORS_LINEAGE=m
+CONFIG_SENSORS_LM63=m
+CONFIG_SENSORS_LM73=m
+CONFIG_SENSORS_LM75=m
+CONFIG_SENSORS_LM77=m
+CONFIG_SENSORS_LM78=m
+CONFIG_SENSORS_LM80=m
+CONFIG_SENSORS_LM83=m
+CONFIG_SENSORS_LM85=m
+CONFIG_SENSORS_LM87=m
+CONFIG_SENSORS_LM90=m
+CONFIG_SENSORS_LM92=m
+CONFIG_SENSORS_LM93=m
+CONFIG_SENSORS_LTC4151=m
+CONFIG_SENSORS_LTC4215=m
+CONFIG_SENSORS_LTC4245=m
+CONFIG_SENSORS_LTC4261=m
+CONFIG_SENSORS_LM95234=m
+CONFIG_SENSORS_LM95241=m
+CONFIG_SENSORS_LM95245=m
+CONFIG_SENSORS_MAX16065=m
+CONFIG_SENSORS_MAX1619=m
+CONFIG_SENSORS_MAX1668=m
+CONFIG_SENSORS_MAX197=m
+CONFIG_SENSORS_MAX6639=m
+CONFIG_SENSORS_MAX6642=m
+CONFIG_SENSORS_MAX6650=m
+CONFIG_SENSORS_MAX6697=m
+CONFIG_SENSORS_MCP3021=m
+CONFIG_SENSORS_NCT6775=m
+CONFIG_SENSORS_NTC_THERMISTOR=m
+CONFIG_SENSORS_PC87360=m
+CONFIG_SENSORS_PC87427=m
+CONFIG_SENSORS_PCF8591=m
+CONFIG_PMBUS=m
+CONFIG_SENSORS_PMBUS=m
+CONFIG_SENSORS_ADM1275=m
+CONFIG_SENSORS_LM25066=m
+# CONFIG_SENSORS_LTC2978 is not set
+CONFIG_SENSORS_MAX16064=m
+CONFIG_SENSORS_MAX34440=m
+CONFIG_SENSORS_MAX8688=m
+CONFIG_SENSORS_UCD9000=m
+CONFIG_SENSORS_UCD9200=m
+# CONFIG_SENSORS_ZL6100 is not set
+CONFIG_SENSORS_SHT15=m
+CONFIG_SENSORS_SHT21=m
+CONFIG_SENSORS_SIS5595=m
+# CONFIG_SENSORS_SMM665 is not set
+CONFIG_SENSORS_DME1737=m
+CONFIG_SENSORS_EMC1403=m
+# CONFIG_SENSORS_EMC2103 is not set
+CONFIG_SENSORS_EMC6W201=m
+CONFIG_SENSORS_SMSC47M1=m
+CONFIG_SENSORS_SMSC47M192=m
+CONFIG_SENSORS_SMSC47B397=m
+CONFIG_SENSORS_SCH56XX_COMMON=m
+CONFIG_SENSORS_SCH5627=m
+CONFIG_SENSORS_SCH5636=m
+CONFIG_SENSORS_ADS1015=m
+CONFIG_SENSORS_ADS7828=m
+CONFIG_SENSORS_AMC6821=m
+CONFIG_SENSORS_INA209=m
+CONFIG_SENSORS_INA2XX=m
+CONFIG_SENSORS_THMC50=m
+CONFIG_SENSORS_TMP102=m
+CONFIG_SENSORS_TMP401=m
+CONFIG_SENSORS_TMP421=m
+# CONFIG_SENSORS_TWL4030_MADC is not set
+CONFIG_SENSORS_VEXPRESS=m
+CONFIG_SENSORS_VIA686A=m
+CONFIG_SENSORS_VT1211=m
+CONFIG_SENSORS_VT8231=m
+CONFIG_SENSORS_W83781D=m
+CONFIG_SENSORS_W83791D=m
+CONFIG_SENSORS_W83792D=m
+CONFIG_SENSORS_W83793=m
+CONFIG_SENSORS_W83795=m
+# CONFIG_SENSORS_W83795_FANCTRL is not set
+CONFIG_SENSORS_W83L785TS=m
+CONFIG_SENSORS_W83L786NG=m
+CONFIG_SENSORS_W83627HF=m
+CONFIG_SENSORS_W83627EHF=m
+# CONFIG_SENSORS_WM831X is not set
+# CONFIG_SENSORS_WM8350 is not set
+CONFIG_THERMAL=y
+CONFIG_THERMAL_HWMON=y
+CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
+# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set
+# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
+CONFIG_THERMAL_GOV_FAIR_SHARE=y
+CONFIG_THERMAL_GOV_STEP_WISE=y
+CONFIG_THERMAL_GOV_USER_SPACE=y
+CONFIG_THERMAL_EMULATION=y
+# CONFIG_SPEAR_THERMAL is not set
+CONFIG_DB8500_THERMAL=y
+CONFIG_ARMADA_THERMAL=m
+CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_CORE=y
+CONFIG_WATCHDOG_NOWAYOUT=y
+
+#
+# Watchdog Device Drivers
+#
+CONFIG_SOFT_WATCHDOG=m
+# CONFIG_DA9052_WATCHDOG is not set
+# CONFIG_DA9055_WATCHDOG is not set
+# CONFIG_WM831X_WATCHDOG is not set
+# CONFIG_WM8350_WATCHDOG is not set
+# CONFIG_ARM_SP805_WATCHDOG is not set
+# CONFIG_DW_WATCHDOG is not set
+# CONFIG_MPCORE_WATCHDOG is not set
+CONFIG_OMAP_WATCHDOG=y
+# CONFIG_TWL4030_WATCHDOG is not set
+# CONFIG_MAX63XX_WATCHDOG is not set
+CONFIG_IMX2_WDT=m
+CONFIG_UX500_WATCHDOG=y
+CONFIG_RETU_WATCHDOG=m
+CONFIG_ALIM7101_WDT=m
+CONFIG_I6300ESB_WDT=m
+
+#
+# PCI-based Watchdog Cards
+#
+CONFIG_PCIPCWATCHDOG=m
+CONFIG_WDTPCI=m
+
+#
+# USB-based Watchdog Cards
+#
+CONFIG_USBPCWATCHDOG=m
+CONFIG_SSB_POSSIBLE=y
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB=m
+CONFIG_SSB_SPROM=y
+CONFIG_SSB_BLOCKIO=y
+CONFIG_SSB_PCIHOST_POSSIBLE=y
+CONFIG_SSB_PCIHOST=y
+CONFIG_SSB_B43_PCI_BRIDGE=y
+CONFIG_SSB_SDIOHOST_POSSIBLE=y
+CONFIG_SSB_SDIOHOST=y
+# CONFIG_SSB_SILENT is not set
+# CONFIG_SSB_DEBUG is not set
+CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
+CONFIG_SSB_DRIVER_PCICORE=y
+CONFIG_SSB_DRIVER_GPIO=y
+CONFIG_BCMA_POSSIBLE=y
+
+#
+# Broadcom specific AMBA
+#
+# CONFIG_BCMA is not set
+
+#
+# Multifunction device drivers
+#
+CONFIG_MFD_CORE=y
+CONFIG_MFD_AS3711=y
+CONFIG_PMIC_ADP5520=y
+CONFIG_MFD_AAT2870_CORE=y
+# CONFIG_MFD_CROS_EC is not set
+# CONFIG_MFD_ASIC3 is not set
+CONFIG_PMIC_DA903X=y
+CONFIG_PMIC_DA9052=y
+CONFIG_MFD_DA9052_I2C=y
+CONFIG_MFD_DA9055=y
+# CONFIG_MFD_MC13XXX_I2C is not set
+# CONFIG_HTC_EGPIO is not set
+# CONFIG_HTC_PASIC3 is not set
+CONFIG_HTC_I2CPLD=y
+CONFIG_LPC_ICH=m
+CONFIG_LPC_SCH=m
+# CONFIG_MFD_JANZ_CMODIO is not set
+CONFIG_MFD_88PM800=m
+CONFIG_MFD_88PM805=m
+CONFIG_MFD_88PM860X=y
+CONFIG_MFD_MAX77686=y
+CONFIG_MFD_MAX77693=y
+CONFIG_MFD_MAX8907=m
+CONFIG_MFD_MAX8925=y
+CONFIG_MFD_MAX8997=y
+CONFIG_MFD_MAX8998=y
+CONFIG_MFD_VIPERBOARD=m
+CONFIG_MFD_RETU=m
+# CONFIG_MFD_PCF50633 is not set
+# CONFIG_UCB1400_CORE is not set
+# CONFIG_MFD_RDC321X is not set
+CONFIG_MFD_RTSX_PCI=m
+CONFIG_MFD_RC5T583=y
+CONFIG_MFD_SEC_CORE=y
+# CONFIG_MFD_SI476X_CORE is not set
+CONFIG_MFD_SM501=m
+CONFIG_MFD_SM501_GPIO=y
+CONFIG_MFD_SMSC=y
+CONFIG_ABX500_CORE=y
+CONFIG_AB3100_CORE=y
+CONFIG_AB3100_OTP=y
+CONFIG_AB8500_CORE=y
+# CONFIG_AB8500_DEBUG is not set
+CONFIG_AB8500_GPADC=y
+CONFIG_MFD_DB8500_PRCMU=y
+CONFIG_MFD_STMPE=y
+
+#
+# STMicroelectronics STMPE Interface Drivers
+#
+CONFIG_STMPE_I2C=y
+CONFIG_MFD_SYSCON=y
+# CONFIG_MFD_TI_AM335X_TSCADC is not set
+CONFIG_MFD_LP8788=y
+CONFIG_MFD_OMAP_USB_HOST=y
+CONFIG_MFD_PALMAS=y
+# CONFIG_TPS6105X is not set
+# CONFIG_TPS65010 is not set
+# CONFIG_TPS6507X is not set
+CONFIG_MFD_TPS65090=y
+# CONFIG_MFD_TPS65217 is not set
+CONFIG_MFD_TPS6586X=y
+CONFIG_MFD_TPS65910=y
+CONFIG_MFD_TPS65912=y
+CONFIG_MFD_TPS65912_I2C=y
+CONFIG_MFD_TPS80031=y
+CONFIG_TWL4030_CORE=y
+CONFIG_TWL4030_MADC=m
+CONFIG_TWL4030_POWER=y
+CONFIG_MFD_TWL4030_AUDIO=y
+CONFIG_TWL6040_CORE=y
+CONFIG_MENELAUS=y
+CONFIG_MFD_WL1273_CORE=m
+CONFIG_MFD_LM3533=m
+# CONFIG_MFD_TIMBERDALE is not set
+CONFIG_MFD_TC3589X=y
+# CONFIG_MFD_TMIO is not set
+# CONFIG_MFD_T7L66XB is not set
+# CONFIG_MFD_TC6387XB is not set
+# CONFIG_MFD_TC6393XB is not set
+CONFIG_MFD_VX855=m
+# CONFIG_MFD_ARIZONA_I2C is not set
+CONFIG_MFD_WM8400=y
+CONFIG_MFD_WM831X=y
+CONFIG_MFD_WM831X_I2C=y
+CONFIG_MFD_WM8350=y
+CONFIG_MFD_WM8350_I2C=y
+CONFIG_MFD_WM8994=y
+CONFIG_VEXPRESS_CONFIG=y
+CONFIG_REGULATOR=y
+# CONFIG_REGULATOR_DEBUG is not set
+# CONFIG_REGULATOR_DUMMY is not set
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
+# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
+CONFIG_REGULATOR_GPIO=y
+CONFIG_REGULATOR_AD5398=m
+CONFIG_REGULATOR_AAT2870=m
+CONFIG_REGULATOR_DA903X=m
+CONFIG_REGULATOR_DA9052=m
+CONFIG_REGULATOR_DA9055=m
+CONFIG_REGULATOR_FAN53555=m
+CONFIG_REGULATOR_ANATOP=m
+CONFIG_REGULATOR_ISL6271A=m
+CONFIG_REGULATOR_88PM8607=y
+CONFIG_REGULATOR_MAX1586=m
+CONFIG_REGULATOR_MAX8649=m
+CONFIG_REGULATOR_MAX8660=m
+CONFIG_REGULATOR_MAX8907=m
+CONFIG_REGULATOR_MAX8925=m
+CONFIG_REGULATOR_MAX8952=m
+CONFIG_REGULATOR_MAX8973=m
+CONFIG_REGULATOR_MAX8997=m
+CONFIG_REGULATOR_MAX8998=m
+CONFIG_REGULATOR_MAX77686=m
+CONFIG_REGULATOR_LP3971=m
+CONFIG_REGULATOR_LP3972=m
+CONFIG_REGULATOR_LP872X=y
+CONFIG_REGULATOR_LP8755=m
+CONFIG_REGULATOR_LP8788=y
+CONFIG_REGULATOR_RC5T583=m
+CONFIG_REGULATOR_S2MPS11=m
+CONFIG_REGULATOR_S5M8767=m
+CONFIG_REGULATOR_AB3100=y
+CONFIG_REGULATOR_AB8500=y
+CONFIG_REGULATOR_DBX500_PRCMU=y
+CONFIG_REGULATOR_DB8500_PRCMU=y
+CONFIG_REGULATOR_PALMAS=m
+CONFIG_REGULATOR_TPS51632=m
+CONFIG_REGULATOR_TPS62360=m
+CONFIG_REGULATOR_TPS65023=m
+CONFIG_REGULATOR_TPS6507X=m
+CONFIG_REGULATOR_TPS65090=m
+CONFIG_REGULATOR_TPS6586X=m
+CONFIG_REGULATOR_TPS65910=m
+CONFIG_REGULATOR_TPS65912=m
+CONFIG_REGULATOR_TPS80031=m
+CONFIG_REGULATOR_TWL4030=y
+CONFIG_REGULATOR_VEXPRESS=m
+CONFIG_REGULATOR_WM831X=m
+CONFIG_REGULATOR_WM8350=m
+CONFIG_REGULATOR_WM8400=m
+CONFIG_REGULATOR_WM8994=m
+CONFIG_REGULATOR_AS3711=m
+CONFIG_MEDIA_SUPPORT=m
+
+#
+# Multimedia core support
+#
+CONFIG_MEDIA_CAMERA_SUPPORT=y
+CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
+CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
+# CONFIG_MEDIA_RADIO_SUPPORT is not set
+CONFIG_MEDIA_RC_SUPPORT=y
+CONFIG_MEDIA_CONTROLLER=y
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L2_SUBDEV_API=y
+CONFIG_VIDEO_V4L2=m
+# CONFIG_VIDEO_ADV_DEBUG is not set
+# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
+CONFIG_VIDEO_TUNER=m
+CONFIG_V4L2_MEM2MEM_DEV=m
+CONFIG_VIDEOBUF_GEN=m
+CONFIG_VIDEOBUF_DMA_SG=m
+CONFIG_VIDEOBUF_VMALLOC=m
+CONFIG_VIDEOBUF_DMA_CONTIG=m
+CONFIG_VIDEOBUF_DVB=m
+CONFIG_VIDEOBUF2_CORE=m
+CONFIG_VIDEOBUF2_MEMOPS=m
+CONFIG_VIDEOBUF2_DMA_CONTIG=m
+CONFIG_VIDEOBUF2_VMALLOC=m
+# CONFIG_VIDEO_V4L2_INT_DEVICE is not set
+CONFIG_DVB_CORE=m
+CONFIG_DVB_NET=y
+CONFIG_TTPCI_EEPROM=m
+CONFIG_DVB_MAX_ADAPTERS=8
+CONFIG_DVB_DYNAMIC_MINORS=y
+
+#
+# Media drivers
+#
+CONFIG_RC_CORE=m
+CONFIG_RC_MAP=m
+CONFIG_RC_DECODERS=y
+CONFIG_LIRC=m
+CONFIG_IR_LIRC_CODEC=m
+CONFIG_IR_NEC_DECODER=m
+CONFIG_IR_RC5_DECODER=m
+CONFIG_IR_RC6_DECODER=m
+CONFIG_IR_JVC_DECODER=m
+CONFIG_IR_SONY_DECODER=m
+CONFIG_IR_RC5_SZ_DECODER=m
+CONFIG_IR_SANYO_DECODER=m
+CONFIG_IR_MCE_KBD_DECODER=m
+CONFIG_RC_DEVICES=y
+CONFIG_RC_ATI_REMOTE=m
+CONFIG_IR_IMON=m
+CONFIG_IR_MCEUSB=m
+CONFIG_IR_REDRAT3=m
+CONFIG_IR_STREAMZAP=m
+CONFIG_IR_IGUANA=m
+CONFIG_IR_TTUSBIR=m
+CONFIG_RC_LOOPBACK=m
+CONFIG_IR_GPIO_CIR=m
+CONFIG_MEDIA_USB_SUPPORT=y
+
+#
+# Webcam devices
+#
+CONFIG_USB_VIDEO_CLASS=m
+CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
+CONFIG_USB_GSPCA=m
+CONFIG_USB_M5602=m
+CONFIG_USB_STV06XX=m
+CONFIG_USB_GL860=m
+CONFIG_USB_GSPCA_BENQ=m
+CONFIG_USB_GSPCA_CONEX=m
+CONFIG_USB_GSPCA_CPIA1=m
+CONFIG_USB_GSPCA_ETOMS=m
+CONFIG_USB_GSPCA_FINEPIX=m
+CONFIG_USB_GSPCA_JEILINJ=m
+CONFIG_USB_GSPCA_JL2005BCD=m
+CONFIG_USB_GSPCA_KINECT=m
+CONFIG_USB_GSPCA_KONICA=m
+CONFIG_USB_GSPCA_MARS=m
+CONFIG_USB_GSPCA_MR97310A=m
+CONFIG_USB_GSPCA_NW80X=m
+CONFIG_USB_GSPCA_OV519=m
+CONFIG_USB_GSPCA_OV534=m
+CONFIG_USB_GSPCA_OV534_9=m
+CONFIG_USB_GSPCA_PAC207=m
+CONFIG_USB_GSPCA_PAC7302=m
+CONFIG_USB_GSPCA_PAC7311=m
+CONFIG_USB_GSPCA_SE401=m
+CONFIG_USB_GSPCA_SN9C2028=m
+CONFIG_USB_GSPCA_SN9C20X=m
+CONFIG_USB_GSPCA_SONIXB=m
+CONFIG_USB_GSPCA_SONIXJ=m
+CONFIG_USB_GSPCA_SPCA500=m
+CONFIG_USB_GSPCA_SPCA501=m
+CONFIG_USB_GSPCA_SPCA505=m
+CONFIG_USB_GSPCA_SPCA506=m
+CONFIG_USB_GSPCA_SPCA508=m
+CONFIG_USB_GSPCA_SPCA561=m
+CONFIG_USB_GSPCA_SPCA1528=m
+CONFIG_USB_GSPCA_SQ905=m
+CONFIG_USB_GSPCA_SQ905C=m
+CONFIG_USB_GSPCA_SQ930X=m
+CONFIG_USB_GSPCA_STK014=m
+CONFIG_USB_GSPCA_STV0680=m
+CONFIG_USB_GSPCA_SUNPLUS=m
+CONFIG_USB_GSPCA_T613=m
+CONFIG_USB_GSPCA_TOPRO=m
+CONFIG_USB_GSPCA_TV8532=m
+CONFIG_USB_GSPCA_VC032X=m
+CONFIG_USB_GSPCA_VICAM=m
+CONFIG_USB_GSPCA_XIRLINK_CIT=m
+CONFIG_USB_GSPCA_ZC3XX=m
+CONFIG_USB_PWC=m
+# CONFIG_USB_PWC_DEBUG is not set
+CONFIG_USB_PWC_INPUT_EVDEV=y
+CONFIG_VIDEO_CPIA2=m
+CONFIG_USB_ZR364XX=m
+CONFIG_USB_STKWEBCAM=m
+CONFIG_USB_S2255=m
+CONFIG_USB_SN9C102=m
+
+#
+# Analog TV USB devices
+#
+CONFIG_VIDEO_PVRUSB2=m
+CONFIG_VIDEO_PVRUSB2_SYSFS=y
+CONFIG_VIDEO_PVRUSB2_DVB=y
+# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
+CONFIG_VIDEO_HDPVR=m
+CONFIG_VIDEO_TLG2300=m
+CONFIG_VIDEO_USBVISION=m
+CONFIG_VIDEO_STK1160=m
+CONFIG_VIDEO_STK1160_AC97=y
+
+#
+# Analog/digital TV USB devices
+#
+CONFIG_VIDEO_AU0828=m
+CONFIG_VIDEO_AU0828_V4L2=y
+CONFIG_VIDEO_CX231XX=m
+CONFIG_VIDEO_CX231XX_RC=y
+CONFIG_VIDEO_CX231XX_ALSA=m
+CONFIG_VIDEO_CX231XX_DVB=m
+CONFIG_VIDEO_TM6000=m
+CONFIG_VIDEO_TM6000_ALSA=m
+CONFIG_VIDEO_TM6000_DVB=m
+
+#
+# Digital TV USB devices
+#
+CONFIG_DVB_USB=m
+# CONFIG_DVB_USB_DEBUG is not set
+CONFIG_DVB_USB_A800=m
+CONFIG_DVB_USB_DIBUSB_MB=m
+CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y
+CONFIG_DVB_USB_DIBUSB_MC=m
+CONFIG_DVB_USB_DIB0700=m
+CONFIG_DVB_USB_UMT_010=m
+CONFIG_DVB_USB_CXUSB=m
+CONFIG_DVB_USB_M920X=m
+CONFIG_DVB_USB_DIGITV=m
+CONFIG_DVB_USB_VP7045=m
+CONFIG_DVB_USB_VP702X=m
+CONFIG_DVB_USB_GP8PSK=m
+CONFIG_DVB_USB_NOVA_T_USB2=m
+CONFIG_DVB_USB_TTUSB2=m
+CONFIG_DVB_USB_DTT200U=m
+CONFIG_DVB_USB_OPERA1=m
+CONFIG_DVB_USB_AF9005=m
+CONFIG_DVB_USB_AF9005_REMOTE=m
+CONFIG_DVB_USB_PCTV452E=m
+CONFIG_DVB_USB_DW2102=m
+CONFIG_DVB_USB_CINERGY_T2=m
+CONFIG_DVB_USB_DTV5100=m
+CONFIG_DVB_USB_FRIIO=m
+CONFIG_DVB_USB_AZ6027=m
+CONFIG_DVB_USB_TECHNISAT_USB2=m
+CONFIG_DVB_USB_V2=m
+CONFIG_DVB_USB_AF9015=m
+CONFIG_DVB_USB_AF9035=m
+CONFIG_DVB_USB_ANYSEE=m
+CONFIG_DVB_USB_AU6610=m
+CONFIG_DVB_USB_AZ6007=m
+CONFIG_DVB_USB_CE6230=m
+CONFIG_DVB_USB_EC168=m
+CONFIG_DVB_USB_GL861=m
+CONFIG_DVB_USB_IT913X=m
+CONFIG_DVB_USB_LME2510=m
+CONFIG_DVB_USB_MXL111SF=m
+CONFIG_DVB_USB_RTL28XXU=m
+CONFIG_DVB_USB_DVBSKY=m
+CONFIG_DVB_TTUSB_BUDGET=m
+CONFIG_DVB_TTUSB_DEC=m
+CONFIG_SMS_USB_DRV=m
+CONFIG_DVB_B2C2_FLEXCOP_USB=m
+# CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set
+
+#
+# Webcam, TV (analog/digital) USB devices
+#
+CONFIG_VIDEO_EM28XX=m
+CONFIG_VIDEO_EM28XX_ALSA=m
+CONFIG_VIDEO_EM28XX_DVB=m
+CONFIG_VIDEO_EM28XX_RC=m
+CONFIG_MEDIA_PCI_SUPPORT=y
+
+#
+# Media capture support
+#
+
+#
+# Media capture/analog TV support
+#
+CONFIG_VIDEO_IVTV=m
+CONFIG_VIDEO_IVTV_ALSA=m
+CONFIG_VIDEO_FB_IVTV=m
+CONFIG_VIDEO_HEXIUM_GEMINI=m
+CONFIG_VIDEO_HEXIUM_ORION=m
+CONFIG_VIDEO_MXB=m
+
+#
+# Media capture/analog/hybrid TV support
+#
+CONFIG_VIDEO_CX18=m
+CONFIG_VIDEO_CX18_ALSA=m
+CONFIG_VIDEO_CX23885=m
+CONFIG_MEDIA_ALTERA_CI=m
+CONFIG_VIDEO_CX25821=m
+CONFIG_VIDEO_CX25821_ALSA=m
+CONFIG_VIDEO_CX88=m
+CONFIG_VIDEO_CX88_ALSA=m
+CONFIG_VIDEO_CX88_BLACKBIRD=m
+CONFIG_VIDEO_CX88_DVB=m
+CONFIG_VIDEO_CX88_VP3054=m
+CONFIG_VIDEO_CX88_MPEG=m
+CONFIG_VIDEO_BT848=m
+CONFIG_DVB_BT8XX=m
+CONFIG_VIDEO_SAA7134=m
+CONFIG_VIDEO_SAA7134_ALSA=m
+CONFIG_VIDEO_SAA7134_RC=y
+CONFIG_VIDEO_SAA7134_DVB=m
+CONFIG_VIDEO_SAA7164=m
+
+#
+# Media digital TV PCI Adapters
+#
+CONFIG_DVB_AV7110=m
+CONFIG_DVB_AV7110_OSD=y
+CONFIG_DVB_BUDGET_CORE=m
+CONFIG_DVB_BUDGET=m
+CONFIG_DVB_BUDGET_CI=m
+CONFIG_DVB_BUDGET_AV=m
+CONFIG_DVB_BUDGET_PATCH=m
+CONFIG_DVB_B2C2_FLEXCOP_PCI=m
+# CONFIG_DVB_B2C2_FLEXCOP_PCI_DEBUG is not set
+CONFIG_DVB_PLUTO2=m
+CONFIG_DVB_DM1105=m
+CONFIG_DVB_PT1=m
+CONFIG_MANTIS_CORE=m
+CONFIG_DVB_MANTIS=m
+CONFIG_DVB_HOPPER=m
+CONFIG_DVB_NGENE=m
+# CONFIG_DVB_DDBRIDGE is not set
+CONFIG_V4L_PLATFORM_DRIVERS=y
+CONFIG_VIDEO_CAFE_CCIC=m
+CONFIG_VIDEO_DM6446_CCDC=m
+CONFIG_VIDEO_OMAP2_VOUT_VRFB=y
+CONFIG_VIDEO_OMAP2_VOUT=m
+CONFIG_VIDEO_TIMBERDALE=m
+CONFIG_SOC_CAMERA=m
+CONFIG_SOC_CAMERA_PLATFORM=m
+CONFIG_MX3_VIDEO=y
+CONFIG_VIDEO_MX3=m
+CONFIG_VIDEO_SH_MOBILE_CSI2=m
+CONFIG_VIDEO_SH_MOBILE_CEU=m
+CONFIG_V4L_MEM2MEM_DRIVERS=y
+CONFIG_VIDEO_CODA=m
+CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m
+CONFIG_VIDEO_SH_VEU=m
+# CONFIG_V4L_TEST_DRIVERS is not set
+
+#
+# Supported MMC/SDIO adapters
+#
+CONFIG_SMS_SDIO_DRV=m
+
+#
+# Supported FireWire (IEEE 1394) Adapters
+#
+# CONFIG_DVB_FIREDTV is not set
+CONFIG_MEDIA_COMMON_OPTIONS=y
+
+#
+# common driver options
+#
+CONFIG_VIDEO_CX2341X=m
+CONFIG_VIDEO_BTCX=m
+CONFIG_VIDEO_TVEEPROM=m
+CONFIG_CYPRESS_FIRMWARE=m
+CONFIG_DVB_B2C2_FLEXCOP=m
+CONFIG_VIDEO_SAA7146=m
+CONFIG_VIDEO_SAA7146_VV=m
+CONFIG_SMS_SIANO_MDTV=m
+CONFIG_SMS_SIANO_RC=y
+# CONFIG_SMS_SIANO_DEBUGFS is not set
+
+#
+# Media ancillary drivers (tuners, sensors, i2c, frontends)
+#
+CONFIG_MEDIA_SUBDRV_AUTOSELECT=y
+CONFIG_MEDIA_ATTACH=y
+CONFIG_VIDEO_IR_I2C=m
+
+#
+# Audio decoders, processors and mixers
+#
+CONFIG_VIDEO_TVAUDIO=m
+CONFIG_VIDEO_TDA7432=m
+CONFIG_VIDEO_TDA9840=m
+CONFIG_VIDEO_TEA6415C=m
+CONFIG_VIDEO_TEA6420=m
+CONFIG_VIDEO_MSP3400=m
+CONFIG_VIDEO_CS5345=m
+CONFIG_VIDEO_CS53L32A=m
+CONFIG_VIDEO_WM8775=m
+CONFIG_VIDEO_WM8739=m
+CONFIG_VIDEO_VP27SMPX=m
+
+#
+# RDS decoders
+#
+CONFIG_VIDEO_SAA6588=m
+
+#
+# Video decoders
+#
+CONFIG_VIDEO_ADV7180=m
+CONFIG_VIDEO_SAA711X=m
+CONFIG_VIDEO_TVP5150=m
+
+#
+# Video and audio decoders
+#
+CONFIG_VIDEO_SAA717X=m
+CONFIG_VIDEO_CX25840=m
+
+#
+# Video encoders
+#
+CONFIG_VIDEO_SAA7127=m
+
+#
+# Camera sensor devices
+#
+CONFIG_VIDEO_OV7670=m
+CONFIG_VIDEO_MT9V011=m
+
+#
+# Flash devices
+#
+
+#
+# Video improvement chips
+#
+CONFIG_VIDEO_UPD64031A=m
+CONFIG_VIDEO_UPD64083=m
+
+#
+# Miscelaneous helper chips
+#
+CONFIG_VIDEO_M52790=m
+
+#
+# Sensors used on soc_camera driver
+#
+
+#
+# soc_camera sensor drivers
+#
+CONFIG_SOC_CAMERA_IMX074=m
+CONFIG_SOC_CAMERA_MT9M001=m
+CONFIG_SOC_CAMERA_MT9M111=m
+CONFIG_SOC_CAMERA_MT9T031=m
+CONFIG_SOC_CAMERA_MT9T112=m
+CONFIG_SOC_CAMERA_MT9V022=m
+CONFIG_SOC_CAMERA_OV2640=m
+CONFIG_SOC_CAMERA_OV5642=m
+CONFIG_SOC_CAMERA_OV6650=m
+CONFIG_SOC_CAMERA_OV772X=m
+CONFIG_SOC_CAMERA_OV9640=m
+CONFIG_SOC_CAMERA_OV9740=m
+CONFIG_SOC_CAMERA_RJ54N1=m
+CONFIG_SOC_CAMERA_TW9910=m
+CONFIG_MEDIA_TUNER=m
+CONFIG_MEDIA_TUNER_SIMPLE=m
+CONFIG_MEDIA_TUNER_TDA8290=m
+CONFIG_MEDIA_TUNER_TDA827X=m
+CONFIG_MEDIA_TUNER_TDA18271=m
+CONFIG_MEDIA_TUNER_TDA9887=m
+CONFIG_MEDIA_TUNER_MT20XX=m
+CONFIG_MEDIA_TUNER_MT2060=m
+CONFIG_MEDIA_TUNER_MT2063=m
+CONFIG_MEDIA_TUNER_MT2266=m
+CONFIG_MEDIA_TUNER_MT2131=m
+CONFIG_MEDIA_TUNER_QT1010=m
+CONFIG_MEDIA_TUNER_XC2028=m
+CONFIG_MEDIA_TUNER_XC5000=m
+CONFIG_MEDIA_TUNER_XC4000=m
+CONFIG_MEDIA_TUNER_MXL5005S=m
+CONFIG_MEDIA_TUNER_MXL5007T=m
+CONFIG_MEDIA_TUNER_MC44S803=m
+CONFIG_MEDIA_TUNER_MAX2165=m
+CONFIG_MEDIA_TUNER_TDA18218=m
+CONFIG_MEDIA_TUNER_FC0011=m
+CONFIG_MEDIA_TUNER_FC0012=m
+CONFIG_MEDIA_TUNER_FC0013=m
+CONFIG_MEDIA_TUNER_TDA18212=m
+CONFIG_MEDIA_TUNER_E4000=m
+CONFIG_MEDIA_TUNER_FC2580=m
+CONFIG_MEDIA_TUNER_TUA9001=m
+CONFIG_MEDIA_TUNER_IT913X=m
+CONFIG_MEDIA_TUNER_R820T=m
+
+#
+# Multistandard (satellite) frontends
+#
+CONFIG_DVB_STB0899=m
+CONFIG_DVB_STB6100=m
+CONFIG_DVB_STV090x=m
+CONFIG_DVB_STV6110x=m
+
+#
+# Multistandard (cable + terrestrial) frontends
+#
+CONFIG_DVB_DRXK=m
+CONFIG_DVB_TDA18271C2DD=m
+
+#
+# DVB-S (satellite) frontends
+#
+CONFIG_DVB_CX24110=m
+CONFIG_DVB_CX24123=m
+CONFIG_DVB_MT312=m
+CONFIG_DVB_ZL10036=m
+CONFIG_DVB_ZL10039=m
+CONFIG_DVB_S5H1420=m
+CONFIG_DVB_STV0288=m
+CONFIG_DVB_STB6000=m
+CONFIG_DVB_STV0299=m
+CONFIG_DVB_STV6110=m
+CONFIG_DVB_STV0900=m
+CONFIG_DVB_TDA8083=m
+CONFIG_DVB_TDA10086=m
+CONFIG_DVB_TDA8261=m
+CONFIG_DVB_VES1X93=m
+CONFIG_DVB_TUNER_ITD1000=m
+CONFIG_DVB_TUNER_CX24113=m
+CONFIG_DVB_TDA826X=m
+CONFIG_DVB_TUA6100=m
+CONFIG_DVB_CX24116=m
+CONFIG_DVB_M88DS3103=m
+CONFIG_DVB_M88DC2800=m
+CONFIG_DVB_SI21XX=m
+CONFIG_DVB_TS2020=m
+CONFIG_DVB_DS3000=m
+CONFIG_DVB_MB86A16=m
+CONFIG_DVB_TDA10071=m
+
+#
+# DVB-T (terrestrial) frontends
+#
+CONFIG_DVB_SP8870=m
+CONFIG_DVB_SP887X=m
+CONFIG_DVB_CX22700=m
+CONFIG_DVB_CX22702=m
+CONFIG_DVB_DRXD=m
+CONFIG_DVB_L64781=m
+CONFIG_DVB_TDA1004X=m
+CONFIG_DVB_NXT6000=m
+CONFIG_DVB_MT352=m
+CONFIG_DVB_ZL10353=m
+CONFIG_DVB_DIB3000MB=m
+CONFIG_DVB_DIB3000MC=m
+CONFIG_DVB_DIB7000M=m
+CONFIG_DVB_DIB7000P=m
+CONFIG_DVB_TDA10048=m
+CONFIG_DVB_AF9013=m
+CONFIG_DVB_EC100=m
+CONFIG_DVB_STV0367=m
+CONFIG_DVB_CXD2820R=m
+CONFIG_DVB_RTL2830=m
+CONFIG_DVB_RTL2832=m
+
+#
+# DVB-C (cable) frontends
+#
+CONFIG_DVB_VES1820=m
+CONFIG_DVB_TDA10021=m
+CONFIG_DVB_TDA10023=m
+CONFIG_DVB_STV0297=m
+
+#
+# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
+#
+CONFIG_DVB_NXT200X=m
+CONFIG_DVB_OR51211=m
+CONFIG_DVB_OR51132=m
+CONFIG_DVB_BCM3510=m
+CONFIG_DVB_LGDT330X=m
+CONFIG_DVB_LGDT3305=m
+CONFIG_DVB_LG2160=m
+CONFIG_DVB_S5H1409=m
+CONFIG_DVB_AU8522=m
+CONFIG_DVB_AU8522_DTV=m
+CONFIG_DVB_AU8522_V4L=m
+CONFIG_DVB_S5H1411=m
+
+#
+# ISDB-T (terrestrial) frontends
+#
+CONFIG_DVB_S921=m
+CONFIG_DVB_DIB8000=m
+CONFIG_DVB_MB86A20S=m
+
+#
+# Digital terrestrial only tuners/PLL
+#
+CONFIG_DVB_PLL=m
+CONFIG_DVB_TUNER_DIB0070=m
+CONFIG_DVB_TUNER_DIB0090=m
+
+#
+# SEC control devices for DVB-S
+#
+CONFIG_DVB_LNBP21=m
+CONFIG_DVB_LNBP22=m
+CONFIG_DVB_ISL6405=m
+CONFIG_DVB_ISL6421=m
+CONFIG_DVB_ISL6423=m
+CONFIG_DVB_A8293=m
+CONFIG_DVB_LGS8GXX=m
+CONFIG_DVB_ATBM8830=m
+CONFIG_DVB_TDA665x=m
+CONFIG_DVB_IX2505V=m
+CONFIG_DVB_IT913X_FE=m
+CONFIG_DVB_M88RS2000=m
+CONFIG_DVB_AF9033=m
+
+#
+# Tools to develop new frontends
+#
+# CONFIG_DVB_DUMMY_FE is not set
+
+#
+# Graphics support
+#
+CONFIG_VGA_ARB=y
+CONFIG_VGA_ARB_MAX_GPUS=16
+CONFIG_DRM=m
+CONFIG_DRM_USB=m
+CONFIG_DRM_KMS_HELPER=m
+# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
+CONFIG_DRM_TTM=m
+
+#
+# I2C encoder or helper chips
+#
+CONFIG_DRM_I2C_CH7006=m
+CONFIG_DRM_I2C_SIL164=m
+CONFIG_DRM_I2C_NXP_TDA998X=m
+CONFIG_DRM_TDFX=m
+CONFIG_DRM_R128=m
+CONFIG_DRM_RADEON=m
+# CONFIG_DRM_RADEON_UMS is not set
+CONFIG_DRM_NOUVEAU=m
+CONFIG_NOUVEAU_DEBUG=5
+CONFIG_NOUVEAU_DEBUG_DEFAULT=3
+CONFIG_DRM_NOUVEAU_BACKLIGHT=y
+CONFIG_DRM_MGA=m
+CONFIG_DRM_VIA=m
+CONFIG_DRM_SAVAGE=m
+CONFIG_DRM_EXYNOS=m
+CONFIG_DRM_EXYNOS_DMABUF=y
+CONFIG_DRM_EXYNOS_HDMI=y
+CONFIG_DRM_EXYNOS_VIDI=y
+CONFIG_DRM_EXYNOS_G2D=y
+CONFIG_DRM_VMWGFX=m
+# CONFIG_DRM_VMWGFX_FBCON is not set
+CONFIG_DRM_UDL=m
+CONFIG_DRM_AST=m
+CONFIG_DRM_MGAG200=m
+CONFIG_DRM_CIRRUS_QEMU=m
+CONFIG_DRM_OMAP=m
+CONFIG_DRM_OMAP_NUM_CRTCS=1
+# CONFIG_DRM_TILCDC is not set
+CONFIG_DRM_QXL=m
+# CONFIG_TEGRA_HOST1X is not set
+CONFIG_VGASTATE=m
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+CONFIG_HDMI=y
+CONFIG_FB=m
+# CONFIG_FIRMWARE_EDID is not set
+CONFIG_FB_DDC=m
+# CONFIG_FB_BOOT_VESA_SUPPORT is not set
+CONFIG_FB_CFB_FILLRECT=m
+CONFIG_FB_CFB_COPYAREA=m
+CONFIG_FB_CFB_IMAGEBLIT=m
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+CONFIG_FB_SYS_FILLRECT=m
+CONFIG_FB_SYS_COPYAREA=m
+CONFIG_FB_SYS_IMAGEBLIT=m
+# CONFIG_FB_FOREIGN_ENDIAN is not set
+CONFIG_FB_SYS_FOPS=m
+CONFIG_FB_DEFERRED_IO=y
+CONFIG_FB_SVGALIB=m
+# CONFIG_FB_MACMODES is not set
+CONFIG_FB_BACKLIGHT=y
+CONFIG_FB_MODE_HELPERS=y
+CONFIG_FB_TILEBLITTING=y
+
+#
+# Frame buffer hardware drivers
+#
+CONFIG_FB_CIRRUS=m
+CONFIG_FB_PM2=m
+# CONFIG_FB_PM2_FIFO_DISCONNECT is not set
+CONFIG_FB_ARMCLCD=m
+# CONFIG_FB_IMX is not set
+CONFIG_FB_CYBER2000=m
+CONFIG_FB_CYBER2000_DDC=y
+# CONFIG_FB_UVESA is not set
+CONFIG_FB_S1D13XXX=m
+# CONFIG_FB_NVIDIA is not set
+CONFIG_FB_RIVA=m
+# CONFIG_FB_RIVA_I2C is not set
+# CONFIG_FB_RIVA_DEBUG is not set
+CONFIG_FB_RIVA_BACKLIGHT=y
+CONFIG_FB_I740=m
+CONFIG_FB_MATROX=m
+CONFIG_FB_MATROX_MILLENIUM=y
+CONFIG_FB_MATROX_MYSTIQUE=y
+# CONFIG_FB_MATROX_G is not set
+CONFIG_FB_MATROX_I2C=m
+# CONFIG_FB_RADEON is not set
+# CONFIG_FB_ATY128 is not set
+CONFIG_FB_ATY=m
+CONFIG_FB_ATY_CT=y
+CONFIG_FB_ATY_GENERIC_LCD=y
+CONFIG_FB_ATY_GX=y
+CONFIG_FB_ATY_BACKLIGHT=y
+CONFIG_FB_S3=m
+CONFIG_FB_S3_DDC=y
+CONFIG_FB_SAVAGE=m
+CONFIG_FB_SAVAGE_I2C=y
+CONFIG_FB_SAVAGE_ACCEL=y
+# CONFIG_FB_SIS is not set
+CONFIG_FB_NEOMAGIC=m
+CONFIG_FB_KYRO=m
+# CONFIG_FB_3DFX is not set
+CONFIG_FB_VOODOO1=m
+CONFIG_FB_VT8623=m
+CONFIG_FB_TRIDENT=m
+CONFIG_FB_ARK=m
+CONFIG_FB_PM3=m
+CONFIG_FB_CARMINE=m
+CONFIG_FB_CARMINE_DRAM_EVAL=y
+# CONFIG_CARMINE_DRAM_CUSTOM is not set
+# CONFIG_FB_TMIO is not set
+# CONFIG_FB_SM501 is not set
+CONFIG_FB_SMSCUFX=m
+CONFIG_FB_UDL=m
+# CONFIG_FB_GOLDFISH is not set
+# CONFIG_FB_VIRTUAL is not set
+CONFIG_FB_METRONOME=m
+CONFIG_FB_MB862XX=m
+CONFIG_FB_MB862XX_PCI_GDC=y
+CONFIG_FB_MB862XX_I2C=y
+CONFIG_FB_MX3=m
+CONFIG_FB_BROADSHEET=m
+CONFIG_FB_AUO_K190X=m
+CONFIG_FB_AUO_K1900=m
+CONFIG_FB_AUO_K1901=m
+CONFIG_OMAP2_VRFB=y
+CONFIG_OMAP2_DSS=y
+# CONFIG_OMAP2_DSS_DEBUG is not set
+# CONFIG_OMAP2_DSS_DEBUGFS is not set
+CONFIG_OMAP2_DSS_DPI=y
+# CONFIG_OMAP2_DSS_RFBI is not set
+CONFIG_OMAP2_DSS_VENC=y
+CONFIG_OMAP4_DSS_HDMI=y
+CONFIG_OMAP4_DSS_HDMI_AUDIO=y
+# CONFIG_OMAP2_DSS_SDI is not set
+# CONFIG_OMAP2_DSS_DSI is not set
+CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=1
+CONFIG_OMAP2_DSS_SLEEP_AFTER_VENC_RESET=y
+# CONFIG_FB_OMAP2 is not set
+
+#
+# OMAP2/3 Display Device Drivers
+#
+CONFIG_PANEL_GENERIC_DPI=y
+CONFIG_PANEL_TFP410=m
+CONFIG_PANEL_SHARP_LS037V7DW01=y
+# CONFIG_PANEL_PICODLP is not set
+# CONFIG_EXYNOS_VIDEO is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_LCD_CLASS_DEVICE=m
+# CONFIG_LCD_PLATFORM is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_BACKLIGHT_GENERIC is not set
+# CONFIG_BACKLIGHT_LM3533 is not set
+# CONFIG_BACKLIGHT_PWM is not set
+# CONFIG_BACKLIGHT_DA903X is not set
+# CONFIG_BACKLIGHT_DA9052 is not set
+# CONFIG_BACKLIGHT_MAX8925 is not set
+# CONFIG_BACKLIGHT_WM831X is not set
+# CONFIG_BACKLIGHT_ADP5520 is not set
+# CONFIG_BACKLIGHT_ADP8860 is not set
+# CONFIG_BACKLIGHT_ADP8870 is not set
+# CONFIG_BACKLIGHT_88PM860X is not set
+# CONFIG_BACKLIGHT_AAT2870 is not set
+# CONFIG_BACKLIGHT_LM3630 is not set
+# CONFIG_BACKLIGHT_LM3639 is not set
+# CONFIG_BACKLIGHT_LP855X is not set
+# CONFIG_BACKLIGHT_LP8788 is not set
+# CONFIG_BACKLIGHT_PANDORA is not set
+# CONFIG_BACKLIGHT_AS3711 is not set
+
+#
+# Console display driver support
+#
+CONFIG_DUMMY_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE is not set
+CONFIG_FONT_8x16=y
+CONFIG_FONT_AUTOSELECT=y
+CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+CONFIG_LOGO_LINUX_CLUT224=y
+CONFIG_FB_SSD1307=m
+CONFIG_SOUND=m
+CONFIG_SOUND_OSS_CORE=y
+CONFIG_SOUND_OSS_CORE_PRECLAIM=y
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
+CONFIG_SND_COMPRESS_OFFLOAD=m
+CONFIG_SND_JACK=y
+CONFIG_SND_SEQUENCER=m
+CONFIG_SND_SEQ_DUMMY=m
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+CONFIG_SND_SEQUENCER_OSS=y
+CONFIG_SND_HRTIMER=m
+CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
+CONFIG_SND_DYNAMIC_MINORS=y
+# CONFIG_SND_SUPPORT_OLD_API is not set
+CONFIG_SND_VERBOSE_PROCFS=y
+CONFIG_SND_VERBOSE_PRINTK=y
+CONFIG_SND_DEBUG=y
+# CONFIG_SND_DEBUG_VERBOSE is not set
+CONFIG_SND_PCM_XRUN_DEBUG=y
+CONFIG_SND_VMASTER=y
+CONFIG_SND_KCTL_JACK=y
+CONFIG_SND_RAWMIDI_SEQ=m
+CONFIG_SND_OPL3_LIB_SEQ=m
+# CONFIG_SND_OPL4_LIB_SEQ is not set
+# CONFIG_SND_SBAWE_SEQ is not set
+CONFIG_SND_EMU10K1_SEQ=m
+CONFIG_SND_MPU401_UART=m
+CONFIG_SND_OPL3_LIB=m
+CONFIG_SND_VX_LIB=m
+CONFIG_SND_AC97_CODEC=m
+CONFIG_SND_DRIVERS=y
+CONFIG_SND_DUMMY=m
+CONFIG_SND_ALOOP=m
+CONFIG_SND_VIRMIDI=m
+CONFIG_SND_MTPAV=m
+CONFIG_SND_SERIAL_U16550=m
+CONFIG_SND_MPU401=m
+CONFIG_SND_AC97_POWER_SAVE=y
+CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0
+CONFIG_SND_TEA575X=m
+CONFIG_SND_PCI=y
+CONFIG_SND_AD1889=m
+CONFIG_SND_ALS300=m
+CONFIG_SND_ALI5451=m
+CONFIG_SND_ATIIXP=m
+CONFIG_SND_ATIIXP_MODEM=m
+CONFIG_SND_AU8810=m
+CONFIG_SND_AU8820=m
+CONFIG_SND_AU8830=m
+CONFIG_SND_AW2=m
+CONFIG_SND_AZT3328=m
+CONFIG_SND_BT87X=m
+# CONFIG_SND_BT87X_OVERCLOCK is not set
+CONFIG_SND_CA0106=m
+CONFIG_SND_CMIPCI=m
+CONFIG_SND_OXYGEN_LIB=m
+CONFIG_SND_OXYGEN=m
+CONFIG_SND_CS4281=m
+CONFIG_SND_CS46XX=m
+CONFIG_SND_CS46XX_NEW_DSP=y
+CONFIG_SND_CS5535AUDIO=m
+CONFIG_SND_CTXFI=m
+CONFIG_SND_DARLA20=m
+CONFIG_SND_GINA20=m
+CONFIG_SND_LAYLA20=m
+CONFIG_SND_DARLA24=m
+CONFIG_SND_GINA24=m
+CONFIG_SND_LAYLA24=m
+CONFIG_SND_MONA=m
+CONFIG_SND_MIA=m
+CONFIG_SND_ECHO3G=m
+CONFIG_SND_INDIGO=m
+CONFIG_SND_INDIGOIO=m
+CONFIG_SND_INDIGODJ=m
+CONFIG_SND_INDIGOIOX=m
+CONFIG_SND_INDIGODJX=m
+CONFIG_SND_EMU10K1=m
+CONFIG_SND_EMU10K1X=m
+CONFIG_SND_ENS1370=m
+CONFIG_SND_ENS1371=m
+CONFIG_SND_ES1938=m
+CONFIG_SND_ES1968=m
+CONFIG_SND_ES1968_INPUT=y
+CONFIG_SND_ES1968_RADIO=y
+CONFIG_SND_FM801=m
+CONFIG_SND_FM801_TEA575X_BOOL=y
+CONFIG_SND_HDA_INTEL=m
+CONFIG_SND_HDA_PREALLOC_SIZE=64
+CONFIG_SND_HDA_HWDEP=y
+CONFIG_SND_HDA_RECONFIG=y
+CONFIG_SND_HDA_INPUT_BEEP=y
+CONFIG_SND_HDA_INPUT_BEEP_MODE=1
+CONFIG_SND_HDA_INPUT_JACK=y
+# CONFIG_SND_HDA_PATCH_LOADER is not set
+CONFIG_SND_HDA_CODEC_REALTEK=y
+CONFIG_SND_HDA_CODEC_ANALOG=y
+CONFIG_SND_HDA_CODEC_SIGMATEL=y
+CONFIG_SND_HDA_CODEC_VIA=y
+CONFIG_SND_HDA_CODEC_HDMI=y
+CONFIG_SND_HDA_CODEC_CIRRUS=y
+CONFIG_SND_HDA_CODEC_CONEXANT=y
+CONFIG_SND_HDA_CODEC_CA0110=y
+CONFIG_SND_HDA_CODEC_CA0132=y
+# CONFIG_SND_HDA_CODEC_CA0132_DSP is not set
+CONFIG_SND_HDA_CODEC_CMEDIA=y
+CONFIG_SND_HDA_CODEC_SI3054=y
+CONFIG_SND_HDA_GENERIC=y
+CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
+CONFIG_SND_HDSP=m
+CONFIG_SND_HDSPM=m
+CONFIG_SND_ICE1712=m
+CONFIG_SND_ICE1724=m
+CONFIG_SND_INTEL8X0=m
+CONFIG_SND_INTEL8X0M=m
+CONFIG_SND_KORG1212=m
+CONFIG_SND_LOLA=m
+CONFIG_SND_MAESTRO3=m
+CONFIG_SND_MAESTRO3_INPUT=y
+CONFIG_SND_MIXART=m
+CONFIG_SND_NM256=m
+CONFIG_SND_PCXHR=m
+CONFIG_SND_RIPTIDE=m
+CONFIG_SND_RME32=m
+CONFIG_SND_RME96=m
+CONFIG_SND_RME9652=m
+CONFIG_SND_SONICVIBES=m
+CONFIG_SND_TRIDENT=m
+CONFIG_SND_VIA82XX=m
+CONFIG_SND_VIA82XX_MODEM=m
+CONFIG_SND_VIRTUOSO=m
+CONFIG_SND_VX222=m
+CONFIG_SND_YMFPCI=m
+CONFIG_SND_ARM=y
+CONFIG_SND_ARMAACI=m
+CONFIG_SND_USB=y
+CONFIG_SND_USB_AUDIO=m
+CONFIG_SND_USB_UA101=m
+CONFIG_SND_USB_CAIAQ=m
+CONFIG_SND_USB_CAIAQ_INPUT=y
+CONFIG_SND_USB_6FIRE=m
+CONFIG_SND_FIREWIRE=y
+CONFIG_SND_FIREWIRE_LIB=m
+CONFIG_SND_FIREWIRE_SPEAKERS=m
+# CONFIG_SND_ISIGHT is not set
+# CONFIG_SND_SCS1X is not set
+CONFIG_SND_SOC=m
+CONFIG_SND_SOC_AC97_BUS=y
+CONFIG_SND_SOC_DMAENGINE_PCM=y
+CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
+CONFIG_SND_ATMEL_SOC=m
+CONFIG_SND_DESIGNWARE_I2S=m
+CONFIG_SND_SOC_FSL_SSI=m
+CONFIG_SND_SOC_FSL_UTILS=m
+CONFIG_SND_IMX_SOC=m
+CONFIG_SND_SOC_IMX_SSI=m
+CONFIG_SND_SOC_IMX_PCM=m
+CONFIG_SND_SOC_IMX_PCM_FIQ=y
+CONFIG_SND_SOC_IMX_PCM_DMA=y
+CONFIG_SND_SOC_IMX_AUDMUX=m
+# CONFIG_SND_SOC_PHYCORE_AC97 is not set
+CONFIG_SND_SOC_EUKREA_TLV320=m
+CONFIG_SND_SOC_IMX_SGTL5000=m
+CONFIG_SND_OMAP_SOC=m
+CONFIG_SND_OMAP_SOC_DMIC=m
+CONFIG_SND_OMAP_SOC_MCBSP=m
+CONFIG_SND_OMAP_SOC_MCPDM=m
+CONFIG_SND_OMAP_SOC_HDMI=m
+# CONFIG_SND_OMAP_SOC_N810 is not set
+CONFIG_SND_OMAP_SOC_RX51=m
+CONFIG_SND_OMAP_SOC_AM3517EVM=m
+CONFIG_SND_OMAP_SOC_OMAP_TWL4030=m
+CONFIG_SND_OMAP_SOC_OMAP_ABE_TWL6040=m
+CONFIG_SND_OMAP_SOC_OMAP_HDMI=m
+CONFIG_SND_OMAP_SOC_OMAP3_PANDORA=m
+CONFIG_SND_SOC_TEGRA=m
+CONFIG_SND_SOC_TEGRA20_AC97=m
+CONFIG_SND_SOC_TEGRA20_DAS=m
+CONFIG_SND_SOC_TEGRA20_I2S=m
+CONFIG_SND_SOC_TEGRA20_SPDIF=m
+CONFIG_SND_SOC_TEGRA30_AHUB=m
+CONFIG_SND_SOC_TEGRA30_I2S=m
+# CONFIG_SND_SOC_TEGRA_WM8753 is not set
+CONFIG_SND_SOC_TEGRA_WM8903=m
+CONFIG_SND_SOC_TEGRA_WM9712=m
+CONFIG_SND_SOC_TEGRA_TRIMSLICE=m
+CONFIG_SND_SOC_TEGRA_ALC5632=m
+CONFIG_SND_SOC_UX500=m
+CONFIG_SND_SOC_UX500_PLAT_MSP_I2S=m
+CONFIG_SND_SOC_UX500_PLAT_DMA=m
+CONFIG_SND_SOC_UX500_MACH_MOP500=m
+CONFIG_SND_SOC_I2C_AND_SPI=m
+# CONFIG_SND_SOC_ALL_CODECS is not set
+CONFIG_SND_SOC_AB8500_CODEC=m
+CONFIG_SND_SOC_ALC5632=m
+CONFIG_SND_SOC_DMIC=m
+CONFIG_SND_SOC_OMAP_HDMI_CODEC=m
+CONFIG_SND_SOC_SGTL5000=m
+CONFIG_SND_SOC_TLV320AIC23=m
+CONFIG_SND_SOC_TLV320AIC3X=m
+CONFIG_SND_SOC_TWL4030=m
+CONFIG_SND_SOC_TWL6040=m
+CONFIG_SND_SOC_WM8903=m
+CONFIG_SND_SOC_WM9712=m
+CONFIG_SND_SOC_TPA6130A2=m
+CONFIG_SND_SIMPLE_CARD=m
+# CONFIG_SOUND_PRIME is not set
+CONFIG_AC97_BUS=m
+
+#
+# HID support
+#
+CONFIG_HID=y
+# CONFIG_HID_BATTERY_STRENGTH is not set
+CONFIG_HIDRAW=y
+# CONFIG_UHID is not set
+CONFIG_HID_GENERIC=y
+
+#
+# Special HID drivers
+#
+CONFIG_HID_A4TECH=y
+# CONFIG_HID_ACRUX is not set
+CONFIG_HID_APPLE=y
+# CONFIG_HID_APPLEIR is not set
+CONFIG_HID_AUREAL=m
+CONFIG_HID_BELKIN=y
+CONFIG_HID_CHERRY=y
+CONFIG_HID_CHICONY=y
+# CONFIG_HID_PRODIKEYS is not set
+CONFIG_HID_CYPRESS=y
+# CONFIG_HID_DRAGONRISE is not set
+# CONFIG_HID_EMS_FF is not set
+# CONFIG_HID_ELECOM is not set
+CONFIG_HID_EZKEY=y
+# CONFIG_HID_HOLTEK is not set
+CONFIG_HID_KEYTOUCH=m
+CONFIG_HID_KYE=y
+# CONFIG_HID_UCLOGIC is not set
+# CONFIG_HID_WALTOP is not set
+CONFIG_HID_GYRATION=m
+# CONFIG_HID_ICADE is not set
+CONFIG_HID_TWINHAN=m
+CONFIG_HID_KENSINGTON=y
+CONFIG_HID_LCPOWER=m
+CONFIG_HID_LENOVO_TPKBD=m
+CONFIG_HID_LOGITECH=y
+CONFIG_HID_LOGITECH_DJ=m
+# CONFIG_LOGITECH_FF is not set
+# CONFIG_LOGIRUMBLEPAD2_FF is not set
+# CONFIG_LOGIG940_FF is not set
+# CONFIG_LOGIWHEELS_FF is not set
+# CONFIG_HID_MAGICMOUSE is not set
+CONFIG_HID_MICROSOFT=y
+CONFIG_HID_MONTEREY=y
+# CONFIG_HID_MULTITOUCH is not set
+# CONFIG_HID_NTRIG is not set
+CONFIG_HID_ORTEK=m
+# CONFIG_HID_PANTHERLORD is not set
+CONFIG_HID_PETALYNX=m
+CONFIG_HID_PICOLCD=m
+CONFIG_HID_PICOLCD_FB=y
+CONFIG_HID_PICOLCD_BACKLIGHT=y
+CONFIG_HID_PICOLCD_LCD=y
+CONFIG_HID_PICOLCD_LEDS=y
+CONFIG_HID_PICOLCD_CIR=y
+# CONFIG_HID_PRIMAX is not set
+# CONFIG_HID_PS3REMOTE is not set
+CONFIG_HID_ROCCAT=m
+CONFIG_HID_SAITEK=m
+CONFIG_HID_SAMSUNG=m
+# CONFIG_HID_SONY is not set
+CONFIG_HID_SPEEDLINK=m
+# CONFIG_HID_STEELSERIES is not set
+CONFIG_HID_SUNPLUS=m
+# CONFIG_HID_GREENASIA is not set
+# CONFIG_HID_SMARTJOYPLUS is not set
+CONFIG_HID_TIVO=m
+CONFIG_HID_TOPSEED=m
+CONFIG_HID_THINGM=m
+# CONFIG_HID_THRUSTMASTER is not set
+# CONFIG_HID_WACOM is not set
+# CONFIG_HID_WIIMOTE is not set
+# CONFIG_HID_ZEROPLUS is not set
+CONFIG_HID_ZYDACRON=m
+CONFIG_HID_SENSOR_HUB=m
+
+#
+# USB HID support
+#
+CONFIG_USB_HID=y
+CONFIG_HID_PID=y
+CONFIG_USB_HIDDEV=y
+
+#
+# I2C HID support
+#
+CONFIG_I2C_HID=m
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB_ARCH_HAS_XHCI=y
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_COMMON=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEFAULT_PERSIST=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG is not set
+# CONFIG_USB_OTG_WHITELIST is not set
+# CONFIG_USB_OTG_BLACKLIST_HUB is not set
+CONFIG_USB_MON=m
+CONFIG_USB_WUSB_CBAF=m
+# CONFIG_USB_WUSB_CBAF_DEBUG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_C67X00_HCD is not set
+CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_XHCI_PLATFORM=m
+# CONFIG_USB_XHCI_HCD_DEBUGGING is not set
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+CONFIG_USB_EHCI_TT_NEWSCHED=y
+CONFIG_USB_EHCI_PCI=y
+CONFIG_USB_EHCI_MXC=m
+CONFIG_USB_EHCI_HCD_OMAP=y
+CONFIG_USB_EHCI_HCD_ORION=m
+CONFIG_USB_EHCI_HCD_SPEAR=y
+CONFIG_USB_EHCI_TEGRA=y
+# CONFIG_USB_CNS3XXX_EHCI is not set
+CONFIG_USB_EHCI_HCD_PLATFORM=y
+# CONFIG_USB_OXU210HP_HCD is not set
+# CONFIG_USB_ISP116X_HCD is not set
+# CONFIG_USB_ISP1760_HCD is not set
+CONFIG_USB_ISP1362_HCD=m
+CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_OHCI_HCD_OMAP3=y
+# CONFIG_USB_CNS3XXX_OHCI is not set
+CONFIG_USB_OHCI_HCD_PLATFORM=y
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_UHCI_HCD=y
+CONFIG_USB_UHCI_SUPPORT_NON_PCI_HC=y
+CONFIG_USB_UHCI_PLATFORM=y
+# CONFIG_USB_U132_HCD is not set
+CONFIG_USB_SL811_HCD=m
+CONFIG_USB_SL811_HCD_ISO=y
+# CONFIG_USB_R8A66597_HCD is not set
+CONFIG_USB_IMX21_HCD=m
+CONFIG_USB_HCD_SSB=m
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+CONFIG_USB_WDM=m
+CONFIG_USB_TMC=m
+
+#
+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
+#
+
+#
+# also be needed; see USB_STORAGE Help for more info
+#
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+CONFIG_USB_STORAGE_REALTEK=m
+CONFIG_REALTEK_AUTOPM=y
+CONFIG_USB_STORAGE_DATAFAB=m
+CONFIG_USB_STORAGE_FREECOM=m
+CONFIG_USB_STORAGE_ISD200=m
+CONFIG_USB_STORAGE_USBAT=m
+CONFIG_USB_STORAGE_SDDR09=m
+CONFIG_USB_STORAGE_SDDR55=m
+CONFIG_USB_STORAGE_JUMPSHOT=m
+CONFIG_USB_STORAGE_ALAUDA=m
+CONFIG_USB_STORAGE_ONETOUCH=m
+CONFIG_USB_STORAGE_KARMA=m
+CONFIG_USB_STORAGE_CYPRESS_ATACB=m
+CONFIG_USB_STORAGE_ENE_UB6250=m
+
+#
+# USB Imaging devices
+#
+CONFIG_USB_MDC800=m
+CONFIG_USB_MICROTEK=m
+CONFIG_USB_DWC3=m
+CONFIG_USB_DWC3_HOST=y
+# CONFIG_USB_DWC3_DEBUG is not set
+CONFIG_USB_CHIPIDEA=m
+# CONFIG_USB_CHIPIDEA_HOST is not set
+# CONFIG_USB_CHIPIDEA_DEBUG is not set
+
+#
+# USB port drivers
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_AIRCABLE=m
+CONFIG_USB_SERIAL_ARK3116=m
+CONFIG_USB_SERIAL_BELKIN=m
+CONFIG_USB_SERIAL_CH341=m
+CONFIG_USB_SERIAL_WHITEHEAT=m
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+CONFIG_USB_SERIAL_CP210X=m
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+# CONFIG_USB_SERIAL_EMPEG is not set
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_FUNSOFT=m
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_F81232=m
+# CONFIG_USB_SERIAL_GARMIN is not set
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_IUU=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+CONFIG_USB_SERIAL_KLSI=m
+# CONFIG_USB_SERIAL_KOBIL_SCT is not set
+CONFIG_USB_SERIAL_MCT_U232=m
+# CONFIG_USB_SERIAL_METRO is not set
+CONFIG_USB_SERIAL_MOS7720=m
+CONFIG_USB_SERIAL_MOS7840=m
+CONFIG_USB_SERIAL_MOTOROLA=m
+# CONFIG_USB_SERIAL_NAVMAN is not set
+CONFIG_USB_SERIAL_PL2303=m
+CONFIG_USB_SERIAL_OTI6858=m
+CONFIG_USB_SERIAL_QCAUX=m
+CONFIG_USB_SERIAL_QUALCOMM=m
+CONFIG_USB_SERIAL_SPCP8X5=m
+# CONFIG_USB_SERIAL_HP4X is not set
+# CONFIG_USB_SERIAL_SAFE is not set
+CONFIG_USB_SERIAL_SIEMENS_MPI=m
+CONFIG_USB_SERIAL_SIERRAWIRELESS=m
+# CONFIG_USB_SERIAL_SYMBOL is not set
+# CONFIG_USB_SERIAL_TI is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+CONFIG_USB_SERIAL_XIRCOM=m
+CONFIG_USB_SERIAL_WWAN=m
+CONFIG_USB_SERIAL_OPTION=m
+# CONFIG_USB_SERIAL_OMNINET is not set
+# CONFIG_USB_SERIAL_OPTICON is not set
+# CONFIG_USB_SERIAL_VIVOPAY_SERIAL is not set
+# CONFIG_USB_SERIAL_XSENS_MT is not set
+# CONFIG_USB_SERIAL_ZIO is not set
+# CONFIG_USB_SERIAL_WISHBONE is not set
+CONFIG_USB_SERIAL_ZTE=m
+CONFIG_USB_SERIAL_SSU100=m
+CONFIG_USB_SERIAL_QT2=m
+# CONFIG_USB_SERIAL_DEBUG is not set
+
+#
+# USB Miscellaneous drivers
+#
+CONFIG_USB_EMI62=m
+CONFIG_USB_EMI26=m
+CONFIG_USB_ADUTUX=m
+CONFIG_USB_SEVSEG=m
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+CONFIG_USB_LCD=m
+CONFIG_USB_LED=m
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_IDMOUSE is not set
+CONFIG_USB_FTDI_ELAN=m
+# CONFIG_USB_APPLEDISPLAY is not set
+CONFIG_USB_SISUSBVGA=m
+CONFIG_USB_SISUSBVGA_CON=y
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+CONFIG_USB_IOWARRIOR=m
+# CONFIG_USB_TEST is not set
+# CONFIG_USB_ISIGHTFW is not set
+CONFIG_USB_YUREX=m
+CONFIG_USB_EZUSB_FX2=m
+CONFIG_USB_HSIC_USB3503=m
+CONFIG_USB_ATM=m
+CONFIG_USB_SPEEDTOUCH=m
+CONFIG_USB_CXACRU=m
+CONFIG_USB_UEAGLEATM=m
+CONFIG_USB_XUSBATM=m
+CONFIG_USB_PHY=y
+CONFIG_AB8500_USB=m
+CONFIG_NOP_USB_XCEIV=m
+CONFIG_OMAP_CONTROL_USB=m
+CONFIG_OMAP_USB2=m
+CONFIG_OMAP_USB3=m
+CONFIG_SAMSUNG_USBPHY=y
+CONFIG_SAMSUNG_USB2PHY=y
+CONFIG_SAMSUNG_USB3PHY=y
+CONFIG_USB_GPIO_VBUS=m
+CONFIG_USB_ISP1301=m
+CONFIG_USB_MXS_PHY=m
+CONFIG_USB_RCAR_PHY=m
+CONFIG_USB_ULPI=y
+CONFIG_USB_ULPI_VIEWPORT=y
+# CONFIG_USB_GADGET is not set
+# CONFIG_UWB is not set
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_UNSAFE_RESUME is not set
+# CONFIG_MMC_CLKGATE is not set
+
+#
+# MMC/SD/SDIO Card Drivers
+#
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_MINORS=8
+CONFIG_MMC_BLOCK_BOUNCE=y
+# CONFIG_SDIO_UART is not set
+# CONFIG_MMC_TEST is not set
+
+#
+# MMC/SD/SDIO Host Controller Drivers
+#
+CONFIG_MMC_ARMMMCI=m
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_IO_ACCESSORS=y
+CONFIG_MMC_SDHCI_PCI=m
+CONFIG_MMC_RICOH_MMC=y
+CONFIG_MMC_SDHCI_PLTFM=m
+# CONFIG_MMC_SDHCI_CNS3XXX is not set
+CONFIG_MMC_SDHCI_ESDHC_IMX=m
+CONFIG_MMC_SDHCI_TEGRA=m
+CONFIG_MMC_SDHCI_SIRF=m
+CONFIG_MMC_SDHCI_PXAV3=m
+CONFIG_MMC_SDHCI_PXAV2=m
+# CONFIG_MMC_SDHCI_SPEAR is not set
+# CONFIG_MMC_SDHCI_BCM2835 is not set
+CONFIG_MMC_OMAP=y
+CONFIG_MMC_OMAP_HS=y
+CONFIG_MMC_MXC=m
+CONFIG_MMC_TIFM_SD=m
+CONFIG_MMC_MVSDIO=m
+CONFIG_MMC_CB710=m
+CONFIG_MMC_VIA_SDMMC=m
+CONFIG_MMC_DW=m
+# CONFIG_MMC_DW_IDMAC is not set
+CONFIG_MMC_DW_PLTFM=m
+CONFIG_MMC_DW_EXYNOS=m
+CONFIG_MMC_DW_PCI=m
+CONFIG_MMC_VUB300=m
+CONFIG_MMC_USHC=m
+CONFIG_MMC_WMT=m
+CONFIG_MMC_REALTEK_PCI=m
+CONFIG_MEMSTICK=m
+# CONFIG_MEMSTICK_DEBUG is not set
+
+#
+# MemoryStick drivers
+#
+# CONFIG_MEMSTICK_UNSAFE_RESUME is not set
+CONFIG_MSPRO_BLOCK=m
+
+#
+# MemoryStick Host Controller Drivers
+#
+CONFIG_MEMSTICK_TIFM_MS=m
+CONFIG_MEMSTICK_JMICRON_38X=m
+CONFIG_MEMSTICK_R592=m
+CONFIG_MEMSTICK_REALTEK_PCI=m
+CONFIG_LEDS_GPIO_REGISTER=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_88PM860X is not set
+CONFIG_LEDS_LM3530=m
+CONFIG_LEDS_LM3533=m
+CONFIG_LEDS_LM3642=m
+# CONFIG_LEDS_PCA9532 is not set
+CONFIG_LEDS_GPIO=y
+CONFIG_LEDS_LP3944=m
+CONFIG_LEDS_LP55XX_COMMON=m
+CONFIG_LEDS_LP5521=m
+CONFIG_LEDS_LP5523=m
+CONFIG_LEDS_LP5562=m
+# CONFIG_LEDS_LP8788 is not set
+# CONFIG_LEDS_PCA955X is not set
+CONFIG_LEDS_PCA9633=m
+# CONFIG_LEDS_WM831X_STATUS is not set
+# CONFIG_LEDS_WM8350 is not set
+# CONFIG_LEDS_DA903X is not set
+# CONFIG_LEDS_DA9052 is not set
+# CONFIG_LEDS_PWM is not set
+CONFIG_LEDS_REGULATOR=m
+# CONFIG_LEDS_BD2802 is not set
+CONFIG_LEDS_LT3593=m
+# CONFIG_LEDS_ADP5520 is not set
+# CONFIG_LEDS_RENESAS_TPU is not set
+CONFIG_LEDS_TCA6507=m
+# CONFIG_LEDS_MAX8997 is not set
+CONFIG_LEDS_LM355x=m
+CONFIG_LEDS_OT200=m
+CONFIG_LEDS_BLINKM=m
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=m
+CONFIG_LEDS_TRIGGER_ONESHOT=m
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_BACKLIGHT=m
+# CONFIG_LEDS_TRIGGER_CPU is not set
+CONFIG_LEDS_TRIGGER_GPIO=m
+CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
+
+#
+# iptables trigger is under Netfilter config (LED target)
+#
+CONFIG_LEDS_TRIGGER_TRANSIENT=m
+CONFIG_LEDS_TRIGGER_CAMERA=m
+CONFIG_LEDS_TRIGGER_NETDEV=m
+# CONFIG_ACCESSIBILITY is not set
+# CONFIG_INFINIBAND is not set
+# CONFIG_EDAC is not set
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_SYSTOHC=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+# CONFIG_RTC_DRV_88PM860X is not set
+# CONFIG_RTC_DRV_88PM80X is not set
+CONFIG_RTC_DRV_DS1307=m
+CONFIG_RTC_DRV_DS1374=m
+CONFIG_RTC_DRV_DS1672=m
+CONFIG_RTC_DRV_DS3232=m
+# CONFIG_RTC_DRV_LP8788 is not set
+CONFIG_RTC_DRV_MAX6900=m
+# CONFIG_RTC_DRV_MAX8907 is not set
+# CONFIG_RTC_DRV_MAX8925 is not set
+# CONFIG_RTC_DRV_MAX8998 is not set
+# CONFIG_RTC_DRV_MAX8997 is not set
+# CONFIG_RTC_DRV_MAX77686 is not set
+CONFIG_RTC_DRV_RS5C372=m
+CONFIG_RTC_DRV_ISL1208=m
+CONFIG_RTC_DRV_ISL12022=m
+CONFIG_RTC_DRV_X1205=m
+# CONFIG_RTC_DRV_PALMAS is not set
+CONFIG_RTC_DRV_PCF8523=m
+CONFIG_RTC_DRV_PCF8563=m
+CONFIG_RTC_DRV_PCF8583=m
+CONFIG_RTC_DRV_M41T80=m
+CONFIG_RTC_DRV_M41T80_WDT=y
+CONFIG_RTC_DRV_BQ32K=m
+# CONFIG_RTC_DRV_TWL92330 is not set
+# CONFIG_RTC_DRV_TWL4030 is not set
+# CONFIG_RTC_DRV_TPS6586X is not set
+# CONFIG_RTC_DRV_TPS65910 is not set
+# CONFIG_RTC_DRV_TPS80031 is not set
+# CONFIG_RTC_DRV_RC5T583 is not set
+# CONFIG_RTC_DRV_S35390A is not set
+CONFIG_RTC_DRV_FM3130=m
+CONFIG_RTC_DRV_RX8581=m
+CONFIG_RTC_DRV_RX8025=m
+CONFIG_RTC_DRV_EM3027=m
+CONFIG_RTC_DRV_RV3029C2=m
+
+#
+# SPI RTC drivers
+#
+
+#
+# Platform RTC drivers
+#
+CONFIG_RTC_DRV_CMOS=y
+CONFIG_RTC_DRV_DS1286=m
+CONFIG_RTC_DRV_DS1511=m
+CONFIG_RTC_DRV_DS1553=m
+CONFIG_RTC_DRV_DS1742=m
+# CONFIG_RTC_DRV_DA9052 is not set
+# CONFIG_RTC_DRV_DA9055 is not set
+CONFIG_RTC_DRV_STK17TA8=m
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_M48T35=m
+CONFIG_RTC_DRV_M48T59=m
+CONFIG_RTC_DRV_MSM6242=m
+CONFIG_RTC_DRV_BQ4802=m
+CONFIG_RTC_DRV_RP5C01=m
+CONFIG_RTC_DRV_V3020=m
+CONFIG_RTC_DRV_DS2404=m
+# CONFIG_RTC_DRV_WM831X is not set
+# CONFIG_RTC_DRV_WM8350 is not set
+CONFIG_RTC_DRV_SPEAR=y
+CONFIG_RTC_DRV_AB3100=y
+# CONFIG_RTC_DRV_AB8500 is not set
+
+#
+# on-CPU RTC drivers
+#
+CONFIG_RTC_DRV_IMXDI=m
+CONFIG_RTC_DRV_OMAP=m
+CONFIG_RTC_DRV_PL030=m
+CONFIG_RTC_DRV_PL031=m
+CONFIG_RTC_DRV_VT8500=m
+CONFIG_RTC_DRV_MV=m
+CONFIG_RTC_DRV_TEGRA=m
+CONFIG_RTC_DRV_MXC=m
+CONFIG_RTC_DRV_SNVS=m
+
+#
+# HID Sensor RTC drivers
+#
+CONFIG_RTC_DRV_HID_SENSOR_TIME=m
+CONFIG_DMADEVICES=y
+# CONFIG_DMADEVICES_DEBUG is not set
+
+#
+# DMA Devices
+#
+CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH=y
+# CONFIG_AMBA_PL08X is not set
+# CONFIG_DW_DMAC is not set
+CONFIG_MV_XOR=y
+CONFIG_MX3_IPU=y
+CONFIG_MX3_IPU_IRQS=4
+CONFIG_TEGRA20_APB_DMA=y
+# CONFIG_STE_DMA40 is not set
+CONFIG_TIMB_DMA=m
+# CONFIG_SIRF_DMA is not set
+CONFIG_PL330_DMA=y
+CONFIG_IMX_SDMA=m
+CONFIG_IMX_DMA=m
+# CONFIG_MXS_DMA is not set
+CONFIG_DMA_OMAP=y
+CONFIG_DMA_ENGINE=y
+CONFIG_DMA_VIRTUAL_CHANNELS=y
+CONFIG_DMA_OF=y
+
+#
+# DMA Clients
+#
+CONFIG_NET_DMA=y
+CONFIG_ASYNC_TX_DMA=y
+# CONFIG_DMATEST is not set
+# CONFIG_AUXDISPLAY is not set
+CONFIG_UIO=m
+# CONFIG_UIO_CIF is not set
+# CONFIG_UIO_PDRV is not set
+# CONFIG_UIO_PDRV_GENIRQ is not set
+# CONFIG_UIO_DMEM_GENIRQ is not set
+CONFIG_UIO_AEC=m
+CONFIG_UIO_SERCOS3=m
+CONFIG_UIO_PCI_GENERIC=m
+# CONFIG_UIO_NETX is not set
+# CONFIG_VIRT_DRIVERS is not set
+
+#
+# Virtio drivers
+#
+# CONFIG_VIRTIO_PCI is not set
+# CONFIG_VIRTIO_MMIO is not set
+
+#
+# Microsoft Hyper-V guest support
+#
+CONFIG_STAGING=y
+CONFIG_ET131X=m
+CONFIG_USBIP_CORE=m
+CONFIG_USBIP_VHCI_HCD=m
+CONFIG_USBIP_HOST=m
+# CONFIG_USBIP_DEBUG is not set
+# CONFIG_W35UND is not set
+# CONFIG_PRISM2_USB is not set
+CONFIG_ECHO=m
+# CONFIG_COMEDI is not set
+# CONFIG_ASUS_OLED is not set
+# CONFIG_R8187SE is not set
+# CONFIG_RTL8192U is not set
+# CONFIG_RTLLIB is not set
+# CONFIG_R8712U is not set
+# CONFIG_RTS5139 is not set
+# CONFIG_TRANZPORT is not set
+# CONFIG_IDE_PHISON is not set
+# CONFIG_LINE6_USB is not set
+# CONFIG_USB_SERIAL_QUATECH2 is not set
+# CONFIG_VT6655 is not set
+# CONFIG_VT6656 is not set
+# CONFIG_DX_SEP is not set
+
+#
+# IIO staging drivers
+#
+
+#
+# Accelerometers
+#
+
+#
+# Analog to digital converters
+#
+# CONFIG_AD7291 is not set
+# CONFIG_AD7606 is not set
+# CONFIG_AD799X is not set
+# CONFIG_SPEAR_ADC is not set
+
+#
+# Analog digital bi-direction converters
+#
+# CONFIG_ADT7316 is not set
+
+#
+# Capacitance to digital converters
+#
+# CONFIG_AD7150 is not set
+# CONFIG_AD7152 is not set
+# CONFIG_AD7746 is not set
+
+#
+# Direct Digital Synthesis
+#
+
+#
+# Digital gyroscope sensors
+#
+
+#
+# Network Analyzer, Impedance Converters
+#
+# CONFIG_AD5933 is not set
+
+#
+# Light sensors
+#
+# CONFIG_SENSORS_ISL29018 is not set
+# CONFIG_SENSORS_ISL29028 is not set
+# CONFIG_TSL2583 is not set
+# CONFIG_TSL2x7x is not set
+
+#
+# Magnetometer sensors
+#
+# CONFIG_SENSORS_HMC5843 is not set
+
+#
+# Active energy metering IC
+#
+# CONFIG_ADE7854 is not set
+
+#
+# Resolver to digital converters
+#
+
+#
+# Triggers - standalone
+#
+# CONFIG_IIO_PERIODIC_RTC_TRIGGER is not set
+# CONFIG_IIO_GPIO_TRIGGER is not set
+# CONFIG_IIO_SYSFS_TRIGGER is not set
+# CONFIG_IIO_SIMPLE_DUMMY is not set
+# CONFIG_ZSMALLOC is not set
+# CONFIG_FB_SM7XX is not set
+# CONFIG_CRYSTALHD is not set
+# CONFIG_FB_XGI is not set
+# CONFIG_USB_ENESTORAGE is not set
+# CONFIG_BCM_WIMAX is not set
+# CONFIG_FT1000 is not set
+
+#
+# Speakup console speech
+#
+# CONFIG_SPEAKUP is not set
+# CONFIG_TOUCHSCREEN_CLEARPAD_TM1217 is not set
+# CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4 is not set
+# CONFIG_MFD_NVEC is not set
+# CONFIG_STAGING_MEDIA is not set
+
+#
+# Android
+#
+# CONFIG_ANDROID is not set
+# CONFIG_USB_WPAN_HCD is not set
+# CONFIG_WIMAX_GDM72XX is not set
+# CONFIG_CSR_WIFI is not set
+CONFIG_NET_VENDOR_SILICOM=y
+CONFIG_SBYPASS=m
+CONFIG_BPCTL=m
+# CONFIG_CED1401 is not set
+# CONFIG_DRM_IMX is not set
+# CONFIG_DGRP is not set
+# CONFIG_FIREWIRE_SERIAL is not set
+CONFIG_CLKDEV_LOOKUP=y
+CONFIG_HAVE_CLK_PREPARE=y
+CONFIG_COMMON_CLK=y
+
+#
+# Common Clock Framework
+#
+# CONFIG_COMMON_CLK_DEBUG is not set
+# CONFIG_COMMON_CLK_WM831X is not set
+CONFIG_COMMON_CLK_VERSATILE=y
+# CONFIG_COMMON_CLK_MAX77686 is not set
+CONFIG_COMMON_CLK_SI5351=m
+CONFIG_CLK_TWL6040=m
+CONFIG_COMMON_CLK_AXI_CLKGEN=m
+CONFIG_MVEBU_CLK_CORE=y
+CONFIG_MVEBU_CLK_CPU=y
+CONFIG_MVEBU_CLK_GATING=y
+CONFIG_HWSPINLOCK=m
+
+#
+# Hardware Spinlock drivers
+#
+CONFIG_HWSPINLOCK_OMAP=m
+# CONFIG_HSEM_U8500 is not set
+CONFIG_CLKSRC_OF=y
+CONFIG_CLKSRC_MMIO=y
+CONFIG_DW_APB_TIMER=y
+CONFIG_DW_APB_TIMER_OF=y
+CONFIG_ARMADA_370_XP_TIMER=y
+CONFIG_SUN4I_TIMER=y
+CONFIG_VT8500_TIMER=y
+CONFIG_CADENCE_TTC_TIMER=y
+CONFIG_CLKSRC_NOMADIK_MTU=y
+CONFIG_CLKSRC_DBX500_PRCMU=y
+CONFIG_CLKSRC_DBX500_PRCMU_SCHED_CLOCK=y
+CONFIG_ARM_ARCH_TIMER=y
+CONFIG_MAILBOX=y
+CONFIG_PL320_MBOX=y
+# CONFIG_IOMMU_SUPPORT is not set
+
+#
+# Remoteproc drivers
+#
+# CONFIG_STE_MODEM_RPROC is not set
+
+#
+# Rpmsg drivers
+#
+# CONFIG_PM_DEVFREQ is not set
+# CONFIG_EXTCON is not set
+CONFIG_MEMORY=y
+CONFIG_TI_EMIF=m
+CONFIG_TEGRA20_MC=y
+CONFIG_TEGRA30_MC=y
+CONFIG_IIO=m
+CONFIG_IIO_BUFFER=y
+CONFIG_IIO_BUFFER_CB=y
+CONFIG_IIO_KFIFO_BUF=m
+CONFIG_IIO_TRIGGER=y
+CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
+
+#
+# Accelerometers
+#
+# CONFIG_HID_SENSOR_ACCEL_3D is not set
+# CONFIG_IIO_ST_ACCEL_3AXIS is not set
+
+#
+# Analog to digital converters
+#
+# CONFIG_EXYNOS_ADC is not set
+# CONFIG_LP8788_ADC is not set
+# CONFIG_MAX1363 is not set
+# CONFIG_TI_ADC081C is not set
+# CONFIG_VIPERBOARD_ADC is not set
+
+#
+# Amplifiers
+#
+
+#
+# Hid Sensor IIO Common
+#
+CONFIG_HID_SENSOR_IIO_COMMON=m
+CONFIG_HID_SENSOR_IIO_TRIGGER=m
+# CONFIG_HID_SENSOR_ENUM_BASE_QUIRKS is not set
+
+#
+# Digital to analog converters
+#
+# CONFIG_AD5064 is not set
+# CONFIG_AD5380 is not set
+# CONFIG_AD5446 is not set
+# CONFIG_MAX517 is not set
+# CONFIG_MCP4725 is not set
+
+#
+# Frequency Synthesizers DDS/PLL
+#
+
+#
+# Clock Generator/Distribution
+#
+
+#
+# Phase-Locked Loop (PLL) frequency synthesizers
+#
+
+#
+# Digital gyroscope sensors
+#
+# CONFIG_HID_SENSOR_GYRO_3D is not set
+# CONFIG_IIO_ST_GYRO_3AXIS is not set
+# CONFIG_ITG3200 is not set
+
+#
+# Inertial measurement units
+#
+# CONFIG_INV_MPU6050_IIO is not set
+
+#
+# Light sensors
+#
+# CONFIG_ADJD_S311 is not set
+# CONFIG_SENSORS_LM3533 is not set
+# CONFIG_SENSORS_TSL2563 is not set
+# CONFIG_VCNL4000 is not set
+# CONFIG_HID_SENSOR_ALS is not set
+
+#
+# Magnetometer sensors
+#
+# CONFIG_AK8975 is not set
+# CONFIG_HID_SENSOR_MAGNETOMETER_3D is not set
+# CONFIG_IIO_ST_MAGN_3AXIS is not set
+# CONFIG_VME_BUS is not set
+CONFIG_PWM=y
+# CONFIG_PWM_AB8500 is not set
+# CONFIG_PWM_IMX is not set
+# CONFIG_PWM_SPEAR is not set
+# CONFIG_PWM_TEGRA is not set
+# CONFIG_PWM_TIECAP is not set
+# CONFIG_PWM_TIEHRPWM is not set
+# CONFIG_PWM_TWL is not set
+# CONFIG_PWM_TWL_LED is not set
+# CONFIG_PWM_VT8500 is not set
+CONFIG_IRQCHIP=y
+CONFIG_ARM_GIC=y
+CONFIG_ARM_VIC=y
+CONFIG_ARM_VIC_NR=2
+# CONFIG_IPACK_BUS is not set
+CONFIG_ARCH_HAS_RESET_CONTROLLER=y
+# CONFIG_RESET_CONTROLLER is not set
+
+#
+# File systems
+#
+CONFIG_DCACHE_WORD_ACCESS=y
+# CONFIG_EXT2_FS is not set
+# CONFIG_EXT3_FS is not set
+CONFIG_EXT4_FS=y
+CONFIG_EXT4_USE_FOR_EXT23=y
+CONFIG_EXT4_FS_POSIX_ACL=y
+CONFIG_EXT4_FS_SECURITY=y
+# CONFIG_EXT4_DEBUG is not set
+CONFIG_JBD2=y
+# CONFIG_JBD2_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+CONFIG_REISERFS_PROC_INFO=y
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
+# CONFIG_JFS_FS is not set
+CONFIG_XFS_FS=m
+CONFIG_XFS_QUOTA=y
+CONFIG_XFS_POSIX_ACL=y
+CONFIG_XFS_RT=y
+# CONFIG_XFS_WARN is not set
+# CONFIG_XFS_DEBUG is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+CONFIG_BTRFS_FS=m
+CONFIG_BTRFS_FS_POSIX_ACL=y
+# CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set
+# CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set
+# CONFIG_BTRFS_DEBUG is not set
+# CONFIG_NILFS2_FS is not set
+CONFIG_FS_POSIX_ACL=y
+CONFIG_EXPORTFS=y
+CONFIG_FILE_LOCKING=y
+CONFIG_FSNOTIFY=y
+CONFIG_DNOTIFY=y
+CONFIG_INOTIFY_USER=y
+CONFIG_FANOTIFY=y
+CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
+CONFIG_QUOTA=y
+CONFIG_QUOTA_NETLINK_INTERFACE=y
+# CONFIG_PRINT_QUOTA_WARNING is not set
+# CONFIG_QUOTA_DEBUG is not set
+CONFIG_QUOTA_TREE=y
+# CONFIG_QFMT_V1 is not set
+CONFIG_QFMT_V2=y
+CONFIG_QUOTACTL=y
+CONFIG_AUTOFS4_FS=y
+CONFIG_FUSE_FS=m
+CONFIG_CUSE=m
+CONFIG_GENERIC_ACL=y
+
+#
+# Caches
+#
+CONFIG_FSCACHE=m
+CONFIG_FSCACHE_STATS=y
+# CONFIG_FSCACHE_HISTOGRAM is not set
+# CONFIG_FSCACHE_DEBUG is not set
+# CONFIG_FSCACHE_OBJECT_LIST is not set
+CONFIG_CACHEFILES=m
+# CONFIG_CACHEFILES_DEBUG is not set
+# CONFIG_CACHEFILES_HISTOGRAM is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=y
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+CONFIG_TMPFS_POSIX_ACL=y
+CONFIG_TMPFS_XATTR=y
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_CONFIGFS_FS=m
+CONFIG_MISC_FILESYSTEMS=y
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_ECRYPT_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS2_FS is not set
+# CONFIG_LOGFS is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_SQUASHFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_OMFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX6FS_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_PSTORE=y
+# CONFIG_PSTORE_CONSOLE is not set
+# CONFIG_PSTORE_FTRACE is not set
+# CONFIG_PSTORE_RAM is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+# CONFIG_EXOFS_FS is not set
+# CONFIG_F2FS_FS is not set
+CONFIG_ORE=m
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=m
+CONFIG_NFS_V2=m
+CONFIG_NFS_V3=m
+CONFIG_NFS_V3_ACL=y
+CONFIG_NFS_V4=m
+# CONFIG_NFS_SWAP is not set
+CONFIG_NFS_V4_1=y
+CONFIG_PNFS_FILE_LAYOUT=m
+CONFIG_PNFS_BLOCK=m
+CONFIG_PNFS_OBJLAYOUT=m
+CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="ipfire.org"
+CONFIG_NFS_FSCACHE=y
+# CONFIG_NFS_USE_LEGACY_DNS is not set
+CONFIG_NFS_USE_KERNEL_DNS=y
+CONFIG_NFSD=m
+CONFIG_NFSD_V2_ACL=y
+CONFIG_NFSD_V3=y
+CONFIG_NFSD_V3_ACL=y
+CONFIG_NFSD_V4=y
+# CONFIG_NFSD_FAULT_INJECTION is not set
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_ACL_SUPPORT=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_GSS=m
+CONFIG_SUNRPC_BACKCHANNEL=y
+CONFIG_RPCSEC_GSS_KRB5=m
+# CONFIG_SUNRPC_DEBUG is not set
+# CONFIG_CEPH_FS is not set
+CONFIG_CIFS=m
+CONFIG_CIFS_STATS=y
+# CONFIG_CIFS_STATS2 is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+# CONFIG_CIFS_UPCALL is not set
+CONFIG_CIFS_XATTR=y
+CONFIG_CIFS_POSIX=y
+CONFIG_CIFS_ACL=y
+# CONFIG_CIFS_DEBUG is not set
+CONFIG_CIFS_DFS_UPCALL=y
+CONFIG_CIFS_SMB2=y
+CONFIG_CIFS_FSCACHE=y
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="utf-8"
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=y
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_MAC_ROMAN=m
+CONFIG_NLS_MAC_CELTIC=m
+CONFIG_NLS_MAC_CENTEURO=m
+CONFIG_NLS_MAC_CROATIAN=m
+CONFIG_NLS_MAC_CYRILLIC=m
+CONFIG_NLS_MAC_GAELIC=m
+CONFIG_NLS_MAC_GREEK=m
+CONFIG_NLS_MAC_ICELAND=m
+CONFIG_NLS_MAC_INUIT=m
+CONFIG_NLS_MAC_ROMANIAN=m
+CONFIG_NLS_MAC_TURKISH=m
+CONFIG_NLS_UTF8=m
+CONFIG_DLM=m
+# CONFIG_DLM_DEBUG is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
+# CONFIG_ENABLE_WARN_DEPRECATED is not set
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_FRAME_WARN=2048
+# CONFIG_MAGIC_SYSRQ is not set
+CONFIG_STRIP_ASM_SYMS=y
+# CONFIG_READABLE_ASM is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+CONFIG_DEBUG_FS=y
+CONFIG_HEADERS_CHECK=y
+# CONFIG_DEBUG_SECTION_MISMATCH is not set
+CONFIG_DEBUG_KERNEL=y
+CONFIG_DEBUG_SHIRQ=y
+CONFIG_LOCKUP_DETECTOR=y
+# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
+# CONFIG_PANIC_ON_OOPS is not set
+CONFIG_PANIC_ON_OOPS_VALUE=0
+# CONFIG_DETECT_HUNG_TASK is not set
+CONFIG_SCHED_DEBUG=y
+CONFIG_SCHEDSTATS=y
+CONFIG_TIMER_STATS=y
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_SLUB_DEBUG_ON is not set
+# CONFIG_SLUB_STATS is not set
+CONFIG_HAVE_DEBUG_KMEMLEAK=y
+# CONFIG_DEBUG_KMEMLEAK is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_ATOMIC_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+CONFIG_STACKTRACE=y
+# CONFIG_DEBUG_STACK_USAGE is not set
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_HIGHMEM is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_WRITECOUNT is not set
+CONFIG_DEBUG_MEMORY_INIT=y
+CONFIG_DEBUG_LIST=y
+# CONFIG_TEST_LIST_SORT is not set
+# CONFIG_DEBUG_SG is not set
+# CONFIG_DEBUG_NOTIFIERS is not set
+# CONFIG_DEBUG_CREDENTIALS is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_BOOT_PRINTK_DELAY is not set
+
+#
+# RCU Debugging
+#
+# CONFIG_SPARSE_RCU_POINTER is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+CONFIG_RCU_CPU_STALL_TIMEOUT=60
+# CONFIG_RCU_CPU_STALL_INFO is not set
+# CONFIG_RCU_TRACE is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
+# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
+# CONFIG_DEBUG_PER_CPU_MAPS is not set
+# CONFIG_LKDTM is not set
+# CONFIG_NOTIFIER_ERROR_INJECTION is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_DEBUG_PAGEALLOC is not set
+CONFIG_NOP_TRACER=y
+CONFIG_HAVE_FUNCTION_TRACER=y
+CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
+CONFIG_HAVE_DYNAMIC_FTRACE=y
+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
+CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
+CONFIG_HAVE_C_RECORDMCOUNT=y
+CONFIG_TRACER_MAX_TRACE=y
+CONFIG_TRACE_CLOCK=y
+CONFIG_RING_BUFFER=y
+CONFIG_EVENT_TRACING=y
+CONFIG_CONTEXT_SWITCH_TRACER=y
+CONFIG_TRACING=y
+CONFIG_GENERIC_TRACER=y
+CONFIG_TRACING_SUPPORT=y
+CONFIG_FTRACE=y
+CONFIG_FUNCTION_TRACER=y
+CONFIG_FUNCTION_GRAPH_TRACER=y
+# CONFIG_IRQSOFF_TRACER is not set
+CONFIG_SCHED_TRACER=y
+# CONFIG_FTRACE_SYSCALLS is not set
+CONFIG_TRACER_SNAPSHOT=y
+# CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP is not set
+CONFIG_BRANCH_PROFILE_NONE=y
+# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
+# CONFIG_PROFILE_ALL_BRANCHES is not set
+CONFIG_STACK_TRACER=y
+CONFIG_BLK_DEV_IO_TRACE=y
+# CONFIG_PROBE_EVENTS is not set
+CONFIG_DYNAMIC_FTRACE=y
+CONFIG_FUNCTION_PROFILER=y
+CONFIG_FTRACE_MCOUNT_RECORD=y
+# CONFIG_FTRACE_STARTUP_TEST is not set
+CONFIG_RING_BUFFER_BENCHMARK=m
+# CONFIG_RING_BUFFER_STARTUP_TEST is not set
+CONFIG_RBTREE_TEST=m
+# CONFIG_INTERVAL_TREE_TEST is not set
+# CONFIG_BUILD_DOCSRC is not set
+CONFIG_DYNAMIC_DEBUG=y
+# CONFIG_DMA_API_DEBUG is not set
+# CONFIG_ATOMIC64_SELFTEST is not set
+CONFIG_ASYNC_RAID6_TEST=m
+# CONFIG_SAMPLES is not set
+CONFIG_HAVE_ARCH_KGDB=y
+# CONFIG_KGDB is not set
+# CONFIG_TEST_STRING_HELPERS is not set
+# CONFIG_TEST_KSTRTOX is not set
+CONFIG_STRICT_DEVMEM=y
+CONFIG_ARM_UNWIND=y
+CONFIG_OLD_MCOUNT=y
+# CONFIG_DEBUG_USER is not set
+CONFIG_DEBUG_LL=y
+# CONFIG_DEBUG_BCM2835 is not set
+# CONFIG_DEBUG_CNS3XXX is not set
+CONFIG_DEBUG_ZYNQ_UART0=y
+# CONFIG_DEBUG_ZYNQ_UART1 is not set
+# CONFIG_DEBUG_HIGHBANK_UART is not set
+# CONFIG_DEBUG_IMX31_UART is not set
+# CONFIG_DEBUG_IMX35_UART is not set
+# CONFIG_DEBUG_IMX51_UART is not set
+# CONFIG_DEBUG_IMX53_UART is not set
+# CONFIG_DEBUG_IMX6Q_UART is not set
+# CONFIG_DEBUG_MVEBU_UART is not set
+# CONFIG_DEBUG_OMAP2PLUS_UART is not set
+# CONFIG_DEBUG_PICOXCELL_UART is not set
+# CONFIG_DEBUG_SOCFPGA_UART is not set
+# CONFIG_DEBUG_SUNXI_UART0 is not set
+# CONFIG_DEBUG_SUNXI_UART1 is not set
+# CONFIG_DEBUG_TEGRA_UART is not set
+# CONFIG_DEBUG_SIRFPRIMA2_UART1 is not set
+# CONFIG_DEBUG_SIRFMARCO_UART1 is not set
+# CONFIG_DEBUG_UX500_UART is not set
+# CONFIG_DEBUG_VEXPRESS_UART0_DETECT is not set
+# CONFIG_DEBUG_VEXPRESS_UART0_CA9 is not set
+# CONFIG_DEBUG_VEXPRESS_UART0_RS1 is not set
+# CONFIG_DEBUG_VT8500_UART0 is not set
+# CONFIG_DEBUG_ICEDCC is not set
+# CONFIG_DEBUG_SEMIHOSTING is not set
+CONFIG_DEBUG_IMX_UART_PORT=1
+CONFIG_DEBUG_LL_INCLUDE="debug/zynq.S"
+CONFIG_DEBUG_UNCOMPRESS=y
+CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
+CONFIG_EARLY_PRINTK=y
+CONFIG_OC_ETM=y
+# CONFIG_PID_IN_CONTEXTIDR is not set
+
+#
+# Security options
+#
+
+#
+# Grsecurity
+#
+CONFIG_PAX_USERCOPY_SLABS=y
+CONFIG_GRKERNSEC=y
+# CONFIG_GRKERNSEC_CONFIG_AUTO is not set
+CONFIG_GRKERNSEC_CONFIG_CUSTOM=y
+
+#
+# Customize Configuration
+#
+
+#
+# PaX
+#
+CONFIG_PAX=y
+
+#
+# PaX Control
+#
+# CONFIG_PAX_SOFTMODE is not set
+CONFIG_PAX_EI_PAX=y
+CONFIG_PAX_PT_PAX_FLAGS=y
+# CONFIG_PAX_XATTR_PAX_FLAGS is not set
+# CONFIG_PAX_NO_ACL_FLAGS is not set
+CONFIG_PAX_HAVE_ACL_FLAGS=y
+# CONFIG_PAX_HOOK_ACL_FLAGS is not set
+
+#
+# Non-executable pages
+#
+CONFIG_PAX_NOEXEC=y
+CONFIG_PAX_PAGEEXEC=y
+CONFIG_PAX_MPROTECT=y
+# CONFIG_PAX_MPROTECT_COMPAT is not set
+CONFIG_PAX_ELFRELOCS=y
+CONFIG_PAX_KERNEXEC=y
+CONFIG_PAX_KERNEXEC_PLUGIN_METHOD=""
+
+#
+# Address Space Layout Randomization
+#
+CONFIG_PAX_ASLR=y
+CONFIG_PAX_RANDUSTACK=y
+CONFIG_PAX_RANDMMAP=y
+
+#
+# Miscellaneous hardening features
+#
+CONFIG_PAX_MEMORY_SANITIZE=y
+CONFIG_PAX_MEMORY_STRUCTLEAK=y
+CONFIG_PAX_MEMORY_UDEREF=y
+CONFIG_PAX_REFCOUNT=y
+CONFIG_PAX_CONSTIFY_PLUGIN=y
+CONFIG_PAX_USERCOPY=y
+# CONFIG_PAX_LATENT_ENTROPY is not set
+
+#
+# Memory Protections
+#
+# CONFIG_GRKERNSEC_KMEM is not set
+CONFIG_GRKERNSEC_JIT_HARDEN=y
+# CONFIG_GRKERNSEC_PERF_HARDEN is not set
+CONFIG_GRKERNSEC_RAND_THREADSTACK=y
+CONFIG_GRKERNSEC_PROC_MEMMAP=y
+CONFIG_GRKERNSEC_BRUTE=y
+CONFIG_GRKERNSEC_MODHARDEN=y
+CONFIG_GRKERNSEC_HIDESYM=y
+CONFIG_GRKERNSEC_KERN_LOCKOUT=y
+
+#
+# Role Based Access Control Options
+#
+CONFIG_GRKERNSEC_NO_RBAC=y
+# CONFIG_GRKERNSEC_ACL_HIDEKERN is not set
+CONFIG_GRKERNSEC_ACL_MAXTRIES=3
+CONFIG_GRKERNSEC_ACL_TIMEOUT=30
+
+#
+# Filesystem Protections
+#
+# CONFIG_GRKERNSEC_PROC is not set
+CONFIG_GRKERNSEC_LINK=y
+# CONFIG_GRKERNSEC_SYMLINKOWN is not set
+CONFIG_GRKERNSEC_FIFO=y
+# CONFIG_GRKERNSEC_SYSFS_RESTRICT is not set
+# CONFIG_GRKERNSEC_ROFS is not set
+CONFIG_GRKERNSEC_DEVICE_SIDECHANNEL=y
+CONFIG_GRKERNSEC_CHROOT=y
+# CONFIG_GRKERNSEC_CHROOT_MOUNT is not set
+CONFIG_GRKERNSEC_CHROOT_DOUBLE=y
+CONFIG_GRKERNSEC_CHROOT_PIVOT=y
+CONFIG_GRKERNSEC_CHROOT_CHDIR=y
+# CONFIG_GRKERNSEC_CHROOT_CHMOD is not set
+CONFIG_GRKERNSEC_CHROOT_FCHDIR=y
+# CONFIG_GRKERNSEC_CHROOT_MKNOD is not set
+CONFIG_GRKERNSEC_CHROOT_SHMAT=y
+CONFIG_GRKERNSEC_CHROOT_UNIX=y
+CONFIG_GRKERNSEC_CHROOT_FINDTASK=y
+CONFIG_GRKERNSEC_CHROOT_NICE=y
+CONFIG_GRKERNSEC_CHROOT_SYSCTL=y
+# CONFIG_GRKERNSEC_CHROOT_CAPS is not set
+CONFIG_GRKERNSEC_CHROOT_INITRD=y
+
+#
+# Kernel Auditing
+#
+# CONFIG_GRKERNSEC_AUDIT_GROUP is not set
+# CONFIG_GRKERNSEC_EXECLOG is not set
+CONFIG_GRKERNSEC_RESLOG=y
+# CONFIG_GRKERNSEC_CHROOT_EXECLOG is not set
+# CONFIG_GRKERNSEC_AUDIT_PTRACE is not set
+# CONFIG_GRKERNSEC_AUDIT_CHDIR is not set
+# CONFIG_GRKERNSEC_AUDIT_MOUNT is not set
+CONFIG_GRKERNSEC_SIGNAL=y
+CONFIG_GRKERNSEC_FORKFAIL=y
+# CONFIG_GRKERNSEC_TIME is not set
+CONFIG_GRKERNSEC_PROC_IPADDR=y
+CONFIG_GRKERNSEC_RWXMAP_LOG=y
+
+#
+# Executable Protections
+#
+CONFIG_GRKERNSEC_DMESG=y
+CONFIG_GRKERNSEC_HARDEN_PTRACE=y
+CONFIG_GRKERNSEC_PTRACE_READEXEC=y
+# CONFIG_GRKERNSEC_SETXID is not set
+# CONFIG_GRKERNSEC_TPE is not set
+
+#
+# Network Protections
+#
+CONFIG_GRKERNSEC_RANDNET=y
+CONFIG_GRKERNSEC_BLACKHOLE=y
+CONFIG_GRKERNSEC_NO_SIMULT_CONNECT=y
+# CONFIG_GRKERNSEC_SOCKET is not set
+
+#
+# Physical Protections
+#
+# CONFIG_GRKERNSEC_DENYUSB is not set
+
+#
+# Sysctl Support
+#
+# CONFIG_GRKERNSEC_SYSCTL is not set
+
+#
+# Logging Options
+#
+CONFIG_GRKERNSEC_FLOODTIME=10
+CONFIG_GRKERNSEC_FLOODBURST=6
+CONFIG_KEYS=y
+# CONFIG_ENCRYPTED_KEYS is not set
+CONFIG_KEYS_DEBUG_PROC_KEYS=y
+CONFIG_SECURITY_DMESG_RESTRICT=y
+CONFIG_SECURITY=y
+CONFIG_SECURITYFS=y
+CONFIG_SECURITY_NETWORK=y
+CONFIG_SECURITY_NETWORK_XFRM=y
+# CONFIG_SECURITY_PATH is not set
+# CONFIG_SECURITY_SELINUX is not set
+# CONFIG_SECURITY_SMACK is not set
+# CONFIG_SECURITY_TOMOYO is not set
+# CONFIG_SECURITY_APPARMOR is not set
+# CONFIG_IMA is not set
+# CONFIG_EVM is not set
+CONFIG_DEFAULT_SECURITY_DAC=y
+CONFIG_DEFAULT_SECURITY=""
+CONFIG_XOR_BLOCKS=m
+CONFIG_ASYNC_CORE=m
+CONFIG_ASYNC_MEMCPY=m
+CONFIG_ASYNC_XOR=m
+CONFIG_ASYNC_PQ=m
+CONFIG_ASYNC_RAID6_RECOV=m
+CONFIG_CRYPTO=y
+
+#
+# Crypto core or helper
+#
+CONFIG_CRYPTO_FIPS=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_ALGAPI2=y
+CONFIG_CRYPTO_AEAD=y
+CONFIG_CRYPTO_AEAD2=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_BLKCIPHER2=y
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_HASH2=y
+CONFIG_CRYPTO_RNG=y
+CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_PCOMP=m
+CONFIG_CRYPTO_PCOMP2=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_MANAGER2=y
+# CONFIG_CRYPTO_USER is not set
+# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_PCRYPT=m
+CONFIG_CRYPTO_WORKQUEUE=y
+CONFIG_CRYPTO_CRYPTD=y
+CONFIG_CRYPTO_AUTHENC=m
+CONFIG_CRYPTO_TEST=m
+
+#
+# Authenticated Encryption with Associated Data
+#
+CONFIG_CRYPTO_CCM=m
+CONFIG_CRYPTO_GCM=m
+CONFIG_CRYPTO_SEQIV=y
+
+#
+# Block modes
+#
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_CTR=y
+CONFIG_CRYPTO_CTS=m
+CONFIG_CRYPTO_ECB=y
+CONFIG_CRYPTO_LRW=m
+CONFIG_CRYPTO_PCBC=m
+CONFIG_CRYPTO_XTS=m
+
+#
+# Hash modes
+#
+CONFIG_CRYPTO_CMAC=m
+CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_VMAC=m
+
+#
+# Digest
+#
+CONFIG_CRYPTO_CRC32C=y
+CONFIG_CRYPTO_CRC32=y
+CONFIG_CRYPTO_GHASH=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_RMD128=m
+CONFIG_CRYPTO_RMD160=m
+CONFIG_CRYPTO_RMD256=m
+CONFIG_CRYPTO_RMD320=m
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA1_ARM=m
+CONFIG_CRYPTO_SHA256=y
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_WP512=m
+
+#
+# Ciphers
+#
+CONFIG_CRYPTO_AES=y
+CONFIG_CRYPTO_AES_ARM=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_BLOWFISH_COMMON=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_CAST_COMMON=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_DES=m
+CONFIG_CRYPTO_FCRYPT=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_SALSA20=m
+CONFIG_CRYPTO_SEED=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+
+#
+# Compression
+#
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_ZLIB=m
+CONFIG_CRYPTO_LZO=m
+
+#
+# Random Number Generation
+#
+CONFIG_CRYPTO_ANSI_CPRNG=m
+CONFIG_CRYPTO_USER_API=y
+CONFIG_CRYPTO_USER_API_HASH=y
+CONFIG_CRYPTO_USER_API_SKCIPHER=y
+CONFIG_CRYPTO_HW=y
+CONFIG_CRYPTO_DEV_MV_CESA=m
+CONFIG_CRYPTO_DEV_HIFN_795X=m
+CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y
+CONFIG_CRYPTO_DEV_OMAP_SHAM=m
+CONFIG_CRYPTO_DEV_OMAP_AES=m
+# CONFIG_CRYPTO_DEV_PICOXCELL is not set
+CONFIG_CRYPTO_DEV_TEGRA_AES=m
+CONFIG_CRYPTO_DEV_UX500=m
+# CONFIG_CRYPTO_DEV_UX500_CRYP is not set
+# CONFIG_CRYPTO_DEV_UX500_HASH is not set
+CONFIG_ASYMMETRIC_KEY_TYPE=m
+CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=m
+CONFIG_PUBLIC_KEY_ALGO_RSA=m
+CONFIG_X509_CERTIFICATE_PARSER=m
+CONFIG_BINARY_PRINTF=y
+
+#
+# Library routines
+#
+CONFIG_RAID6_PQ=m
+CONFIG_BITREVERSE=y
+CONFIG_RATIONAL=y
+CONFIG_GENERIC_STRNCPY_FROM_USER=y
+CONFIG_GENERIC_STRNLEN_USER=y
+CONFIG_GENERIC_PCI_IOMAP=y
+CONFIG_GENERIC_IO=y
+CONFIG_STMP_DEVICE=y
+CONFIG_CRC_CCITT=y
+CONFIG_CRC16=y
+CONFIG_CRC_T10DIF=y
+CONFIG_CRC_ITU_T=m
+CONFIG_CRC32=y
+# CONFIG_CRC32_SELFTEST is not set
+CONFIG_CRC32_SLICEBY8=y
+# CONFIG_CRC32_SLICEBY4 is not set
+# CONFIG_CRC32_SARWATE is not set
+# CONFIG_CRC32_BIT is not set
+CONFIG_CRC7=m
+CONFIG_LIBCRC32C=m
+CONFIG_CRC8=m
+CONFIG_AUDIT_GENERIC=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=m
+CONFIG_LZO_COMPRESS=y
+CONFIG_LZO_DECOMPRESS=y
+CONFIG_XZ_DEC=y
+CONFIG_XZ_DEC_X86=y
+CONFIG_XZ_DEC_POWERPC=y
+CONFIG_XZ_DEC_IA64=y
+CONFIG_XZ_DEC_ARM=y
+CONFIG_XZ_DEC_ARMTHUMB=y
+CONFIG_XZ_DEC_SPARC=y
+CONFIG_XZ_DEC_BCJ=y
+# CONFIG_XZ_DEC_TEST is not set
+CONFIG_DECOMPRESS_GZIP=y
+CONFIG_DECOMPRESS_BZIP2=y
+CONFIG_DECOMPRESS_LZMA=y
+CONFIG_DECOMPRESS_XZ=y
+CONFIG_DECOMPRESS_LZO=y
+CONFIG_GENERIC_ALLOCATOR=y
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_DMA=y
+CONFIG_CHECK_SIGNATURE=y
+CONFIG_CPU_RMAP=y
+CONFIG_DQL=y
+CONFIG_NLATTR=y
+CONFIG_GENERIC_ATOMIC64=y
+CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y
+CONFIG_AVERAGE=y
+CONFIG_CLZ_TAB=y
+CONFIG_CORDIC=m
+CONFIG_DDR=y
+CONFIG_MPILIB=m
+CONFIG_OID_REGISTRY=m
+CONFIG_VIRTUALIZATION=y
+CONFIG_KVM_ARM_MAX_VCPUS=0
+
+#
+# Virtio drivers
+#
diff --git a/config/kernel/kernel.config.armv5tel-ipfire-omap b/config/kernel/kernel.config.armv5tel-ipfire-omap
deleted file mode 100644 (file)
index e2adae7..0000000
+++ /dev/null
@@ -1,3582 +0,0 @@
-#
-# Automatically generated file; DO NOT EDIT.
-# Linux/arm 3.2.48-ipfire-omap Kernel Configuration
-#
-CONFIG_ARM=y
-CONFIG_HAVE_PWM=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_HAVE_SCHED_CLOCK=y
-CONFIG_GENERIC_GPIO=y
-# CONFIG_ARCH_USES_GETTIMEOFFSET is not set
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
-CONFIG_KTIME_SCALAR=y
-CONFIG_HAVE_PROC_CPU=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_ARCH_HAS_CPUFREQ=y
-CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_NEED_DMA_MAP_STATE=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_ARM_PATCH_PHYS_VIRT=y
-CONFIG_GENERIC_BUG=y
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-CONFIG_HAVE_IRQ_WORK=y
-CONFIG_IRQ_WORK=y
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_CROSS_COMPILE=""
-CONFIG_LOCALVERSION=""
-# CONFIG_LOCALVERSION_AUTO is not set
-CONFIG_HAVE_KERNEL_GZIP=y
-CONFIG_HAVE_KERNEL_LZMA=y
-CONFIG_HAVE_KERNEL_LZO=y
-# CONFIG_KERNEL_GZIP is not set
-CONFIG_KERNEL_LZMA=y
-# CONFIG_KERNEL_LZO is not set
-CONFIG_DEFAULT_HOSTNAME="(none)"
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-CONFIG_POSIX_MQUEUE=y
-CONFIG_POSIX_MQUEUE_SYSCTL=y
-CONFIG_BSD_PROCESS_ACCT=y
-CONFIG_BSD_PROCESS_ACCT_V3=y
-# CONFIG_FHANDLE is not set
-# CONFIG_TASKSTATS is not set
-CONFIG_AUDIT=y
-CONFIG_HAVE_GENERIC_HARDIRQS=y
-
-#
-# IRQ subsystem
-#
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_HAVE_SPARSE_IRQ=y
-CONFIG_GENERIC_IRQ_SHOW=y
-CONFIG_GENERIC_IRQ_CHIP=y
-CONFIG_IRQ_DOMAIN=y
-CONFIG_SPARSE_IRQ=y
-
-#
-# RCU Subsystem
-#
-CONFIG_TREE_RCU=y
-# CONFIG_PREEMPT_RCU is not set
-# CONFIG_RCU_TRACE is not set
-CONFIG_RCU_FANOUT=32
-# CONFIG_RCU_FANOUT_EXACT is not set
-CONFIG_RCU_FAST_NO_HZ=y
-# CONFIG_TREE_RCU_TRACE is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_LOG_BUF_SHIFT=19
-# CONFIG_CGROUPS is not set
-CONFIG_NAMESPACES=y
-CONFIG_UTS_NS=y
-CONFIG_IPC_NS=y
-# CONFIG_USER_NS is not set
-# CONFIG_PID_NS is not set
-# CONFIG_NET_NS is not set
-# CONFIG_SCHED_AUTOGROUP is not set
-CONFIG_SYSFS_DEPRECATED=y
-CONFIG_SYSFS_DEPRECATED_V2=y
-# CONFIG_RELAY is not set
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_RD_GZIP=y
-CONFIG_RD_BZIP2=y
-CONFIG_RD_LZMA=y
-CONFIG_RD_XZ=y
-CONFIG_RD_LZO=y
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-CONFIG_SYSCTL=y
-CONFIG_ANON_INODES=y
-CONFIG_EXPERT=y
-CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_TIMERFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_AIO=y
-# CONFIG_EMBEDDED is not set
-CONFIG_HAVE_PERF_EVENTS=y
-CONFIG_PERF_USE_VMALLOC=y
-
-#
-# Kernel Performance Events And Counters
-#
-CONFIG_PERF_EVENTS=y
-# CONFIG_PERF_COUNTERS is not set
-# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_SLUB_DEBUG=y
-# CONFIG_COMPAT_BRK is not set
-# CONFIG_SLAB is not set
-CONFIG_SLUB=y
-# CONFIG_SLOB is not set
-# CONFIG_PROFILING is not set
-CONFIG_HAVE_OPROFILE=y
-# CONFIG_KPROBES is not set
-CONFIG_HAVE_KPROBES=y
-CONFIG_HAVE_KRETPROBES=y
-CONFIG_USE_GENERIC_SMP_HELPERS=y
-CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
-CONFIG_HAVE_CLK=y
-CONFIG_HAVE_DMA_API_DEBUG=y
-CONFIG_HAVE_HW_BREAKPOINT=y
-
-#
-# GCOV-based kernel profiling
-#
-CONFIG_HAVE_GENERIC_DMA_COHERENT=y
-CONFIG_SLABINFO=y
-CONFIG_RT_MUTEXES=y
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-# CONFIG_MODULE_FORCE_LOAD is not set
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_STOP_MACHINE=y
-CONFIG_BLOCK=y
-CONFIG_LBDAF=y
-CONFIG_BLK_DEV_BSG=y
-CONFIG_BLK_DEV_BSGLIB=y
-# CONFIG_BLK_DEV_INTEGRITY is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
-# CONFIG_DEFAULT_DEADLINE is not set
-CONFIG_DEFAULT_CFQ=y
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="cfq"
-CONFIG_PADATA=y
-# CONFIG_INLINE_SPIN_TRYLOCK is not set
-# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
-# CONFIG_INLINE_SPIN_LOCK is not set
-# CONFIG_INLINE_SPIN_LOCK_BH is not set
-# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
-# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
-CONFIG_INLINE_SPIN_UNLOCK=y
-# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
-CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
-# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
-# CONFIG_INLINE_READ_TRYLOCK is not set
-# CONFIG_INLINE_READ_LOCK is not set
-# CONFIG_INLINE_READ_LOCK_BH is not set
-# CONFIG_INLINE_READ_LOCK_IRQ is not set
-# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
-CONFIG_INLINE_READ_UNLOCK=y
-# CONFIG_INLINE_READ_UNLOCK_BH is not set
-CONFIG_INLINE_READ_UNLOCK_IRQ=y
-# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
-# CONFIG_INLINE_WRITE_TRYLOCK is not set
-# CONFIG_INLINE_WRITE_LOCK is not set
-# CONFIG_INLINE_WRITE_LOCK_BH is not set
-# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
-# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
-CONFIG_INLINE_WRITE_UNLOCK=y
-# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
-CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
-# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
-CONFIG_MUTEX_SPIN_ON_OWNER=y
-CONFIG_FREEZER=y
-
-#
-# System Type
-#
-CONFIG_MMU=y
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_VEXPRESS is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_BCMRING is not set
-# CONFIG_ARCH_HIGHBANK is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CNS3XXX is not set
-# CONFIG_ARCH_GEMINI is not set
-# CONFIG_ARCH_PRIMA2 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_MXC is not set
-# CONFIG_ARCH_MXS is not set
-# CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IOP13XX is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_DOVE is not set
-# CONFIG_ARCH_KIRKWOOD is not set
-# CONFIG_ARCH_LPC32XX is not set
-# CONFIG_ARCH_MV78XX0 is not set
-# CONFIG_ARCH_ORION5X is not set
-# CONFIG_ARCH_MMP is not set
-# CONFIG_ARCH_KS8695 is not set
-# CONFIG_ARCH_W90X900 is not set
-# CONFIG_ARCH_TEGRA is not set
-# CONFIG_ARCH_PICOXCELL is not set
-# CONFIG_ARCH_PNX4008 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_MSM is not set
-# CONFIG_ARCH_SHMOBILE is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_S3C64XX is not set
-# CONFIG_ARCH_S5P64X0 is not set
-# CONFIG_ARCH_S5PC100 is not set
-# CONFIG_ARCH_S5PV210 is not set
-# CONFIG_ARCH_EXYNOS is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_TCC_926 is not set
-# CONFIG_ARCH_U300 is not set
-# CONFIG_ARCH_U8500 is not set
-# CONFIG_ARCH_NOMADIK is not set
-# CONFIG_ARCH_DAVINCI is not set
-CONFIG_ARCH_OMAP=y
-# CONFIG_PLAT_SPEAR is not set
-# CONFIG_ARCH_VT8500 is not set
-# CONFIG_ARCH_ZYNQ is not set
-CONFIG_GPIO_PCA953X=m
-CONFIG_KEYBOARD_GPIO_POLLED=m
-
-#
-# TI OMAP Common Features
-#
-CONFIG_ARCH_OMAP_OTG=y
-# CONFIG_ARCH_OMAP1 is not set
-CONFIG_ARCH_OMAP2PLUS=y
-
-#
-# OMAP Feature Selections
-#
-CONFIG_OMAP_DEBUG_DEVICES=y
-CONFIG_OMAP_DEBUG_LEDS=y
-# CONFIG_OMAP_SMARTREFLEX is not set
-CONFIG_OMAP_RESET_CLOCKS=y
-CONFIG_OMAP_MUX=y
-# CONFIG_OMAP_MUX_DEBUG is not set
-CONFIG_OMAP_MUX_WARNINGS=y
-CONFIG_OMAP_MCBSP=y
-# CONFIG_OMAP_MBOX_FWK is not set
-CONFIG_OMAP_32K_TIMER=y
-# CONFIG_OMAP3_L2_AUX_SECURE_SAVE_RESTORE is not set
-CONFIG_OMAP_32K_TIMER_HZ=128
-CONFIG_OMAP_DM_TIMER=y
-CONFIG_OMAP_PM_NOOP=y
-CONFIG_MACH_OMAP_GENERIC=y
-
-#
-# TI OMAP2/3/4 Specific Features
-#
-CONFIG_ARCH_OMAP2PLUS_TYPICAL=y
-CONFIG_ARCH_OMAP2=y
-CONFIG_ARCH_OMAP3=y
-CONFIG_ARCH_OMAP4=y
-
-#
-# OMAP Core Type
-#
-CONFIG_SOC_OMAP2420=y
-CONFIG_SOC_OMAP2430=y
-CONFIG_SOC_OMAP3430=y
-CONFIG_SOC_OMAPTI816X=y
-CONFIG_OMAP_PACKAGE_ZAF=y
-CONFIG_OMAP_PACKAGE_ZAC=y
-CONFIG_OMAP_PACKAGE_CBB=y
-CONFIG_OMAP_PACKAGE_CUS=y
-CONFIG_OMAP_PACKAGE_CBP=y
-CONFIG_OMAP_PACKAGE_CBL=y
-CONFIG_OMAP_PACKAGE_CBS=y
-
-#
-# OMAP Board Type
-#
-CONFIG_MACH_OMAP_H4=y
-CONFIG_MACH_OMAP_APOLLON=y
-CONFIG_MACH_OMAP_2430SDP=y
-CONFIG_MACH_OMAP3_BEAGLE=y
-CONFIG_MACH_DEVKIT8000=y
-CONFIG_MACH_OMAP_LDP=y
-CONFIG_MACH_OMAP3530_LV_SOM=y
-CONFIG_MACH_OMAP3_TORPEDO=y
-CONFIG_MACH_OVERO=y
-CONFIG_MACH_OMAP3EVM=y
-CONFIG_MACH_OMAP3517EVM=y
-# CONFIG_MACH_CRANEBOARD is not set
-CONFIG_MACH_OMAP3_PANDORA=y
-CONFIG_MACH_OMAP3_TOUCHBOOK=y
-CONFIG_MACH_OMAP_3430SDP=y
-# CONFIG_MACH_NOKIA_N8X0 is not set
-CONFIG_MACH_NOKIA_RM680=y
-CONFIG_MACH_NOKIA_RX51=y
-CONFIG_MACH_OMAP_ZOOM2=y
-CONFIG_MACH_OMAP_ZOOM3=y
-CONFIG_MACH_CM_T35=y
-CONFIG_MACH_CM_T3517=y
-CONFIG_MACH_CM_T3730=y
-CONFIG_MACH_IGEP0020=y
-CONFIG_MACH_IGEP0030=y
-CONFIG_MACH_SBC3530=y
-CONFIG_MACH_OMAP_3630SDP=y
-CONFIG_MACH_TI8168EVM=y
-CONFIG_MACH_OMAP_4430SDP=y
-CONFIG_MACH_OMAP4_PANDA=y
-# CONFIG_OMAP3_EMU is not set
-# CONFIG_OMAP3_SDRC_AC_TIMING is not set
-
-#
-# System MMU
-#
-
-#
-# Processor Type
-#
-CONFIG_CPU_V6=y
-CONFIG_CPU_V7=y
-CONFIG_CPU_32v6=y
-CONFIG_CPU_32v6K=y
-CONFIG_CPU_32v7=y
-CONFIG_CPU_ABRT_EV6=y
-CONFIG_CPU_ABRT_EV7=y
-CONFIG_CPU_PABRT_V6=y
-CONFIG_CPU_PABRT_V7=y
-CONFIG_CPU_CACHE_V6=y
-CONFIG_CPU_CACHE_V7=y
-CONFIG_CPU_CACHE_VIPT=y
-CONFIG_CPU_COPY_V6=y
-CONFIG_CPU_TLB_V6=y
-CONFIG_CPU_TLB_V7=y
-CONFIG_CPU_HAS_ASID=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-CONFIG_CPU_USE_DOMAINS=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-# CONFIG_ARM_THUMBEE is not set
-# CONFIG_CPU_ICACHE_DISABLE is not set
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_CPU_BPREDICT_DISABLE is not set
-CONFIG_OUTER_CACHE=y
-CONFIG_OUTER_CACHE_SYNC=y
-CONFIG_CACHE_L2X0=y
-CONFIG_ARM_L1_CACHE_SHIFT=5
-CONFIG_ARM_DMA_MEM_BUFFERABLE=y
-# CONFIG_ARM_ERRATA_326103 is not set
-CONFIG_ARM_ERRATA_411920=y
-CONFIG_ARM_ERRATA_430973=y
-CONFIG_ARM_ERRATA_458693=y
-CONFIG_ARM_ERRATA_460075=y
-# CONFIG_ARM_ERRATA_742230 is not set
-CONFIG_ARM_ERRATA_742231=y
-CONFIG_PL310_ERRATA_588369=y
-CONFIG_ARM_ERRATA_720789=y
-CONFIG_PL310_ERRATA_727915=y
-CONFIG_ARM_ERRATA_743622=y
-# CONFIG_ARM_ERRATA_751472 is not set
-CONFIG_ARM_ERRATA_754322=y
-CONFIG_ARM_ERRATA_754327=y
-CONFIG_ARM_ERRATA_764369=y
-CONFIG_PL310_ERRATA_769419=y
-CONFIG_ARM_GIC=y
-
-#
-# Bus support
-#
-# CONFIG_PCI_SYSCALL is not set
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-# CONFIG_PCCARD is not set
-
-#
-# Kernel Features
-#
-CONFIG_TICK_ONESHOT=y
-CONFIG_NO_HZ=y
-CONFIG_HIGH_RES_TIMERS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_SMP=y
-CONFIG_SMP_ON_UP=y
-CONFIG_ARM_CPU_TOPOLOGY=y
-CONFIG_SCHED_MC=y
-CONFIG_SCHED_SMT=y
-CONFIG_HAVE_ARM_SCU=y
-CONFIG_HAVE_ARM_TWD=y
-CONFIG_VMSPLIT_3G=y
-# CONFIG_VMSPLIT_2G is not set
-# CONFIG_VMSPLIT_1G is not set
-CONFIG_PAGE_OFFSET=0xC0000000
-CONFIG_NR_CPUS=8
-CONFIG_HOTPLUG_CPU=y
-CONFIG_LOCAL_TIMERS=y
-CONFIG_PREEMPT_NONE=y
-# CONFIG_PREEMPT_VOLUNTARY is not set
-# CONFIG_PREEMPT is not set
-CONFIG_HZ=128
-CONFIG_AEABI=y
-# CONFIG_OABI_COMPAT is not set
-CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
-# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
-# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
-CONFIG_HAVE_ARCH_PFN_VALID=y
-CONFIG_HIGHMEM=y
-CONFIG_HIGHPTE=y
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-CONFIG_HAVE_MEMBLOCK=y
-CONFIG_PAGEFLAGS_EXTENDED=y
-CONFIG_SPLIT_PTLOCK_CPUS=4
-# CONFIG_COMPACTION is not set
-# CONFIG_PHYS_ADDR_T_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=0
-CONFIG_BOUNCE=y
-CONFIG_VIRT_TO_BUS=y
-CONFIG_KSM=y
-CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
-# CONFIG_CLEANCACHE is not set
-CONFIG_FORCE_MAX_ZONEORDER=11
-# CONFIG_LEDS is not set
-CONFIG_ALIGNMENT_TRAP=y
-CONFIG_UACCESS_WITH_MEMCPY=y
-CONFIG_SECCOMP=y
-CONFIG_CC_STACKPROTECTOR=y
-# CONFIG_DEPRECATED_PARAM_STRUCT is not set
-
-#
-# Boot options
-#
-CONFIG_USE_OF=y
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-# CONFIG_ARM_APPENDED_DTB is not set
-CONFIG_CMDLINE=""
-# CONFIG_XIP_KERNEL is not set
-# CONFIG_KEXEC is not set
-# CONFIG_CRASH_DUMP is not set
-# CONFIG_AUTO_ZRELADDR is not set
-
-#
-# CPU Power Management
-#
-
-#
-# CPU Frequency scaling
-#
-# CONFIG_CPU_FREQ is not set
-CONFIG_CPU_IDLE=y
-CONFIG_CPU_IDLE_GOV_LADDER=y
-CONFIG_CPU_IDLE_GOV_MENU=y
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_VFP=y
-CONFIG_VFPv3=y
-CONFIG_NEON=y
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
-CONFIG_HAVE_AOUT=y
-# CONFIG_BINFMT_AOUT is not set
-# CONFIG_BINFMT_MISC is not set
-
-#
-# Power management options
-#
-CONFIG_SUSPEND=y
-CONFIG_SUSPEND_FREEZER=y
-CONFIG_PM_SLEEP=y
-CONFIG_PM_SLEEP_SMP=y
-CONFIG_PM_RUNTIME=y
-CONFIG_PM=y
-# CONFIG_PM_DEBUG is not set
-# CONFIG_APM_EMULATION is not set
-CONFIG_ARCH_HAS_OPP=y
-CONFIG_PM_OPP=y
-CONFIG_PM_CLK=y
-CONFIG_CPU_PM=y
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_ARM_CPU_SUSPEND=y
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-CONFIG_XFRM_USER=m
-# CONFIG_XFRM_SUB_POLICY is not set
-CONFIG_XFRM_MIGRATE=y
-CONFIG_XFRM_STATISTICS=y
-CONFIG_XFRM_IPCOMP=m
-CONFIG_NET_KEY=m
-CONFIG_NET_KEY_MIGRATE=y
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-CONFIG_IP_ADVANCED_ROUTER=y
-# CONFIG_IP_FIB_TRIE_STATS is not set
-CONFIG_IP_MULTIPLE_TABLES=y
-CONFIG_IP_ROUTE_MULTIPATH=y
-CONFIG_IP_ROUTE_VERBOSE=y
-CONFIG_IP_ROUTE_CLASSID=y
-# CONFIG_IP_PNP is not set
-CONFIG_NET_IPIP=m
-CONFIG_NET_IPGRE_DEMUX=m
-CONFIG_NET_IPGRE=m
-CONFIG_NET_IPGRE_BROADCAST=y
-CONFIG_IP_MROUTE=y
-# CONFIG_IP_MROUTE_MULTIPLE_TABLES is not set
-CONFIG_IP_PIMSM_V1=y
-CONFIG_IP_PIMSM_V2=y
-CONFIG_ARPD=y
-CONFIG_SYN_COOKIES=y
-CONFIG_INET_AH=m
-CONFIG_INET_ESP=m
-CONFIG_INET_IPCOMP=m
-CONFIG_INET_XFRM_TUNNEL=m
-CONFIG_INET_TUNNEL=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=y
-CONFIG_INET_XFRM_MODE_TUNNEL=y
-CONFIG_INET_XFRM_MODE_BEET=y
-CONFIG_INET_LRO=y
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-CONFIG_TCP_CONG_ADVANCED=y
-CONFIG_TCP_CONG_BIC=m
-CONFIG_TCP_CONG_CUBIC=m
-CONFIG_TCP_CONG_WESTWOOD=m
-CONFIG_TCP_CONG_HTCP=m
-CONFIG_TCP_CONG_HSTCP=m
-CONFIG_TCP_CONG_HYBLA=m
-CONFIG_TCP_CONG_VEGAS=m
-CONFIG_TCP_CONG_SCALABLE=m
-CONFIG_TCP_CONG_LP=m
-CONFIG_TCP_CONG_VENO=m
-CONFIG_TCP_CONG_YEAH=m
-CONFIG_TCP_CONG_ILLINOIS=m
-CONFIG_DEFAULT_RENO=y
-CONFIG_DEFAULT_TCP_CONG="reno"
-# CONFIG_TCP_MD5SIG is not set
-CONFIG_IPV6=y
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_IPV6_MIP6=m
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
-CONFIG_IPV6_SIT=m
-# CONFIG_IPV6_SIT_6RD is not set
-CONFIG_IPV6_NDISC_NODETYPE=y
-CONFIG_IPV6_TUNNEL=m
-CONFIG_IPV6_MULTIPLE_TABLES=y
-# CONFIG_IPV6_SUBTREES is not set
-# CONFIG_IPV6_MROUTE is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETWORK_PHY_TIMESTAMPING=y
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_NETFILTER_ADVANCED=y
-CONFIG_BRIDGE_NETFILTER=y
-
-#
-# Core Netfilter Configuration
-#
-CONFIG_NETFILTER_NETLINK=m
-CONFIG_NETFILTER_NETLINK_QUEUE=m
-CONFIG_NETFILTER_NETLINK_LOG=m
-CONFIG_NF_CONNTRACK=m
-CONFIG_NF_CONNTRACK_MARK=y
-# CONFIG_NF_CONNTRACK_ZONES is not set
-CONFIG_NF_CONNTRACK_EVENTS=y
-CONFIG_NF_CONNTRACK_TIMESTAMP=y
-CONFIG_NF_CT_PROTO_DCCP=m
-CONFIG_NF_CT_PROTO_GRE=m
-CONFIG_NF_CT_PROTO_SCTP=m
-CONFIG_NF_CT_PROTO_UDPLITE=m
-CONFIG_NF_CONNTRACK_AMANDA=m
-CONFIG_NF_CONNTRACK_FTP=m
-CONFIG_NF_CONNTRACK_H323=m
-CONFIG_NF_CONNTRACK_IRC=m
-CONFIG_NF_CONNTRACK_BROADCAST=m
-CONFIG_NF_CONNTRACK_NETBIOS_NS=m
-CONFIG_NF_CONNTRACK_SNMP=m
-CONFIG_NF_CONNTRACK_PPTP=m
-CONFIG_NF_CONNTRACK_SANE=m
-CONFIG_NF_CONNTRACK_SIP=m
-CONFIG_NF_CONNTRACK_TFTP=m
-CONFIG_NF_CT_NETLINK=m
-CONFIG_NETFILTER_TPROXY=m
-CONFIG_NETFILTER_XTABLES=m
-
-#
-# Xtables combined modules
-#
-CONFIG_NETFILTER_XT_MARK=m
-CONFIG_NETFILTER_XT_CONNMARK=m
-
-#
-# Xtables targets
-#
-CONFIG_NETFILTER_XT_TARGET_AUDIT=m
-CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
-CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
-CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
-CONFIG_NETFILTER_XT_TARGET_CT=m
-CONFIG_NETFILTER_XT_TARGET_DSCP=m
-CONFIG_NETFILTER_XT_TARGET_HL=m
-CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m
-CONFIG_NETFILTER_XT_TARGET_LED=m
-CONFIG_NETFILTER_XT_TARGET_IMQ=m
-CONFIG_NETFILTER_XT_TARGET_MARK=m
-CONFIG_NETFILTER_XT_TARGET_NFLOG=m
-CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
-CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
-CONFIG_NETFILTER_XT_TARGET_RATEEST=m
-CONFIG_NETFILTER_XT_TARGET_TEE=m
-CONFIG_NETFILTER_XT_TARGET_TPROXY=m
-CONFIG_NETFILTER_XT_TARGET_TRACE=m
-CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
-CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
-
-#
-# Xtables matches
-#
-CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
-CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
-CONFIG_NETFILTER_XT_MATCH_COMMENT=m
-CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
-CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
-CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
-CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
-CONFIG_NETFILTER_XT_MATCH_CPU=m
-CONFIG_NETFILTER_XT_MATCH_DCCP=m
-CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m
-CONFIG_NETFILTER_XT_MATCH_DSCP=m
-CONFIG_NETFILTER_XT_MATCH_ESP=m
-CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
-CONFIG_NETFILTER_XT_MATCH_HELPER=m
-CONFIG_NETFILTER_XT_MATCH_HL=m
-CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
-CONFIG_NETFILTER_XT_MATCH_IPVS=m
-CONFIG_NETFILTER_XT_MATCH_LENGTH=m
-CONFIG_NETFILTER_XT_MATCH_LIMIT=m
-CONFIG_NETFILTER_XT_MATCH_MAC=m
-CONFIG_NETFILTER_XT_MATCH_MARK=m
-CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
-CONFIG_NETFILTER_XT_MATCH_OSF=m
-CONFIG_NETFILTER_XT_MATCH_OWNER=m
-CONFIG_NETFILTER_XT_MATCH_POLICY=m
-CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
-CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
-CONFIG_NETFILTER_XT_MATCH_QUOTA=m
-CONFIG_NETFILTER_XT_MATCH_RATEEST=m
-CONFIG_NETFILTER_XT_MATCH_REALM=m
-CONFIG_NETFILTER_XT_MATCH_RECENT=m
-CONFIG_NETFILTER_XT_MATCH_SCTP=m
-CONFIG_NETFILTER_XT_MATCH_SOCKET=m
-CONFIG_NETFILTER_XT_MATCH_STATE=m
-CONFIG_NETFILTER_XT_MATCH_LAYER7=m
-# CONFIG_NETFILTER_XT_MATCH_LAYER7_DEBUG is not set
-CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
-CONFIG_NETFILTER_XT_MATCH_STRING=m
-CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
-CONFIG_NETFILTER_XT_MATCH_TIME=m
-CONFIG_NETFILTER_XT_MATCH_U32=m
-# CONFIG_IP_SET is not set
-CONFIG_IP_VS=m
-CONFIG_IP_VS_IPV6=y
-# CONFIG_IP_VS_DEBUG is not set
-CONFIG_IP_VS_TAB_BITS=12
-
-#
-# IPVS transport protocol load balancing support
-#
-CONFIG_IP_VS_PROTO_TCP=y
-CONFIG_IP_VS_PROTO_UDP=y
-CONFIG_IP_VS_PROTO_AH_ESP=y
-CONFIG_IP_VS_PROTO_ESP=y
-CONFIG_IP_VS_PROTO_AH=y
-CONFIG_IP_VS_PROTO_SCTP=y
-
-#
-# IPVS scheduler
-#
-CONFIG_IP_VS_RR=m
-CONFIG_IP_VS_WRR=m
-CONFIG_IP_VS_LC=m
-CONFIG_IP_VS_WLC=m
-CONFIG_IP_VS_LBLC=m
-CONFIG_IP_VS_LBLCR=m
-CONFIG_IP_VS_DH=m
-CONFIG_IP_VS_SH=m
-CONFIG_IP_VS_SED=m
-CONFIG_IP_VS_NQ=m
-
-#
-# IPVS application helper
-#
-CONFIG_IP_VS_FTP=m
-CONFIG_IP_VS_NFCT=y
-CONFIG_IP_VS_PE_SIP=m
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_NF_DEFRAG_IPV4=m
-CONFIG_NF_CONNTRACK_IPV4=m
-CONFIG_NF_CONNTRACK_PROC_COMPAT=y
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_NF_NAT=m
-CONFIG_NF_NAT_NEEDED=y
-CONFIG_IP_NF_TARGET_MASQUERADE=m
-CONFIG_IP_NF_TARGET_NETMAP=m
-CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_NF_NAT_SNMP_BASIC=m
-CONFIG_NF_NAT_PROTO_DCCP=m
-CONFIG_NF_NAT_PROTO_GRE=m
-CONFIG_NF_NAT_PROTO_UDPLITE=m
-CONFIG_NF_NAT_PROTO_SCTP=m
-CONFIG_NF_NAT_FTP=m
-CONFIG_NF_NAT_IRC=m
-CONFIG_NF_NAT_TFTP=m
-CONFIG_NF_NAT_AMANDA=m
-CONFIG_NF_NAT_PPTP=m
-CONFIG_NF_NAT_H323=m
-CONFIG_NF_NAT_SIP=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_CLUSTERIP=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-CONFIG_IP_NF_MATCH_IPP2P=m
-
-#
-# IPv6: Netfilter Configuration
-#
-CONFIG_NF_DEFRAG_IPV6=m
-CONFIG_NF_CONNTRACK_IPV6=m
-CONFIG_IP6_NF_QUEUE=m
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_AH=m
-CONFIG_IP6_NF_MATCH_EUI64=m
-CONFIG_IP6_NF_MATCH_FRAG=m
-CONFIG_IP6_NF_MATCH_OPTS=m
-CONFIG_IP6_NF_MATCH_HL=m
-CONFIG_IP6_NF_MATCH_IPV6HEADER=m
-CONFIG_IP6_NF_MATCH_MH=m
-CONFIG_IP6_NF_MATCH_RT=m
-CONFIG_IP6_NF_TARGET_HL=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_REJECT=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_RAW=m
-CONFIG_BRIDGE_NF_EBTABLES=m
-CONFIG_BRIDGE_EBT_BROUTE=m
-CONFIG_BRIDGE_EBT_T_FILTER=m
-CONFIG_BRIDGE_EBT_T_NAT=m
-CONFIG_BRIDGE_EBT_802_3=m
-CONFIG_BRIDGE_EBT_AMONG=m
-CONFIG_BRIDGE_EBT_ARP=m
-CONFIG_BRIDGE_EBT_IP=m
-CONFIG_BRIDGE_EBT_IP6=m
-CONFIG_BRIDGE_EBT_LIMIT=m
-CONFIG_BRIDGE_EBT_MARK=m
-CONFIG_BRIDGE_EBT_PKTTYPE=m
-CONFIG_BRIDGE_EBT_STP=m
-CONFIG_BRIDGE_EBT_VLAN=m
-CONFIG_BRIDGE_EBT_ARPREPLY=m
-CONFIG_BRIDGE_EBT_DNAT=m
-CONFIG_BRIDGE_EBT_MARK_T=m
-CONFIG_BRIDGE_EBT_REDIRECT=m
-CONFIG_BRIDGE_EBT_SNAT=m
-CONFIG_BRIDGE_EBT_LOG=m
-CONFIG_BRIDGE_EBT_ULOG=m
-CONFIG_BRIDGE_EBT_NFLOG=m
-# CONFIG_IP_DCCP is not set
-# CONFIG_IP_SCTP is not set
-# CONFIG_RDS is not set
-# CONFIG_TIPC is not set
-CONFIG_ATM=m
-CONFIG_ATM_CLIP=m
-CONFIG_ATM_CLIP_NO_ICMP=y
-# CONFIG_ATM_LANE is not set
-CONFIG_ATM_BR2684=m
-# CONFIG_ATM_BR2684_IPFILTER is not set
-CONFIG_L2TP=m
-CONFIG_L2TP_V3=y
-CONFIG_L2TP_IP=m
-CONFIG_L2TP_ETH=m
-CONFIG_STP=m
-CONFIG_GARP=m
-CONFIG_BRIDGE=m
-CONFIG_BRIDGE_IGMP_SNOOPING=y
-CONFIG_NET_DSA=y
-CONFIG_NET_DSA_TAG_DSA=y
-CONFIG_NET_DSA_TAG_EDSA=y
-CONFIG_NET_DSA_TAG_TRAILER=y
-CONFIG_NET_DSA_MV88E6XXX=y
-CONFIG_NET_DSA_MV88E6060=y
-CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y
-CONFIG_NET_DSA_MV88E6131=y
-CONFIG_NET_DSA_MV88E6123_61_65=y
-CONFIG_VLAN_8021Q=m
-CONFIG_VLAN_8021Q_GVRP=y
-# CONFIG_DECNET is not set
-CONFIG_LLC=m
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_PHONET is not set
-CONFIG_IEEE802154=m
-CONFIG_IEEE802154_6LOWPAN=m
-CONFIG_NET_SCHED=y
-
-#
-# Queueing/Scheduling
-#
-CONFIG_NET_SCH_CBQ=m
-CONFIG_NET_SCH_HTB=m
-CONFIG_NET_SCH_HFSC=m
-CONFIG_NET_SCH_ATM=m
-CONFIG_NET_SCH_PRIO=m
-CONFIG_NET_SCH_MULTIQ=m
-CONFIG_NET_SCH_RED=m
-CONFIG_NET_SCH_SFB=m
-CONFIG_NET_SCH_SFQ=m
-CONFIG_NET_SCH_TEQL=m
-CONFIG_NET_SCH_TBF=m
-CONFIG_NET_SCH_GRED=m
-CONFIG_NET_SCH_DSMARK=m
-CONFIG_NET_SCH_NETEM=m
-CONFIG_NET_SCH_DRR=m
-CONFIG_NET_SCH_MQPRIO=m
-CONFIG_NET_SCH_CHOKE=m
-CONFIG_NET_SCH_QFQ=m
-CONFIG_NET_SCH_INGRESS=m
-
-#
-# Classification
-#
-CONFIG_NET_CLS=y
-CONFIG_NET_CLS_BASIC=m
-CONFIG_NET_CLS_TCINDEX=m
-CONFIG_NET_CLS_ROUTE4=m
-CONFIG_NET_CLS_FW=m
-CONFIG_NET_CLS_U32=m
-CONFIG_CLS_U32_PERF=y
-CONFIG_CLS_U32_MARK=y
-CONFIG_NET_CLS_RSVP=m
-CONFIG_NET_CLS_RSVP6=m
-CONFIG_NET_CLS_FLOW=m
-CONFIG_NET_EMATCH=y
-CONFIG_NET_EMATCH_STACK=32
-CONFIG_NET_EMATCH_CMP=m
-CONFIG_NET_EMATCH_NBYTE=m
-CONFIG_NET_EMATCH_U32=m
-CONFIG_NET_EMATCH_META=m
-CONFIG_NET_EMATCH_TEXT=m
-CONFIG_NET_CLS_ACT=y
-CONFIG_NET_ACT_POLICE=m
-CONFIG_NET_ACT_GACT=m
-CONFIG_GACT_PROB=y
-CONFIG_NET_ACT_MIRRED=m
-CONFIG_NET_ACT_IPT=m
-CONFIG_NET_ACT_NAT=m
-CONFIG_NET_ACT_PEDIT=m
-CONFIG_NET_ACT_SIMP=m
-CONFIG_NET_ACT_SKBEDIT=m
-CONFIG_NET_ACT_CSUM=m
-CONFIG_NET_CLS_IND=y
-CONFIG_NET_SCH_FIFO=y
-# CONFIG_DCB is not set
-CONFIG_DNS_RESOLVER=y
-CONFIG_BATMAN_ADV=m
-# CONFIG_BATMAN_ADV_DEBUG is not set
-CONFIG_RPS=y
-CONFIG_RFS_ACCEL=y
-CONFIG_XPS=y
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-# CONFIG_CAN is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-CONFIG_IRTTY_SIR=m
-
-#
-# Dongle support
-#
-# CONFIG_DONGLE is not set
-CONFIG_KINGSUN_DONGLE=m
-CONFIG_KSDAZZLE_DONGLE=m
-CONFIG_KS959_DONGLE=m
-
-#
-# FIR device drivers
-#
-CONFIG_USB_IRDA=m
-CONFIG_SIGMATEL_FIR=m
-CONFIG_MCS_FIR=m
-CONFIG_BT=m
-CONFIG_BT_L2CAP=y
-CONFIG_BT_SCO=y
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_CMTP=m
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIBTUSB=m
-CONFIG_BT_HCIBTSDIO=m
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIUART_ATH3K=y
-CONFIG_BT_HCIUART_LL=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIVHCI=m
-CONFIG_BT_MRVL=m
-CONFIG_BT_MRVL_SDIO=m
-CONFIG_BT_ATH3K=m
-CONFIG_BT_WILINK=m
-CONFIG_AF_RXRPC=m
-# CONFIG_AF_RXRPC_DEBUG is not set
-CONFIG_RXKAD=m
-CONFIG_FIB_RULES=y
-CONFIG_WIRELESS=y
-CONFIG_WIRELESS_EXT=y
-CONFIG_WEXT_CORE=y
-CONFIG_WEXT_PROC=y
-CONFIG_WEXT_SPY=y
-CONFIG_WEXT_PRIV=y
-CONFIG_CFG80211=m
-# CONFIG_NL80211_TESTMODE is not set
-# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
-# CONFIG_CFG80211_REG_DEBUG is not set
-# CONFIG_CFG80211_DEFAULT_PS is not set
-# CONFIG_CFG80211_INTERNAL_REGDB is not set
-CONFIG_CFG80211_WEXT=y
-CONFIG_WIRELESS_EXT_SYSFS=y
-CONFIG_LIB80211=m
-CONFIG_LIB80211_CRYPT_WEP=m
-CONFIG_LIB80211_CRYPT_CCMP=m
-CONFIG_LIB80211_CRYPT_TKIP=m
-# CONFIG_LIB80211_DEBUG is not set
-CONFIG_MAC80211=m
-CONFIG_MAC80211_HAS_RC=y
-# CONFIG_MAC80211_RC_PID is not set
-CONFIG_MAC80211_RC_MINSTREL=y
-CONFIG_MAC80211_RC_MINSTREL_HT=y
-CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
-CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
-CONFIG_MAC80211_MESH=y
-CONFIG_MAC80211_LEDS=y
-# CONFIG_MAC80211_DEBUG_MENU is not set
-# CONFIG_WIMAX is not set
-CONFIG_RFKILL=m
-CONFIG_RFKILL_LEDS=y
-CONFIG_RFKILL_INPUT=y
-CONFIG_RFKILL_REGULATOR=m
-CONFIG_RFKILL_GPIO=m
-# CONFIG_NET_9P is not set
-# CONFIG_CAIF is not set
-CONFIG_CEPH_LIB=m
-# CONFIG_CEPH_LIB_PRETTYDEBUG is not set
-# CONFIG_CEPH_LIB_USE_DNS_RESOLVER is not set
-# CONFIG_NFC is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
-# CONFIG_DEVTMPFS is not set
-# CONFIG_STANDALONE is not set
-# CONFIG_PREVENT_FIRMWARE_BUILD is not set
-CONFIG_FW_LOADER=y
-# CONFIG_FIRMWARE_IN_KERNEL is not set
-CONFIG_EXTRA_FIRMWARE=""
-# CONFIG_DEBUG_DRIVER is not set
-# CONFIG_DEBUG_DEVRES is not set
-# CONFIG_SYS_HYPERVISOR is not set
-CONFIG_REGMAP=y
-CONFIG_REGMAP_I2C=m
-CONFIG_CONNECTOR=m
-CONFIG_MTD=m
-CONFIG_MTD_TESTS=m
-# CONFIG_MTD_REDBOOT_PARTS is not set
-# CONFIG_MTD_AFS_PARTS is not set
-CONFIG_MTD_OF_PARTS=m
-CONFIG_MTD_AR7_PARTS=m
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=m
-CONFIG_MTD_BLKDEVS=m
-CONFIG_MTD_BLOCK=m
-# CONFIG_MTD_BLOCK_RO is not set
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-# CONFIG_SSFDC is not set
-CONFIG_SM_FTL=m
-# CONFIG_MTD_OOPS is not set
-# CONFIG_MTD_SWAP is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-CONFIG_MTD_PHYSMAP=m
-# CONFIG_MTD_PHYSMAP_COMPAT is not set
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-# CONFIG_MTD_DOCG3 is not set
-CONFIG_MTD_NAND_ECC=m
-# CONFIG_MTD_NAND_ECC_SMC is not set
-# CONFIG_MTD_NAND is not set
-# CONFIG_MTD_ONENAND is not set
-
-#
-# LPDDR flash memory drivers
-#
-CONFIG_MTD_LPDDR=m
-CONFIG_MTD_QINFO_PROBE=m
-CONFIG_MTD_UBI=m
-CONFIG_MTD_UBI_WL_THRESHOLD=4096
-CONFIG_MTD_UBI_BEB_RESERVE=1
-# CONFIG_MTD_UBI_GLUEBI is not set
-# CONFIG_MTD_UBI_DEBUG is not set
-CONFIG_DTC=y
-CONFIG_OF=y
-
-#
-# Device Tree and Open Firmware support
-#
-CONFIG_PROC_DEVICETREE=y
-CONFIG_OF_FLATTREE=y
-CONFIG_OF_EARLY_FLATTREE=y
-CONFIG_OF_ADDRESS=y
-CONFIG_OF_IRQ=y
-CONFIG_OF_DEVICE=y
-CONFIG_OF_GPIO=y
-CONFIG_OF_I2C=y
-CONFIG_OF_NET=y
-CONFIG_OF_MDIO=y
-CONFIG_PARPORT=m
-# CONFIG_PARPORT_PC is not set
-# CONFIG_PARPORT_GSC is not set
-CONFIG_PARPORT_AX88796=m
-CONFIG_PARPORT_1284=y
-CONFIG_PARPORT_NOT_PC=y
-CONFIG_BLK_DEV=y
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
-CONFIG_BLK_DEV_CRYPTOLOOP=m
-# CONFIG_BLK_DEV_DRBD is not set
-CONFIG_BLK_DEV_NBD=m
-CONFIG_BLK_DEV_OSD=m
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=8
-CONFIG_BLK_DEV_RAM_SIZE=16384
-# CONFIG_BLK_DEV_XIP is not set
-# CONFIG_CDROM_PKTCDVD is not set
-CONFIG_ATA_OVER_ETH=m
-CONFIG_MG_DISK=m
-CONFIG_MG_DISK_RES=0
-CONFIG_BLK_DEV_RBD=m
-CONFIG_SENSORS_LIS3LV02D=m
-CONFIG_MISC_DEVICES=y
-# CONFIG_AD525X_DPOT is not set
-# CONFIG_ATMEL_PWM is not set
-CONFIG_ICS932S401=m
-CONFIG_ENCLOSURE_SERVICES=m
-CONFIG_APDS9802ALS=m
-CONFIG_ISL29003=m
-CONFIG_ISL29020=m
-CONFIG_SENSORS_TSL2550=m
-CONFIG_SENSORS_BH1780=m
-CONFIG_SENSORS_BH1770=m
-CONFIG_SENSORS_APDS990X=m
-CONFIG_HMC6352=m
-CONFIG_DS1682=m
-CONFIG_BMP085=m
-CONFIG_USB_SWITCH_FSA9480=m
-CONFIG_C2PORT=m
-
-#
-# EEPROM support
-#
-CONFIG_EEPROM_AT24=m
-CONFIG_EEPROM_LEGACY=m
-CONFIG_EEPROM_MAX6875=m
-CONFIG_EEPROM_93CX6=m
-CONFIG_IWMC3200TOP=m
-# CONFIG_IWMC3200TOP_DEBUG is not set
-# CONFIG_IWMC3200TOP_DEBUGFS is not set
-
-#
-# Texas Instruments shared transport line discipline
-#
-CONFIG_TI_ST=m
-CONFIG_SENSORS_LIS3_I2C=m
-
-#
-# Altera FPGA firmware download module
-#
-# CONFIG_ALTERA_STAPL is not set
-
-#
-# SCSI device support
-#
-CONFIG_SCSI_MOD=m
-CONFIG_RAID_ATTRS=m
-CONFIG_SCSI=m
-CONFIG_SCSI_DMA=y
-# CONFIG_SCSI_TGT is not set
-CONFIG_SCSI_NETLINK=y
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-CONFIG_BLK_DEV_SR=m
-CONFIG_BLK_DEV_SR_VENDOR=y
-CONFIG_CHR_DEV_SG=m
-CONFIG_CHR_DEV_SCH=m
-CONFIG_SCSI_ENCLOSURE=m
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-CONFIG_SCSI_SPI_ATTRS=m
-CONFIG_SCSI_FC_ATTRS=m
-CONFIG_SCSI_ISCSI_ATTRS=m
-CONFIG_SCSI_SAS_ATTRS=m
-CONFIG_SCSI_SAS_LIBSAS=m
-CONFIG_SCSI_SAS_ATA=y
-CONFIG_SCSI_SAS_HOST_SMP=y
-CONFIG_SCSI_SRP_ATTRS=m
-CONFIG_SCSI_LOWLEVEL=y
-CONFIG_ISCSI_TCP=m
-CONFIG_ISCSI_BOOT_SYSFS=m
-CONFIG_LIBFC=m
-CONFIG_LIBFCOE=m
-# CONFIG_SCSI_DEBUG is not set
-CONFIG_SCSI_DH=m
-CONFIG_SCSI_DH_RDAC=m
-CONFIG_SCSI_DH_HP_SW=m
-CONFIG_SCSI_DH_EMC=m
-CONFIG_SCSI_DH_ALUA=m
-CONFIG_SCSI_OSD_INITIATOR=m
-CONFIG_SCSI_OSD_ULD=m
-CONFIG_SCSI_OSD_DPRINT_SENSE=1
-# CONFIG_SCSI_OSD_DEBUG is not set
-CONFIG_ATA=m
-# CONFIG_ATA_NONSTANDARD is not set
-CONFIG_ATA_VERBOSE_ERROR=y
-CONFIG_SATA_PMP=y
-
-#
-# Controllers with non-SFF native interface
-#
-CONFIG_SATA_AHCI_PLATFORM=m
-CONFIG_ATA_SFF=y
-
-#
-# SFF controllers with custom DMA interface
-#
-CONFIG_ATA_BMDMA=y
-
-#
-# SATA SFF controllers with BMDMA
-#
-CONFIG_SATA_MV=m
-
-#
-# PATA SFF controllers with BMDMA
-#
-CONFIG_PATA_ARASAN_CF=m
-
-#
-# PIO-only SFF controllers
-#
-CONFIG_PATA_PLATFORM=m
-CONFIG_PATA_OF_PLATFORM=m
-
-#
-# Generic fallback / legacy drivers
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_MD=m
-CONFIG_MD_LINEAR=m
-CONFIG_MD_RAID0=m
-CONFIG_MD_RAID1=m
-CONFIG_MD_RAID10=m
-CONFIG_MD_RAID456=m
-# CONFIG_MULTICORE_RAID456 is not set
-CONFIG_MD_MULTIPATH=m
-# CONFIG_MD_FAULTY is not set
-CONFIG_BLK_DEV_DM=m
-# CONFIG_DM_DEBUG is not set
-CONFIG_DM_BUFIO=m
-CONFIG_DM_PERSISTENT_DATA=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_THIN_PROVISIONING=m
-# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
-# CONFIG_DM_DEBUG_SPACE_MAPS is not set
-CONFIG_DM_MIRROR=m
-CONFIG_DM_RAID=m
-CONFIG_DM_LOG_USERSPACE=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_QL=m
-CONFIG_DM_MULTIPATH_ST=m
-CONFIG_DM_DELAY=m
-CONFIG_DM_UEVENT=y
-CONFIG_DM_FLAKEY=m
-# CONFIG_TARGET_CORE is not set
-CONFIG_NETDEVICES=y
-CONFIG_NET_CORE=y
-CONFIG_BONDING=m
-CONFIG_DUMMY=m
-CONFIG_EQUALIZER=m
-CONFIG_IMQ=m
-# CONFIG_IMQ_BEHAVIOR_AA is not set
-CONFIG_IMQ_BEHAVIOR_AB=y
-# CONFIG_IMQ_BEHAVIOR_BA is not set
-# CONFIG_IMQ_BEHAVIOR_BB is not set
-CONFIG_IMQ_NUM_DEVS=2
-CONFIG_MII=m
-CONFIG_IEEE802154_DRIVERS=m
-CONFIG_IEEE802154_FAKEHARD=m
-CONFIG_IFB=m
-CONFIG_MACVLAN=m
-CONFIG_MACVTAP=m
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-CONFIG_TUN=m
-CONFIG_VETH=m
-CONFIG_ATM_DRIVERS=y
-# CONFIG_ATM_DUMMY is not set
-CONFIG_ATM_TCP=m
-
-#
-# CAIF transport drivers
-#
-CONFIG_ETHERNET=y
-CONFIG_NET_VENDOR_BROADCOM=y
-CONFIG_B44=m
-CONFIG_NET_VENDOR_CHELSIO=y
-CONFIG_DM9000=m
-# CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL is not set
-CONFIG_DNET=m
-CONFIG_NET_VENDOR_DLINK=y
-CONFIG_DE600=m
-CONFIG_DE620=m
-CONFIG_NET_VENDOR_FARADAY=y
-# CONFIG_FTMAC100 is not set
-# CONFIG_FTGMAC100 is not set
-CONFIG_NET_VENDOR_INTEL=y
-CONFIG_NET_VENDOR_I825XX=y
-CONFIG_NET_VENDOR_MARVELL=y
-CONFIG_NET_VENDOR_MICREL=y
-CONFIG_KS8842=m
-CONFIG_KS8851_MLL=m
-CONFIG_NET_VENDOR_NATSEMI=y
-CONFIG_NET_VENDOR_8390=y
-CONFIG_AX88796=m
-CONFIG_AX88796_93CX6=y
-CONFIG_ETHOC=m
-CONFIG_NET_VENDOR_SEEQ=y
-CONFIG_SEEQ8005=m
-CONFIG_NET_VENDOR_SMSC=y
-CONFIG_SMC91X=m
-CONFIG_SMC911X=m
-CONFIG_SMSC911X=m
-# CONFIG_SMSC911X_ARCH_HOOKS is not set
-CONFIG_NET_VENDOR_STMICRO=y
-CONFIG_STMMAC_ETH=m
-# CONFIG_STMMAC_DA is not set
-CONFIG_STMMAC_RING=y
-# CONFIG_STMMAC_CHAINED is not set
-CONFIG_NET_VENDOR_TI=y
-# CONFIG_TI_DAVINCI_EMAC is not set
-# CONFIG_TI_DAVINCI_MDIO is not set
-# CONFIG_TI_DAVINCI_CPDMA is not set
-CONFIG_PHYLIB=y
-
-#
-# MII PHY device drivers
-#
-CONFIG_MARVELL_PHY=m
-CONFIG_DAVICOM_PHY=m
-CONFIG_QSEMI_PHY=m
-CONFIG_LXT_PHY=m
-CONFIG_CICADA_PHY=m
-CONFIG_VITESSE_PHY=m
-CONFIG_SMSC_PHY=m
-CONFIG_BROADCOM_PHY=m
-CONFIG_ICPLUS_PHY=m
-CONFIG_REALTEK_PHY=m
-CONFIG_NATIONAL_PHY=m
-CONFIG_STE10XP=m
-CONFIG_LSI_ET1011C_PHY=m
-CONFIG_MICREL_PHY=m
-# CONFIG_FIXED_PHY is not set
-CONFIG_MDIO_BITBANG=m
-CONFIG_MDIO_GPIO=m
-# CONFIG_PLIP is not set
-CONFIG_PPP=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_MPPE=m
-CONFIG_PPP_MULTILINK=y
-CONFIG_PPPOATM=m
-CONFIG_PPPOE=m
-CONFIG_PPTP=m
-CONFIG_PPPOL2TP=m
-CONFIG_PPP_ASYNC=m
-CONFIG_PPP_SYNC_TTY=m
-CONFIG_SLIP=m
-CONFIG_SLHC=m
-CONFIG_SLIP_COMPRESSED=y
-CONFIG_SLIP_SMART=y
-CONFIG_SLIP_MODE_SLIP6=y
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-CONFIG_USB_NET_CDC_EEM=m
-CONFIG_USB_NET_CDC_NCM=m
-CONFIG_USB_NET_DM9601=m
-CONFIG_USB_NET_SMSC75XX=m
-CONFIG_USB_NET_SMSC95XX=m
-CONFIG_USB_NET_GL620A=m
-CONFIG_USB_NET_NET1080=m
-CONFIG_USB_NET_PLUSB=m
-CONFIG_USB_NET_MCS7830=m
-CONFIG_USB_NET_RNDIS_HOST=m
-CONFIG_USB_NET_CDC_SUBSET=m
-CONFIG_USB_ALI_M5632=y
-CONFIG_USB_AN2720=y
-CONFIG_USB_BELKIN=y
-CONFIG_USB_ARMLINUX=y
-CONFIG_USB_EPSON2888=y
-CONFIG_USB_KC2190=y
-CONFIG_USB_NET_ZAURUS=m
-CONFIG_USB_NET_CX82310_ETH=m
-CONFIG_USB_NET_KALMIA=m
-CONFIG_USB_HSO=m
-CONFIG_USB_NET_INT51X1=m
-# CONFIG_USB_IPHETH is not set
-CONFIG_USB_SIERRA_NET=m
-CONFIG_USB_VL600=m
-CONFIG_WLAN=y
-# CONFIG_LIBERTAS_THINFIRM is not set
-CONFIG_AT76C50X_USB=m
-CONFIG_USB_ZD1201=m
-CONFIG_USB_NET_RNDIS_WLAN=m
-# CONFIG_RTL8187 is not set
-# CONFIG_MAC80211_HWSIM is not set
-# CONFIG_ATH_COMMON is not set
-# CONFIG_B43 is not set
-# CONFIG_B43LEGACY is not set
-# CONFIG_BRCMFMAC is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-# CONFIG_IWM is not set
-# CONFIG_LIBERTAS is not set
-# CONFIG_P54_COMMON is not set
-# CONFIG_RT2X00 is not set
-# CONFIG_RTL8192CU is not set
-# CONFIG_WL1251 is not set
-CONFIG_WL12XX_MENU=m
-CONFIG_WL12XX=m
-CONFIG_WL12XX_SDIO=m
-# CONFIG_WL12XX_SDIO_TEST is not set
-CONFIG_WL12XX_PLATFORM_DATA=y
-# CONFIG_ZD1211RW is not set
-# CONFIG_MWIFIEX is not set
-
-#
-# Enable WiMAX (Networking options) to see the WiMAX drivers
-#
-CONFIG_WAN=y
-CONFIG_HDLC=m
-CONFIG_HDLC_RAW=m
-CONFIG_HDLC_RAW_ETH=m
-CONFIG_HDLC_CISCO=m
-CONFIG_HDLC_FR=m
-CONFIG_HDLC_PPP=m
-
-#
-# X.25/LAPB support is disabled
-#
-CONFIG_DLCI=m
-CONFIG_DLCI_MAX=8
-CONFIG_ISDN=y
-CONFIG_ISDN_I4L=m
-CONFIG_ISDN_PPP=y
-CONFIG_ISDN_PPP_VJ=y
-CONFIG_ISDN_MPP=y
-CONFIG_IPPP_FILTER=y
-CONFIG_ISDN_PPP_BSDCOMP=m
-CONFIG_ISDN_AUDIO=y
-CONFIG_ISDN_TTY_FAX=y
-
-#
-# ISDN feature submodules
-#
-CONFIG_ISDN_DIVERSION=m
-
-#
-# ISDN4Linux hardware drivers
-#
-
-#
-# Passive cards
-#
-CONFIG_ISDN_DRV_HISAX=m
-
-#
-# D-channel protocol features
-#
-CONFIG_HISAX_EURO=y
-CONFIG_DE_AOC=y
-# CONFIG_HISAX_NO_SENDCOMPLETE is not set
-# CONFIG_HISAX_NO_LLC is not set
-# CONFIG_HISAX_NO_KEYPAD is not set
-CONFIG_HISAX_1TR6=y
-CONFIG_HISAX_NI1=y
-CONFIG_HISAX_MAX_CARDS=8
-
-#
-# HiSax supported cards
-#
-CONFIG_HISAX_16_3=y
-CONFIG_HISAX_S0BOX=y
-CONFIG_HISAX_FRITZPCI=y
-CONFIG_HISAX_AVM_A1_PCMCIA=y
-CONFIG_HISAX_ELSA=y
-CONFIG_HISAX_DIEHLDIVA=y
-CONFIG_HISAX_SEDLBAUER=y
-CONFIG_HISAX_NICCY=y
-CONFIG_HISAX_GAZEL=y
-CONFIG_HISAX_HFC_SX=y
-CONFIG_HISAX_DEBUG=y
-
-#
-# HiSax PCMCIA card service modules
-#
-
-#
-# HiSax sub driver modules
-#
-CONFIG_HISAX_ST5481=m
-CONFIG_HISAX_HFCUSB=m
-CONFIG_HISAX_HFC4S8S=m
-
-#
-# Active cards
-#
-CONFIG_ISDN_CAPI=m
-CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
-CONFIG_CAPI_TRACE=y
-CONFIG_ISDN_CAPI_MIDDLEWARE=y
-CONFIG_ISDN_CAPI_CAPI20=m
-CONFIG_ISDN_CAPI_CAPIDRV=m
-
-#
-# CAPI hardware drivers
-#
-CONFIG_CAPI_AVM=y
-CONFIG_CAPI_EICON=y
-CONFIG_ISDN_DRV_GIGASET=m
-CONFIG_GIGASET_CAPI=y
-# CONFIG_GIGASET_I4L is not set
-# CONFIG_GIGASET_DUMMYLL is not set
-CONFIG_GIGASET_BASE=m
-CONFIG_GIGASET_M105=m
-CONFIG_GIGASET_M101=m
-# CONFIG_GIGASET_DEBUG is not set
-CONFIG_MISDN=m
-CONFIG_MISDN_DSP=m
-CONFIG_MISDN_L1OIP=m
-
-#
-# mISDN hardware drivers
-#
-CONFIG_MISDN_HFCUSB=m
-CONFIG_ISDN_HDLC=m
-# CONFIG_PHONE is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-CONFIG_INPUT_FF_MEMLESS=m
-CONFIG_INPUT_POLLDEV=m
-CONFIG_INPUT_SPARSEKMAP=m
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=y
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_EVDEV is not set
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-CONFIG_KEYBOARD_ADP5588=m
-CONFIG_KEYBOARD_ADP5589=m
-CONFIG_KEYBOARD_ATKBD=y
-CONFIG_KEYBOARD_QT1070=m
-CONFIG_KEYBOARD_QT2160=m
-CONFIG_KEYBOARD_LKKBD=m
-CONFIG_KEYBOARD_GPIO=m
-CONFIG_KEYBOARD_TCA6416=m
-CONFIG_KEYBOARD_MATRIX=m
-CONFIG_KEYBOARD_LM8323=m
-CONFIG_KEYBOARD_MAX7359=m
-CONFIG_KEYBOARD_MCS=m
-CONFIG_KEYBOARD_MPR121=m
-CONFIG_KEYBOARD_NEWTON=m
-CONFIG_KEYBOARD_OPENCORES=m
-CONFIG_KEYBOARD_STOWAWAY=m
-CONFIG_KEYBOARD_SUNKBD=m
-CONFIG_KEYBOARD_OMAP=m
-CONFIG_KEYBOARD_OMAP4=m
-CONFIG_KEYBOARD_TWL4030=m
-CONFIG_KEYBOARD_XTKBD=m
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TABLET is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-CONFIG_INPUT_MISC=y
-CONFIG_INPUT_AD714X=m
-CONFIG_INPUT_AD714X_I2C=m
-CONFIG_INPUT_BMA150=m
-# CONFIG_INPUT_MMA8450 is not set
-# CONFIG_INPUT_MPU3050 is not set
-CONFIG_INPUT_ATI_REMOTE2=m
-CONFIG_INPUT_KEYSPAN_REMOTE=m
-# CONFIG_INPUT_KXTJ9 is not set
-CONFIG_INPUT_POWERMATE=m
-CONFIG_INPUT_YEALINK=m
-CONFIG_INPUT_CM109=m
-CONFIG_INPUT_TWL4030_PWRBUTTON=m
-CONFIG_INPUT_TWL4030_VIBRA=m
-CONFIG_INPUT_TWL6040_VIBRA=m
-# CONFIG_INPUT_UINPUT is not set
-CONFIG_INPUT_PCF50633_PMU=m
-CONFIG_INPUT_PCF8574=m
-CONFIG_INPUT_PWM_BEEPER=m
-CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
-# CONFIG_INPUT_ADXL34X is not set
-# CONFIG_INPUT_CMA3000 is not set
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-CONFIG_SERIO_SERPORT=y
-# CONFIG_SERIO_PARKBD is not set
-CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
-CONFIG_SERIO_ALTERA_PS2=m
-CONFIG_SERIO_PS2MULT=m
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_CONSOLE_TRANSLATIONS=y
-CONFIG_VT_CONSOLE=y
-CONFIG_VT_CONSOLE_SLEEP=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
-CONFIG_UNIX98_PTYS=y
-# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
-# CONFIG_LEGACY_PTYS is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-CONFIG_N_GSM=m
-# CONFIG_TRACE_SINK is not set
-CONFIG_DEVKMEM=y
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-CONFIG_SERIAL_8250_EXTENDED=y
-CONFIG_SERIAL_8250_MANY_PORTS=y
-CONFIG_SERIAL_8250_SHARE_IRQ=y
-CONFIG_SERIAL_8250_DETECT_IRQ=y
-CONFIG_SERIAL_8250_RSA=y
-CONFIG_SERIAL_8250_DW=m
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_SERIAL_OF_PLATFORM=y
-CONFIG_SERIAL_OMAP=y
-CONFIG_SERIAL_OMAP_CONSOLE=y
-CONFIG_SERIAL_TIMBERDALE=m
-CONFIG_SERIAL_ALTERA_JTAGUART=m
-CONFIG_SERIAL_ALTERA_UART=m
-CONFIG_SERIAL_ALTERA_UART_MAXPORTS=4
-CONFIG_SERIAL_ALTERA_UART_BAUDRATE=115200
-CONFIG_SERIAL_XILINX_PS_UART=m
-# CONFIG_TTY_PRINTK is not set
-CONFIG_PRINTER=m
-# CONFIG_LP_CONSOLE is not set
-CONFIG_PPDEV=m
-# CONFIG_HVC_DCC is not set
-CONFIG_IPMI_HANDLER=m
-CONFIG_IPMI_PANIC_EVENT=y
-# CONFIG_IPMI_PANIC_STRING is not set
-CONFIG_IPMI_DEVICE_INTERFACE=m
-CONFIG_IPMI_SI=m
-CONFIG_IPMI_WATCHDOG=m
-CONFIG_IPMI_POWEROFF=m
-CONFIG_HW_RANDOM=m
-CONFIG_HW_RANDOM_TIMERIOMEM=m
-CONFIG_HW_RANDOM_OMAP=m
-CONFIG_NVRAM=m
-# CONFIG_R3964 is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_TCG_TPM is not set
-# CONFIG_RAMOOPS is not set
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-CONFIG_I2C_COMPAT=y
-CONFIG_I2C_CHARDEV=m
-CONFIG_I2C_MUX=m
-
-#
-# Multiplexer I2C Chip support
-#
-CONFIG_I2C_MUX_GPIO=m
-CONFIG_I2C_MUX_PCA9541=m
-CONFIG_I2C_MUX_PCA954x=m
-CONFIG_I2C_HELPER_AUTO=y
-CONFIG_I2C_SMBUS=m
-CONFIG_I2C_ALGOBIT=m
-CONFIG_I2C_ALGOPCA=m
-
-#
-# I2C Hardware Bus support
-#
-
-#
-# I2C system bus drivers (mostly embedded / system-on-chip)
-#
-# CONFIG_I2C_DESIGNWARE_PLATFORM is not set
-CONFIG_I2C_GPIO=m
-CONFIG_I2C_OCORES=m
-CONFIG_I2C_OMAP=y
-CONFIG_I2C_PCA_PLATFORM=m
-# CONFIG_I2C_PXA_PCI is not set
-CONFIG_I2C_SIMTEC=m
-CONFIG_I2C_XILINX=m
-
-#
-# External I2C/SMBus adapter drivers
-#
-CONFIG_I2C_DIOLAN_U2C=m
-CONFIG_I2C_PARPORT=m
-CONFIG_I2C_PARPORT_LIGHT=m
-CONFIG_I2C_TAOS_EVM=m
-CONFIG_I2C_TINY_USB=m
-
-#
-# Other I2C/SMBus bus drivers
-#
-CONFIG_I2C_STUB=m
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_SPI is not set
-
-#
-# PPS support
-#
-CONFIG_PPS=m
-# CONFIG_PPS_DEBUG is not set
-
-#
-# PPS clients support
-#
-# CONFIG_PPS_CLIENT_KTIMER is not set
-# CONFIG_PPS_CLIENT_LDISC is not set
-# CONFIG_PPS_CLIENT_PARPORT is not set
-# CONFIG_PPS_CLIENT_GPIO is not set
-
-#
-# PPS generators support
-#
-
-#
-# PTP clock support
-#
-CONFIG_PTP_1588_CLOCK=m
-CONFIG_DP83640_PHY=m
-CONFIG_ARCH_REQUIRE_GPIOLIB=y
-CONFIG_GPIOLIB=y
-# CONFIG_DEBUG_GPIO is not set
-CONFIG_GPIO_SYSFS=y
-CONFIG_GPIO_GENERIC=m
-CONFIG_GPIO_MAX730X=m
-
-#
-# Memory mapped GPIO drivers:
-#
-CONFIG_GPIO_GENERIC_PLATFORM=m
-CONFIG_GPIO_IT8761E=m
-
-#
-# I2C GPIO expanders:
-#
-CONFIG_GPIO_MAX7300=m
-CONFIG_GPIO_MAX732X=m
-CONFIG_GPIO_PCF857X=m
-# CONFIG_GPIO_SX150X is not set
-CONFIG_GPIO_TWL4030=m
-CONFIG_GPIO_ADP5588=m
-
-#
-# PCI GPIO expanders:
-#
-
-#
-# SPI GPIO expanders:
-#
-CONFIG_GPIO_MCP23S08=m
-
-#
-# AC97 GPIO expanders:
-#
-
-#
-# MODULbus GPIO expanders:
-#
-CONFIG_W1=m
-CONFIG_W1_CON=y
-
-#
-# 1-wire Bus Masters
-#
-CONFIG_W1_MASTER_DS2490=m
-CONFIG_W1_MASTER_DS2482=m
-CONFIG_W1_MASTER_DS1WM=m
-CONFIG_W1_MASTER_GPIO=m
-CONFIG_HDQ_MASTER_OMAP=m
-
-#
-# 1-wire Slaves
-#
-CONFIG_W1_SLAVE_THERM=m
-CONFIG_W1_SLAVE_SMEM=m
-CONFIG_W1_SLAVE_DS2408=m
-CONFIG_W1_SLAVE_DS2423=m
-CONFIG_W1_SLAVE_DS2431=m
-CONFIG_W1_SLAVE_DS2433=m
-CONFIG_W1_SLAVE_DS2433_CRC=y
-CONFIG_W1_SLAVE_DS2760=m
-CONFIG_W1_SLAVE_DS2780=m
-CONFIG_W1_SLAVE_BQ27000=m
-CONFIG_POWER_SUPPLY=y
-# CONFIG_POWER_SUPPLY_DEBUG is not set
-# CONFIG_PDA_POWER is not set
-# CONFIG_TEST_POWER is not set
-# CONFIG_BATTERY_DS2760 is not set
-# CONFIG_BATTERY_DS2780 is not set
-# CONFIG_BATTERY_DS2782 is not set
-# CONFIG_BATTERY_BQ20Z75 is not set
-# CONFIG_BATTERY_BQ27x00 is not set
-# CONFIG_BATTERY_MAX17040 is not set
-# CONFIG_BATTERY_MAX17042 is not set
-# CONFIG_CHARGER_PCF50633 is not set
-# CONFIG_CHARGER_ISP1704 is not set
-# CONFIG_CHARGER_MAX8903 is not set
-CONFIG_CHARGER_TWL4030=m
-CONFIG_CHARGER_GPIO=m
-CONFIG_HWMON=m
-CONFIG_HWMON_VID=m
-# CONFIG_HWMON_DEBUG_CHIP is not set
-
-#
-# Native drivers
-#
-CONFIG_SENSORS_AD7414=m
-CONFIG_SENSORS_AD7418=m
-CONFIG_SENSORS_ADM1021=m
-CONFIG_SENSORS_ADM1025=m
-CONFIG_SENSORS_ADM1026=m
-CONFIG_SENSORS_ADM1029=m
-CONFIG_SENSORS_ADM1031=m
-CONFIG_SENSORS_ADM9240=m
-CONFIG_SENSORS_ADT7411=m
-CONFIG_SENSORS_ADT7462=m
-CONFIG_SENSORS_ADT7470=m
-CONFIG_SENSORS_ADT7475=m
-CONFIG_SENSORS_ASC7621=m
-CONFIG_SENSORS_ATXP1=m
-CONFIG_SENSORS_DS620=m
-CONFIG_SENSORS_DS1621=m
-CONFIG_SENSORS_F71805F=m
-CONFIG_SENSORS_F71882FG=m
-CONFIG_SENSORS_F75375S=m
-CONFIG_SENSORS_G760A=m
-CONFIG_SENSORS_GL518SM=m
-CONFIG_SENSORS_GL520SM=m
-CONFIG_SENSORS_GPIO_FAN=m
-CONFIG_SENSORS_IBMAEM=m
-CONFIG_SENSORS_IBMPEX=m
-CONFIG_SENSORS_IT87=m
-CONFIG_SENSORS_JC42=m
-CONFIG_SENSORS_LINEAGE=m
-CONFIG_SENSORS_LM63=m
-CONFIG_SENSORS_LM73=m
-CONFIG_SENSORS_LM75=m
-CONFIG_SENSORS_LM77=m
-CONFIG_SENSORS_LM78=m
-CONFIG_SENSORS_LM80=m
-CONFIG_SENSORS_LM83=m
-CONFIG_SENSORS_LM85=m
-CONFIG_SENSORS_LM87=m
-CONFIG_SENSORS_LM90=m
-CONFIG_SENSORS_LM92=m
-CONFIG_SENSORS_LM93=m
-CONFIG_SENSORS_LTC4151=m
-CONFIG_SENSORS_LTC4215=m
-CONFIG_SENSORS_LTC4245=m
-CONFIG_SENSORS_LTC4261=m
-CONFIG_SENSORS_LM95241=m
-CONFIG_SENSORS_LM95245=m
-CONFIG_SENSORS_MAX16065=m
-CONFIG_SENSORS_MAX1619=m
-CONFIG_SENSORS_MAX1668=m
-CONFIG_SENSORS_MAX6639=m
-CONFIG_SENSORS_MAX6642=m
-CONFIG_SENSORS_MAX6650=m
-CONFIG_SENSORS_NTC_THERMISTOR=m
-CONFIG_SENSORS_PC87360=m
-CONFIG_SENSORS_PC87427=m
-CONFIG_SENSORS_PCF8591=m
-CONFIG_PMBUS=m
-CONFIG_SENSORS_PMBUS=m
-CONFIG_SENSORS_ADM1275=m
-CONFIG_SENSORS_LM25066=m
-CONFIG_SENSORS_LTC2978=m
-CONFIG_SENSORS_MAX16064=m
-CONFIG_SENSORS_MAX34440=m
-CONFIG_SENSORS_MAX8688=m
-CONFIG_SENSORS_UCD9000=m
-CONFIG_SENSORS_UCD9200=m
-CONFIG_SENSORS_ZL6100=m
-CONFIG_SENSORS_SHT15=m
-CONFIG_SENSORS_SHT21=m
-CONFIG_SENSORS_SMM665=m
-CONFIG_SENSORS_DME1737=m
-CONFIG_SENSORS_EMC1403=m
-CONFIG_SENSORS_EMC2103=m
-CONFIG_SENSORS_EMC6W201=m
-CONFIG_SENSORS_SMSC47M1=m
-CONFIG_SENSORS_SMSC47M192=m
-CONFIG_SENSORS_SMSC47B397=m
-CONFIG_SENSORS_SCH56XX_COMMON=m
-CONFIG_SENSORS_SCH5627=m
-CONFIG_SENSORS_SCH5636=m
-CONFIG_SENSORS_ADS1015=m
-CONFIG_SENSORS_ADS7828=m
-CONFIG_SENSORS_AMC6821=m
-CONFIG_SENSORS_THMC50=m
-CONFIG_SENSORS_TMP102=m
-CONFIG_SENSORS_TMP401=m
-CONFIG_SENSORS_TMP421=m
-CONFIG_SENSORS_TWL4030_MADC=m
-CONFIG_SENSORS_VT1211=m
-CONFIG_SENSORS_W83781D=m
-CONFIG_SENSORS_W83791D=m
-CONFIG_SENSORS_W83792D=m
-CONFIG_SENSORS_W83793=m
-CONFIG_SENSORS_W83795=m
-# CONFIG_SENSORS_W83795_FANCTRL is not set
-CONFIG_SENSORS_W83L785TS=m
-CONFIG_SENSORS_W83L786NG=m
-CONFIG_SENSORS_W83627HF=m
-CONFIG_SENSORS_W83627EHF=m
-CONFIG_THERMAL=y
-CONFIG_WATCHDOG=y
-CONFIG_WATCHDOG_CORE=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-
-#
-# Watchdog Device Drivers
-#
-CONFIG_SOFT_WATCHDOG=m
-CONFIG_DW_WATCHDOG=m
-CONFIG_MPCORE_WATCHDOG=m
-CONFIG_OMAP_WATCHDOG=m
-CONFIG_TWL4030_WATCHDOG=m
-CONFIG_MAX63XX_WATCHDOG=m
-
-#
-# USB-based Watchdog Cards
-#
-CONFIG_USBPCWATCHDOG=m
-CONFIG_SSB_POSSIBLE=y
-
-#
-# Sonics Silicon Backplane
-#
-CONFIG_SSB=m
-CONFIG_SSB_SDIOHOST_POSSIBLE=y
-CONFIG_SSB_SDIOHOST=y
-# CONFIG_SSB_SILENT is not set
-# CONFIG_SSB_DEBUG is not set
-CONFIG_BCMA_POSSIBLE=y
-
-#
-# Broadcom specific AMBA
-#
-CONFIG_BCMA=m
-# CONFIG_BCMA_DEBUG is not set
-
-#
-# Multifunction device drivers
-#
-CONFIG_MFD_CORE=y
-# CONFIG_MFD_88PM860X is not set
-CONFIG_MFD_SM501=m
-# CONFIG_MFD_SM501_GPIO is not set
-# CONFIG_MFD_ASIC3 is not set
-# CONFIG_HTC_EGPIO is not set
-CONFIG_HTC_PASIC3=m
-# CONFIG_HTC_I2CPLD is not set
-CONFIG_TPS6105X=m
-CONFIG_TPS65010=m
-CONFIG_TPS6507X=m
-# CONFIG_MFD_TPS6586X is not set
-# CONFIG_MFD_TPS65910 is not set
-# CONFIG_MFD_TPS65912_I2C is not set
-CONFIG_MENELAUS=y
-CONFIG_TWL4030_CORE=y
-CONFIG_TWL4030_MADC=m
-CONFIG_TWL4030_POWER=y
-CONFIG_MFD_TWL4030_AUDIO=y
-CONFIG_TWL6030_PWM=m
-CONFIG_TWL6040_CORE=y
-# CONFIG_MFD_STMPE is not set
-# CONFIG_MFD_TC3589X is not set
-# CONFIG_MFD_TMIO is not set
-# CONFIG_MFD_T7L66XB is not set
-# CONFIG_MFD_TC6387XB is not set
-# CONFIG_MFD_TC6393XB is not set
-# CONFIG_PMIC_DA903X is not set
-# CONFIG_PMIC_ADP5520 is not set
-# CONFIG_MFD_MAX8925 is not set
-# CONFIG_MFD_MAX8997 is not set
-# CONFIG_MFD_MAX8998 is not set
-CONFIG_MFD_WM8400=m
-# CONFIG_MFD_WM831X_I2C is not set
-# CONFIG_MFD_WM8350_I2C is not set
-# CONFIG_MFD_WM8994 is not set
-CONFIG_MFD_PCF50633=m
-CONFIG_PCF50633_ADC=m
-CONFIG_PCF50633_GPIO=m
-# CONFIG_ABX500_CORE is not set
-CONFIG_MFD_WL1273_CORE=m
-CONFIG_MFD_OMAP_USB_HOST=y
-# CONFIG_MFD_AAT2870_CORE is not set
-CONFIG_REGULATOR=y
-# CONFIG_REGULATOR_DEBUG is not set
-# CONFIG_REGULATOR_DUMMY is not set
-CONFIG_REGULATOR_FIXED_VOLTAGE=y
-# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
-# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
-CONFIG_REGULATOR_GPIO=m
-# CONFIG_REGULATOR_BQ24022 is not set
-# CONFIG_REGULATOR_MAX1586 is not set
-# CONFIG_REGULATOR_MAX8649 is not set
-# CONFIG_REGULATOR_MAX8660 is not set
-# CONFIG_REGULATOR_MAX8952 is not set
-CONFIG_REGULATOR_TWL4030=y
-# CONFIG_REGULATOR_WM8400 is not set
-# CONFIG_REGULATOR_PCF50633 is not set
-# CONFIG_REGULATOR_LP3971 is not set
-# CONFIG_REGULATOR_LP3972 is not set
-# CONFIG_REGULATOR_TPS6105X is not set
-# CONFIG_REGULATOR_TPS65023 is not set
-# CONFIG_REGULATOR_TPS6507X is not set
-# CONFIG_REGULATOR_ISL6271A is not set
-# CONFIG_REGULATOR_AD5398 is not set
-CONFIG_MEDIA_SUPPORT=m
-
-#
-# Multimedia core support
-#
-CONFIG_MEDIA_CONTROLLER=y
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L2_COMMON=m
-CONFIG_VIDEO_V4L2_SUBDEV_API=y
-CONFIG_DVB_CORE=m
-CONFIG_DVB_NET=y
-CONFIG_VIDEO_MEDIA=m
-
-#
-# Multimedia drivers
-#
-CONFIG_RC_CORE=m
-CONFIG_LIRC=m
-CONFIG_RC_MAP=m
-# CONFIG_IR_NEC_DECODER is not set
-# CONFIG_IR_RC5_DECODER is not set
-# CONFIG_IR_RC6_DECODER is not set
-# CONFIG_IR_JVC_DECODER is not set
-# CONFIG_IR_SONY_DECODER is not set
-# CONFIG_IR_RC5_SZ_DECODER is not set
-# CONFIG_IR_MCE_KBD_DECODER is not set
-# CONFIG_IR_LIRC_CODEC is not set
-# CONFIG_RC_ATI_REMOTE is not set
-# CONFIG_IR_IMON is not set
-# CONFIG_IR_MCEUSB is not set
-# CONFIG_IR_REDRAT3 is not set
-# CONFIG_IR_STREAMZAP is not set
-# CONFIG_RC_LOOPBACK is not set
-CONFIG_MEDIA_ATTACH=y
-CONFIG_MEDIA_TUNER=m
-# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
-CONFIG_MEDIA_TUNER_SIMPLE=m
-CONFIG_MEDIA_TUNER_TDA8290=m
-CONFIG_MEDIA_TUNER_TDA827X=m
-CONFIG_MEDIA_TUNER_TDA18271=m
-CONFIG_MEDIA_TUNER_TDA9887=m
-CONFIG_MEDIA_TUNER_TEA5761=m
-CONFIG_MEDIA_TUNER_TEA5767=m
-CONFIG_MEDIA_TUNER_MT20XX=m
-CONFIG_MEDIA_TUNER_XC2028=m
-CONFIG_MEDIA_TUNER_XC5000=m
-CONFIG_MEDIA_TUNER_XC4000=m
-CONFIG_MEDIA_TUNER_MC44S803=m
-CONFIG_VIDEO_V4L2=m
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
-# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set
-CONFIG_VIDEO_IR_I2C=m
-
-#
-# Encoders, decoders, sensors and other helper chips
-#
-
-#
-# Audio decoders, processors and mixers
-#
-# CONFIG_VIDEO_TVAUDIO is not set
-# CONFIG_VIDEO_TDA7432 is not set
-# CONFIG_VIDEO_TDA9840 is not set
-# CONFIG_VIDEO_TEA6415C is not set
-# CONFIG_VIDEO_TEA6420 is not set
-# CONFIG_VIDEO_MSP3400 is not set
-# CONFIG_VIDEO_CS5345 is not set
-# CONFIG_VIDEO_CS53L32A is not set
-# CONFIG_VIDEO_TLV320AIC23B is not set
-# CONFIG_VIDEO_WM8775 is not set
-# CONFIG_VIDEO_WM8739 is not set
-# CONFIG_VIDEO_VP27SMPX is not set
-
-#
-# RDS decoders
-#
-# CONFIG_VIDEO_SAA6588 is not set
-
-#
-# Video decoders
-#
-# CONFIG_VIDEO_ADV7180 is not set
-# CONFIG_VIDEO_BT819 is not set
-# CONFIG_VIDEO_BT856 is not set
-# CONFIG_VIDEO_BT866 is not set
-# CONFIG_VIDEO_KS0127 is not set
-# CONFIG_VIDEO_SAA7110 is not set
-# CONFIG_VIDEO_SAA711X is not set
-# CONFIG_VIDEO_SAA7191 is not set
-# CONFIG_VIDEO_TVP514X is not set
-# CONFIG_VIDEO_TVP5150 is not set
-# CONFIG_VIDEO_TVP7002 is not set
-# CONFIG_VIDEO_VPX3220 is not set
-
-#
-# Video and audio decoders
-#
-# CONFIG_VIDEO_SAA717X is not set
-# CONFIG_VIDEO_CX25840 is not set
-
-#
-# MPEG video encoders
-#
-# CONFIG_VIDEO_CX2341X is not set
-
-#
-# Video encoders
-#
-# CONFIG_VIDEO_SAA7127 is not set
-# CONFIG_VIDEO_SAA7185 is not set
-# CONFIG_VIDEO_ADV7170 is not set
-# CONFIG_VIDEO_ADV7175 is not set
-# CONFIG_VIDEO_ADV7343 is not set
-# CONFIG_VIDEO_AK881X is not set
-
-#
-# Camera sensor devices
-#
-# CONFIG_VIDEO_OV7670 is not set
-# CONFIG_VIDEO_MT9P031 is not set
-# CONFIG_VIDEO_MT9T001 is not set
-# CONFIG_VIDEO_MT9V011 is not set
-# CONFIG_VIDEO_MT9V032 is not set
-# CONFIG_VIDEO_TCM825X is not set
-# CONFIG_VIDEO_SR030PC30 is not set
-# CONFIG_VIDEO_NOON010PC30 is not set
-# CONFIG_VIDEO_M5MOLS is not set
-# CONFIG_VIDEO_S5K6AA is not set
-
-#
-# Flash devices
-#
-# CONFIG_VIDEO_ADP1653 is not set
-
-#
-# Video improvement chips
-#
-# CONFIG_VIDEO_UPD64031A is not set
-# CONFIG_VIDEO_UPD64083 is not set
-
-#
-# Miscelaneous helper chips
-#
-# CONFIG_VIDEO_THS7303 is not set
-# CONFIG_VIDEO_M52790 is not set
-# CONFIG_VIDEO_VIVI is not set
-# CONFIG_VIDEO_VPFE_CAPTURE is not set
-# CONFIG_VIDEO_OMAP2_VOUT is not set
-# CONFIG_VIDEO_BWQCAM is not set
-# CONFIG_VIDEO_CQCAM is not set
-# CONFIG_VIDEO_W9966 is not set
-# CONFIG_VIDEO_CPIA2 is not set
-# CONFIG_VIDEO_TIMBERDALE is not set
-# CONFIG_VIDEO_AU0828 is not set
-# CONFIG_SOC_CAMERA is not set
-# CONFIG_VIDEO_OMAP2 is not set
-# CONFIG_V4L_USB_DRIVERS is not set
-# CONFIG_V4L_MEM2MEM_DRIVERS is not set
-CONFIG_RADIO_ADAPTERS=y
-# CONFIG_I2C_SI4713 is not set
-# CONFIG_RADIO_SI4713 is not set
-# CONFIG_USB_DSBR is not set
-# CONFIG_RADIO_SI470X is not set
-# CONFIG_USB_MR800 is not set
-# CONFIG_RADIO_TEA5764 is not set
-# CONFIG_RADIO_SAA7706H is not set
-# CONFIG_RADIO_TEF6862 is not set
-# CONFIG_RADIO_WL1273 is not set
-
-#
-# Texas Instruments WL128x FM driver (ST based)
-#
-CONFIG_RADIO_WL128X=m
-CONFIG_DVB_MAX_ADAPTERS=8
-# CONFIG_DVB_DYNAMIC_MINORS is not set
-CONFIG_DVB_CAPTURE_DRIVERS=y
-# CONFIG_TTPCI_EEPROM is not set
-
-#
-# Supported USB Adapters
-#
-# CONFIG_DVB_USB is not set
-# CONFIG_SMS_SIANO_MDTV is not set
-
-#
-# Supported FlexCopII (B2C2) Adapters
-#
-# CONFIG_DVB_B2C2_FLEXCOP is not set
-
-#
-# Supported DVB Frontends
-#
-# CONFIG_DVB_FE_CUSTOMISE is not set
-
-#
-# Multistandard (satellite) frontends
-#
-
-#
-# Multistandard (cable + terrestrial) frontends
-#
-
-#
-# DVB-S (satellite) frontends
-#
-
-#
-# DVB-T (terrestrial) frontends
-#
-
-#
-# DVB-C (cable) frontends
-#
-
-#
-# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
-#
-
-#
-# ISDB-T (terrestrial) frontends
-#
-
-#
-# Digital terrestrial only tuners/PLL
-#
-
-#
-# SEC control devices for DVB-S
-#
-
-#
-# Tools to develop new frontends
-#
-# CONFIG_DVB_DUMMY_FE is not set
-
-#
-# Graphics support
-#
-CONFIG_DRM=m
-# CONFIG_VGASTATE is not set
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-CONFIG_FB=y
-CONFIG_FIRMWARE_EDID=y
-# CONFIG_FB_DDC is not set
-# CONFIG_FB_BOOT_VESA_SUPPORT is not set
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-CONFIG_FB_SYS_FILLRECT=m
-CONFIG_FB_SYS_COPYAREA=m
-CONFIG_FB_SYS_IMAGEBLIT=m
-# CONFIG_FB_FOREIGN_ENDIAN is not set
-CONFIG_FB_SYS_FOPS=m
-# CONFIG_FB_WMT_GE_ROPS is not set
-CONFIG_FB_DEFERRED_IO=y
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-CONFIG_FB_MODE_HELPERS=y
-CONFIG_FB_TILEBLITTING=y
-
-#
-# Frame buffer hardware drivers
-#
-CONFIG_FB_UVESA=m
-# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_TMIO=m
-CONFIG_FB_TMIO_ACCELL=y
-CONFIG_FB_SM501=m
-CONFIG_FB_SMSCUFX=m
-# CONFIG_FB_UDL is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_FB_METRONOME=m
-# CONFIG_FB_BROADSHEET is not set
-# CONFIG_FB_OMAP_BOOTLOADER_INIT is not set
-CONFIG_OMAP2_VRAM=y
-CONFIG_OMAP2_VRFB=y
-CONFIG_OMAP2_DSS=y
-CONFIG_OMAP2_VRAM_SIZE=32
-CONFIG_OMAP2_DSS_DEBUG_SUPPORT=y
-# CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS is not set
-CONFIG_OMAP2_DSS_DPI=y
-# CONFIG_OMAP2_DSS_RFBI is not set
-# CONFIG_OMAP2_DSS_VENC is not set
-CONFIG_OMAP4_DSS_HDMI=y
-# CONFIG_OMAP2_DSS_SDI is not set
-CONFIG_OMAP2_DSS_DSI=y
-# CONFIG_OMAP2_DSS_FAKE_VSYNC is not set
-CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=0
-CONFIG_OMAP2_DSS_SLEEP_AFTER_VENC_RESET=y
-CONFIG_FB_OMAP2=y
-CONFIG_FB_OMAP2_DEBUG_SUPPORT=y
-CONFIG_FB_OMAP2_NUM_FBS=3
-
-#
-# OMAP2/3 Display Device Drivers
-#
-CONFIG_PANEL_GENERIC_DPI=y
-CONFIG_PANEL_DVI=y
-CONFIG_PANEL_SHARP_LS037V7DW01=y
-# CONFIG_PANEL_PICODLP is not set
-CONFIG_PANEL_TAAL=y
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_LCD_CLASS_DEVICE=m
-CONFIG_LCD_PLATFORM=m
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_GENERIC=y
-CONFIG_BACKLIGHT_PWM=m
-CONFIG_BACKLIGHT_ADP8860=m
-CONFIG_BACKLIGHT_ADP8870=m
-CONFIG_BACKLIGHT_PCF50633=m
-
-#
-# Display device support
-#
-CONFIG_DISPLAY_SUPPORT=y
-
-#
-# Display hardware drivers
-#
-
-#
-# Console display driver support
-#
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-CONFIG_FONTS=y
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-CONFIG_LOGO_LINUX_CLUT224=y
-CONFIG_SOUND=m
-CONFIG_SOUND_OSS_CORE=y
-CONFIG_SOUND_OSS_CORE_PRECLAIM=y
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-CONFIG_SND_HWDEP=m
-CONFIG_SND_RAWMIDI=m
-CONFIG_SND_JACK=y
-CONFIG_SND_SEQUENCER=m
-CONFIG_SND_SEQ_DUMMY=m
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-CONFIG_SND_SEQUENCER_OSS=y
-CONFIG_SND_HRTIMER=m
-CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
-CONFIG_SND_DYNAMIC_MINORS=y
-# CONFIG_SND_SUPPORT_OLD_API is not set
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-CONFIG_SND_RAWMIDI_SEQ=m
-# CONFIG_SND_OPL3_LIB_SEQ is not set
-# CONFIG_SND_OPL4_LIB_SEQ is not set
-# CONFIG_SND_SBAWE_SEQ is not set
-# CONFIG_SND_EMU10K1_SEQ is not set
-CONFIG_SND_MPU401_UART=m
-CONFIG_SND_DRIVERS=y
-CONFIG_SND_DUMMY=m
-CONFIG_SND_ALOOP=m
-CONFIG_SND_VIRMIDI=m
-CONFIG_SND_MTPAV=m
-CONFIG_SND_MTS64=m
-CONFIG_SND_SERIAL_U16550=m
-CONFIG_SND_MPU401=m
-CONFIG_SND_PORTMAN2X4=m
-CONFIG_SND_ARM=y
-CONFIG_SND_USB=y
-CONFIG_SND_USB_AUDIO=m
-CONFIG_SND_USB_UA101=m
-CONFIG_SND_USB_CAIAQ=m
-CONFIG_SND_USB_CAIAQ_INPUT=y
-CONFIG_SND_USB_6FIRE=m
-CONFIG_SND_SOC=m
-CONFIG_SND_SOC_CACHE_LZO=y
-CONFIG_SND_OMAP_SOC=m
-CONFIG_SND_OMAP_SOC_MCBSP=m
-CONFIG_SND_OMAP_SOC_MCPDM=m
-CONFIG_SND_OMAP_SOC_RX51=m
-CONFIG_SND_OMAP_SOC_OVERO=m
-CONFIG_SND_OMAP_SOC_OMAP3EVM=m
-CONFIG_SND_OMAP_SOC_AM3517EVM=m
-CONFIG_SND_OMAP_SOC_SDP3430=m
-CONFIG_SND_OMAP_SOC_SDP4430=m
-# CONFIG_SND_OMAP_SOC_OMAP4_HDMI is not set
-CONFIG_SND_OMAP_SOC_OMAP3_PANDORA=m
-CONFIG_SND_OMAP_SOC_OMAP3_BEAGLE=m
-CONFIG_SND_OMAP_SOC_ZOOM2=m
-CONFIG_SND_OMAP_SOC_IGEP0020=m
-CONFIG_SND_SOC_I2C_AND_SPI=m
-# CONFIG_SND_SOC_ALL_CODECS is not set
-CONFIG_SND_SOC_TLV320AIC23=m
-CONFIG_SND_SOC_TLV320AIC3X=m
-CONFIG_SND_SOC_TWL4030=m
-CONFIG_SND_SOC_TWL6040=m
-CONFIG_SND_SOC_TPA6130A2=m
-# CONFIG_SOUND_PRIME is not set
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=y
-# CONFIG_HIDRAW is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-# CONFIG_HID_PID is not set
-CONFIG_USB_HIDDEV=y
-
-#
-# USB HID Boot Protocol drivers
-#
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-
-#
-# Special HID drivers
-#
-CONFIG_HID_A4TECH=m
-CONFIG_HID_ACRUX=m
-# CONFIG_HID_ACRUX_FF is not set
-CONFIG_HID_APPLE=m
-CONFIG_HID_BELKIN=m
-CONFIG_HID_CHERRY=m
-CONFIG_HID_CHICONY=m
-CONFIG_HID_PRODIKEYS=m
-CONFIG_HID_CYPRESS=m
-CONFIG_HID_DRAGONRISE=m
-# CONFIG_DRAGONRISE_FF is not set
-# CONFIG_HID_EMS_FF is not set
-CONFIG_HID_ELECOM=m
-CONFIG_HID_EZKEY=m
-CONFIG_HID_HOLTEK=m
-# CONFIG_HOLTEK_FF is not set
-CONFIG_HID_KEYTOUCH=m
-CONFIG_HID_KYE=m
-CONFIG_HID_UCLOGIC=m
-CONFIG_HID_WALTOP=m
-CONFIG_HID_GYRATION=m
-CONFIG_HID_TWINHAN=m
-CONFIG_HID_KENSINGTON=m
-CONFIG_HID_LCPOWER=m
-CONFIG_HID_LOGITECH=m
-CONFIG_HID_LOGITECH_DJ=m
-# CONFIG_LOGITECH_FF is not set
-# CONFIG_LOGIRUMBLEPAD2_FF is not set
-# CONFIG_LOGIG940_FF is not set
-# CONFIG_LOGIWHEELS_FF is not set
-CONFIG_HID_MAGICMOUSE=m
-CONFIG_HID_MICROSOFT=m
-CONFIG_HID_MONTEREY=m
-CONFIG_HID_MULTITOUCH=m
-CONFIG_HID_NTRIG=m
-CONFIG_HID_ORTEK=m
-CONFIG_HID_PANTHERLORD=m
-# CONFIG_PANTHERLORD_FF is not set
-CONFIG_HID_PETALYNX=m
-CONFIG_HID_PICOLCD=m
-CONFIG_HID_PICOLCD_FB=y
-CONFIG_HID_PICOLCD_BACKLIGHT=y
-CONFIG_HID_PICOLCD_LCD=y
-CONFIG_HID_PICOLCD_LEDS=y
-CONFIG_HID_PRIMAX=m
-CONFIG_HID_QUANTA=m
-CONFIG_HID_ROCCAT=m
-CONFIG_HID_ROCCAT_COMMON=m
-CONFIG_HID_ROCCAT_ARVO=m
-CONFIG_HID_ROCCAT_KONE=m
-CONFIG_HID_ROCCAT_KONEPLUS=m
-CONFIG_HID_ROCCAT_KOVAPLUS=m
-CONFIG_HID_ROCCAT_PYRA=m
-CONFIG_HID_SAMSUNG=m
-CONFIG_HID_SONY=m
-CONFIG_HID_SPEEDLINK=m
-CONFIG_HID_SUNPLUS=m
-CONFIG_HID_GREENASIA=m
-# CONFIG_GREENASIA_FF is not set
-CONFIG_HID_SMARTJOYPLUS=m
-# CONFIG_SMARTJOYPLUS_FF is not set
-CONFIG_HID_TOPSEED=m
-CONFIG_HID_THRUSTMASTER=m
-# CONFIG_THRUSTMASTER_FF is not set
-CONFIG_HID_WACOM=m
-# CONFIG_HID_WACOM_POWER_SUPPLY is not set
-CONFIG_HID_WIIMOTE=m
-CONFIG_HID_ZEROPLUS=m
-# CONFIG_ZEROPLUS_FF is not set
-CONFIG_HID_ZYDACRON=m
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_COMMON=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-# CONFIG_USB_ARCH_HAS_XHCI is not set
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-CONFIG_USB_DEVICE_CLASS=y
-CONFIG_USB_DYNAMIC_MINORS=y
-CONFIG_USB_SUSPEND=y
-# CONFIG_USB_OTG is not set
-# CONFIG_USB_OTG_WHITELIST is not set
-# CONFIG_USB_OTG_BLACKLIST_HUB is not set
-CONFIG_USB_DWC3=m
-# CONFIG_USB_DWC3_DEBUG is not set
-# CONFIG_USB_MON is not set
-# CONFIG_USB_WUSB is not set
-# CONFIG_USB_WUSB_CBAF is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_C67X00_HCD is not set
-CONFIG_USB_EHCI_HCD=y
-CONFIG_USB_EHCI_ROOT_HUB_TT=y
-CONFIG_USB_EHCI_TT_NEWSCHED=y
-CONFIG_USB_EHCI_HCD_OMAP=y
-CONFIG_USB_OXU210HP_HCD=m
-CONFIG_USB_ISP116X_HCD=m
-# CONFIG_USB_ISP1760_HCD is not set
-CONFIG_USB_ISP1362_HCD=m
-CONFIG_USB_OHCI_HCD=y
-CONFIG_USB_OHCI_HCD_OMAP1=y
-CONFIG_USB_OHCI_HCD_OMAP3=y
-# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
-# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_U132_HCD=m
-CONFIG_USB_SL811_HCD=m
-# CONFIG_USB_SL811_HCD_ISO is not set
-CONFIG_USB_R8A66597_HCD=m
-# CONFIG_USB_HWA_HCD is not set
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-CONFIG_USB_WDM=m
-CONFIG_USB_TMC=m
-
-#
-# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
-#
-
-#
-# also be needed; see USB_STORAGE Help for more info
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-CONFIG_USB_STORAGE_REALTEK=m
-CONFIG_REALTEK_AUTOPM=y
-CONFIG_USB_STORAGE_DATAFAB=m
-CONFIG_USB_STORAGE_FREECOM=m
-CONFIG_USB_STORAGE_ISD200=m
-CONFIG_USB_STORAGE_USBAT=m
-CONFIG_USB_STORAGE_SDDR09=m
-CONFIG_USB_STORAGE_SDDR55=m
-CONFIG_USB_STORAGE_JUMPSHOT=m
-CONFIG_USB_STORAGE_ALAUDA=m
-CONFIG_USB_STORAGE_ONETOUCH=m
-CONFIG_USB_STORAGE_KARMA=m
-CONFIG_USB_STORAGE_CYPRESS_ATACB=m
-CONFIG_USB_STORAGE_ENE_UB6250=m
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-
-#
-# USB port drivers
-#
-CONFIG_USB_USS720=m
-CONFIG_USB_SERIAL=m
-CONFIG_USB_EZUSB=y
-CONFIG_USB_SERIAL_GENERIC=y
-CONFIG_USB_SERIAL_AIRCABLE=m
-CONFIG_USB_SERIAL_ARK3116=m
-CONFIG_USB_SERIAL_BELKIN=m
-CONFIG_USB_SERIAL_CH341=m
-CONFIG_USB_SERIAL_WHITEHEAT=m
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-CONFIG_USB_SERIAL_CP210X=m
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_FUNSOFT=m
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_IUU=m
-# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
-# CONFIG_USB_SERIAL_KEYSPAN is not set
-# CONFIG_USB_SERIAL_KLSI is not set
-# CONFIG_USB_SERIAL_KOBIL_SCT is not set
-CONFIG_USB_SERIAL_MCT_U232=m
-CONFIG_USB_SERIAL_MOS7720=m
-# CONFIG_USB_SERIAL_MOS7715_PARPORT is not set
-CONFIG_USB_SERIAL_MOS7840=m
-CONFIG_USB_SERIAL_MOTOROLA=m
-# CONFIG_USB_SERIAL_NAVMAN is not set
-CONFIG_USB_SERIAL_PL2303=m
-CONFIG_USB_SERIAL_OTI6858=m
-CONFIG_USB_SERIAL_QCAUX=m
-CONFIG_USB_SERIAL_QUALCOMM=m
-CONFIG_USB_SERIAL_SPCP8X5=m
-CONFIG_USB_SERIAL_HP4X=m
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-CONFIG_USB_SERIAL_SIEMENS_MPI=m
-CONFIG_USB_SERIAL_SIERRAWIRELESS=m
-CONFIG_USB_SERIAL_SYMBOL=m
-CONFIG_USB_SERIAL_TI=m
-# CONFIG_USB_SERIAL_CYBERJACK is not set
-CONFIG_USB_SERIAL_XIRCOM=m
-CONFIG_USB_SERIAL_WWAN=m
-CONFIG_USB_SERIAL_OPTION=m
-# CONFIG_USB_SERIAL_OMNINET is not set
-CONFIG_USB_SERIAL_OPTICON=m
-CONFIG_USB_SERIAL_VIVOPAY_SERIAL=m
-CONFIG_USB_SERIAL_ZIO=m
-CONFIG_USB_SERIAL_SSU100=m
-# CONFIG_USB_SERIAL_DEBUG is not set
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-# CONFIG_USB_ADUTUX is not set
-CONFIG_USB_SEVSEG=m
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYPRESS_CY7C63=m
-CONFIG_USB_CYTHERM=m
-# CONFIG_USB_IDMOUSE is not set
-CONFIG_USB_FTDI_ELAN=m
-# CONFIG_USB_APPLEDISPLAY is not set
-CONFIG_USB_SISUSBVGA=m
-CONFIG_USB_SISUSBVGA_CON=y
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-CONFIG_USB_IOWARRIOR=m
-# CONFIG_USB_TEST is not set
-CONFIG_USB_ISIGHTFW=m
-CONFIG_USB_YUREX=m
-CONFIG_USB_ATM=m
-CONFIG_USB_SPEEDTOUCH=m
-CONFIG_USB_CXACRU=m
-CONFIG_USB_UEAGLEATM=m
-CONFIG_USB_XUSBATM=m
-# CONFIG_USB_GADGET is not set
-
-#
-# OTG and related infrastructure
-#
-CONFIG_USB_OTG_UTILS=y
-CONFIG_USB_GPIO_VBUS=m
-# CONFIG_ISP1301_OMAP is not set
-# CONFIG_USB_ULPI is not set
-CONFIG_TWL4030_USB=m
-CONFIG_TWL6030_USB=m
-# CONFIG_NOP_USB_XCEIV is not set
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-# CONFIG_MMC_UNSAFE_RESUME is not set
-# CONFIG_MMC_CLKGATE is not set
-
-#
-# MMC/SD/SDIO Card Drivers
-#
-CONFIG_MMC_BLOCK=m
-CONFIG_MMC_BLOCK_MINORS=8
-CONFIG_MMC_BLOCK_BOUNCE=y
-CONFIG_SDIO_UART=m
-CONFIG_MMC_TEST=m
-
-#
-# MMC/SD/SDIO Host Controller Drivers
-#
-CONFIG_MMC_SDHCI=m
-CONFIG_MMC_SDHCI_PLTFM=m
-# CONFIG_MMC_SDHCI_PXAV3 is not set
-# CONFIG_MMC_SDHCI_PXAV2 is not set
-CONFIG_MMC_OMAP=y
-CONFIG_MMC_OMAP_HS=y
-CONFIG_MMC_DW=m
-# CONFIG_MMC_DW_IDMAC is not set
-CONFIG_MMC_VUB300=m
-CONFIG_MMC_USHC=m
-CONFIG_MEMSTICK=m
-# CONFIG_MEMSTICK_DEBUG is not set
-
-#
-# MemoryStick drivers
-#
-# CONFIG_MEMSTICK_UNSAFE_RESUME is not set
-CONFIG_MSPRO_BLOCK=m
-
-#
-# MemoryStick Host Controller Drivers
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-CONFIG_LEDS_LM3530=m
-CONFIG_LEDS_PCA9532=m
-CONFIG_LEDS_PCA9532_GPIO=y
-CONFIG_LEDS_GPIO=m
-CONFIG_LEDS_LP3944=m
-CONFIG_LEDS_LP5521=m
-CONFIG_LEDS_LP5523=m
-CONFIG_LEDS_PCA955X=m
-# CONFIG_LEDS_PWM is not set
-CONFIG_LEDS_REGULATOR=m
-CONFIG_LEDS_BD2802=m
-CONFIG_LEDS_LT3593=m
-# CONFIG_LEDS_RENESAS_TPU is not set
-CONFIG_LEDS_TRIGGERS=y
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGER_TIMER=m
-CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-CONFIG_LEDS_TRIGGER_BACKLIGHT=m
-CONFIG_LEDS_TRIGGER_GPIO=m
-CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
-
-#
-# iptables trigger is under Netfilter config (LED target)
-#
-CONFIG_LEDS_TRIGGER_NETDEV=m
-# CONFIG_ACCESSIBILITY is not set
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-# CONFIG_RTC_DEBUG is not set
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# I2C RTC drivers
-#
-CONFIG_RTC_DRV_DS1307=m
-CONFIG_RTC_DRV_DS1374=m
-CONFIG_RTC_DRV_DS1672=m
-CONFIG_RTC_DRV_DS3232=m
-CONFIG_RTC_DRV_MAX6900=m
-CONFIG_RTC_DRV_RS5C372=m
-CONFIG_RTC_DRV_ISL1208=m
-CONFIG_RTC_DRV_ISL12022=m
-CONFIG_RTC_DRV_X1205=m
-CONFIG_RTC_DRV_PCF8563=m
-CONFIG_RTC_DRV_PCF8583=m
-CONFIG_RTC_DRV_M41T80=m
-CONFIG_RTC_DRV_M41T80_WDT=y
-CONFIG_RTC_DRV_BQ32K=y
-CONFIG_RTC_DRV_TWL92330=y
-CONFIG_RTC_DRV_TWL4030=y
-CONFIG_RTC_DRV_S35390A=m
-CONFIG_RTC_DRV_FM3130=m
-CONFIG_RTC_DRV_RX8581=m
-CONFIG_RTC_DRV_RX8025=m
-CONFIG_RTC_DRV_EM3027=m
-CONFIG_RTC_DRV_RV3029C2=m
-
-#
-# SPI RTC drivers
-#
-
-#
-# Platform RTC drivers
-#
-CONFIG_RTC_DRV_CMOS=m
-CONFIG_RTC_DRV_DS1286=m
-CONFIG_RTC_DRV_DS1511=m
-CONFIG_RTC_DRV_DS1553=m
-CONFIG_RTC_DRV_DS1742=m
-CONFIG_RTC_DRV_STK17TA8=m
-CONFIG_RTC_DRV_M48T86=m
-CONFIG_RTC_DRV_M48T35=m
-CONFIG_RTC_DRV_M48T59=m
-CONFIG_RTC_DRV_MSM6242=m
-CONFIG_RTC_DRV_BQ4802=y
-CONFIG_RTC_DRV_RP5C01=m
-CONFIG_RTC_DRV_V3020=m
-CONFIG_RTC_DRV_PCF50633=m
-
-#
-# on-CPU RTC drivers
-#
-CONFIG_DMADEVICES=y
-# CONFIG_DMADEVICES_DEBUG is not set
-
-#
-# DMA Devices
-#
-CONFIG_DW_DMAC=m
-CONFIG_TIMB_DMA=m
-CONFIG_DMA_ENGINE=y
-
-#
-# DMA Clients
-#
-CONFIG_NET_DMA=y
-CONFIG_ASYNC_TX_DMA=y
-CONFIG_DMATEST=m
-# CONFIG_AUXDISPLAY is not set
-CONFIG_UIO=m
-CONFIG_UIO_PDRV=m
-CONFIG_UIO_PDRV_GENIRQ=m
-
-#
-# Virtio drivers
-#
-# CONFIG_VIRTIO_BALLOON is not set
-# CONFIG_VIRTIO_MMIO is not set
-CONFIG_STAGING=y
-CONFIG_USBIP_CORE=m
-CONFIG_USBIP_VHCI_HCD=m
-CONFIG_USBIP_HOST=m
-# CONFIG_USBIP_DEBUG is not set
-# CONFIG_W35UND is not set
-# CONFIG_PRISM2_USB is not set
-# CONFIG_ECHO is not set
-# CONFIG_ASUS_OLED is not set
-# CONFIG_PANEL is not set
-# CONFIG_R8712U is not set
-# CONFIG_RTS5139 is not set
-# CONFIG_TRANZPORT is not set
-# CONFIG_POHMELFS is not set
-# CONFIG_LINE6_USB is not set
-# CONFIG_USB_SERIAL_QUATECH2 is not set
-# CONFIG_USB_SERIAL_QUATECH_USB2 is not set
-# CONFIG_VT6656 is not set
-# CONFIG_IIO is not set
-# CONFIG_XVMALLOC is not set
-# CONFIG_ZRAM is not set
-# CONFIG_FB_SM7XX is not set
-# CONFIG_TIDSPBRIDGE is not set
-# CONFIG_USB_ENESTORAGE is not set
-# CONFIG_BCM_WIMAX is not set
-# CONFIG_FT1000 is not set
-
-#
-# Speakup console speech
-#
-# CONFIG_SPEAKUP is not set
-# CONFIG_TOUCHSCREEN_CLEARPAD_TM1217 is not set
-# CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4 is not set
-# CONFIG_STAGING_MEDIA is not set
-CONFIG_CLKDEV_LOOKUP=y
-CONFIG_HWSPINLOCK=m
-
-#
-# Hardware Spinlock drivers
-#
-CONFIG_HWSPINLOCK_OMAP=m
-CONFIG_CLKSRC_MMIO=y
-CONFIG_IOMMU_SUPPORT=y
-# CONFIG_OMAP_IOMMU is not set
-# CONFIG_VIRT_DRIVERS is not set
-# CONFIG_PM_DEVFREQ is not set
-
-#
-# File systems
-#
-# CONFIG_EXT2_FS is not set
-# CONFIG_EXT3_FS is not set
-CONFIG_EXT4_FS=y
-CONFIG_EXT4_USE_FOR_EXT23=y
-CONFIG_EXT4_FS_XATTR=y
-CONFIG_EXT4_FS_POSIX_ACL=y
-CONFIG_EXT4_FS_SECURITY=y
-# CONFIG_EXT4_DEBUG is not set
-CONFIG_JBD2=y
-CONFIG_FS_MBCACHE=y
-CONFIG_REISERFS_FS=m
-# CONFIG_REISERFS_CHECK is not set
-CONFIG_REISERFS_PROC_INFO=y
-CONFIG_REISERFS_FS_XATTR=y
-CONFIG_REISERFS_FS_POSIX_ACL=y
-CONFIG_REISERFS_FS_SECURITY=y
-CONFIG_JFS_FS=m
-CONFIG_JFS_POSIX_ACL=y
-CONFIG_JFS_SECURITY=y
-# CONFIG_JFS_DEBUG is not set
-CONFIG_JFS_STATISTICS=y
-CONFIG_XFS_FS=m
-CONFIG_XFS_QUOTA=y
-CONFIG_XFS_POSIX_ACL=y
-# CONFIG_XFS_RT is not set
-# CONFIG_XFS_DEBUG is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_BTRFS_FS is not set
-# CONFIG_NILFS2_FS is not set
-CONFIG_FS_POSIX_ACL=y
-CONFIG_EXPORTFS=m
-CONFIG_FILE_LOCKING=y
-CONFIG_FSNOTIFY=y
-CONFIG_DNOTIFY=y
-CONFIG_INOTIFY_USER=y
-CONFIG_FANOTIFY=y
-CONFIG_QUOTA=y
-CONFIG_QUOTA_NETLINK_INTERFACE=y
-CONFIG_PRINT_QUOTA_WARNING=y
-# CONFIG_QUOTA_DEBUG is not set
-CONFIG_QUOTA_TREE=m
-CONFIG_QFMT_V1=m
-CONFIG_QFMT_V2=m
-CONFIG_QUOTACTL=y
-CONFIG_AUTOFS4_FS=m
-CONFIG_FUSE_FS=m
-CONFIG_CUSE=m
-
-#
-# Caches
-#
-CONFIG_FSCACHE=m
-# CONFIG_FSCACHE_STATS is not set
-# CONFIG_FSCACHE_HISTOGRAM is not set
-# CONFIG_FSCACHE_DEBUG is not set
-# CONFIG_FSCACHE_OBJECT_LIST is not set
-CONFIG_CACHEFILES=m
-# CONFIG_CACHEFILES_DEBUG is not set
-# CONFIG_CACHEFILES_HISTOGRAM is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=m
-CONFIG_JOLIET=y
-CONFIG_ZISOFS=y
-CONFIG_UDF_FS=m
-CONFIG_UDF_NLS=y
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=m
-# CONFIG_MSDOS_FS is not set
-CONFIG_VFAT_FS=m
-CONFIG_FAT_DEFAULT_CODEPAGE=850
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_PROC_PAGE_MONITOR=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-CONFIG_TMPFS_XATTR=y
-# CONFIG_HUGETLB_PAGE is not set
-# CONFIG_CONFIGFS_FS is not set
-CONFIG_MISC_FILESYSTEMS=y
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-CONFIG_ECRYPT_FS=m
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-CONFIG_JFFS2_FS=m
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
-# CONFIG_JFFS2_SUMMARY is not set
-# CONFIG_JFFS2_FS_XATTR is not set
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-# CONFIG_JFFS2_LZO is not set
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
-# CONFIG_UBIFS_FS is not set
-# CONFIG_LOGFS is not set
-# CONFIG_CRAMFS is not set
-# CONFIG_SQUASHFS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_OMFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_ROMFS_FS is not set
-# CONFIG_PSTORE is not set
-# CONFIG_SYSV_FS is not set
-CONFIG_UFS_FS=m
-# CONFIG_UFS_FS_WRITE is not set
-# CONFIG_UFS_DEBUG is not set
-# CONFIG_EXOFS_FS is not set
-CONFIG_NETWORK_FILESYSTEMS=y
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-CONFIG_NFS_V3_ACL=y
-CONFIG_NFS_V4=y
-# CONFIG_NFS_V4_1 is not set
-# CONFIG_NFS_FSCACHE is not set
-# CONFIG_NFS_USE_LEGACY_DNS is not set
-CONFIG_NFS_USE_KERNEL_DNS=y
-# CONFIG_NFS_USE_NEW_IDMAPPER is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V2_ACL=y
-CONFIG_NFSD_V3=y
-CONFIG_NFSD_V3_ACL=y
-CONFIG_NFSD_V4=y
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_NFS_ACL_SUPPORT=m
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-CONFIG_RPCSEC_GSS_KRB5=m
-# CONFIG_CEPH_FS is not set
-CONFIG_CIFS=m
-CONFIG_CIFS_STATS=y
-CONFIG_CIFS_STATS2=y
-# CONFIG_CIFS_WEAK_PW_HASH is not set
-# CONFIG_CIFS_UPCALL is not set
-CONFIG_CIFS_XATTR=y
-CONFIG_CIFS_POSIX=y
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_DFS_UPCALL is not set
-# CONFIG_CIFS_FSCACHE is not set
-CONFIG_CIFS_ACL=y
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-CONFIG_BSD_DISKLABEL=y
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-CONFIG_LDM_PARTITION=y
-# CONFIG_LDM_DEBUG is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-CONFIG_EFI_PARTITION=y
-# CONFIG_SYSV68_PARTITION is not set
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp850"
-# CONFIG_NLS_CODEPAGE_437 is not set
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-CONFIG_NLS_CODEPAGE_850=y
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-# CONFIG_NLS_ASCII is not set
-CONFIG_NLS_ISO8859_1=y
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-CONFIG_NLS_UTF8=y
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
-# CONFIG_ENABLE_WARN_DEPRECATED is not set
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_FRAME_WARN=1024
-# CONFIG_MAGIC_SYSRQ is not set
-CONFIG_STRIP_ASM_SYMS=y
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
-# CONFIG_DEBUG_SECTION_MISMATCH is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SHIRQ is not set
-# CONFIG_LOCKUP_DETECTOR is not set
-# CONFIG_HARDLOCKUP_DETECTOR is not set
-CONFIG_DETECT_HUNG_TASK=y
-CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
-# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
-CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
-CONFIG_SCHED_DEBUG=y
-# CONFIG_SCHEDSTATS is not set
-CONFIG_TIMER_STATS=y
-# CONFIG_DEBUG_OBJECTS is not set
-# CONFIG_SLUB_DEBUG_ON is not set
-# CONFIG_SLUB_STATS is not set
-# CONFIG_DEBUG_KMEMLEAK is not set
-# CONFIG_DEBUG_RT_MUTEXES is not set
-# CONFIG_RT_MUTEX_TESTER is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_LOCK_ALLOC is not set
-# CONFIG_PROVE_LOCKING is not set
-# CONFIG_SPARSE_RCU_POINTER is not set
-# CONFIG_LOCK_STAT is not set
-# CONFIG_DEBUG_ATOMIC_SLEEP is not set
-# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
-# CONFIG_DEBUG_STACK_USAGE is not set
-# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_HIGHMEM is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_WRITECOUNT is not set
-CONFIG_DEBUG_MEMORY_INIT=y
-# CONFIG_DEBUG_LIST is not set
-# CONFIG_TEST_LIST_SORT is not set
-# CONFIG_DEBUG_SG is not set
-# CONFIG_DEBUG_NOTIFIERS is not set
-# CONFIG_DEBUG_CREDENTIALS is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_BOOT_PRINTK_DELAY is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-CONFIG_RCU_CPU_STALL_TIMEOUT=60
-# CONFIG_BACKTRACE_SELF_TEST is not set
-# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
-# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
-# CONFIG_DEBUG_PER_CPU_MAPS is not set
-# CONFIG_CPU_NOTIFIER_ERROR_INJECT is not set
-# CONFIG_FAULT_INJECTION is not set
-# CONFIG_SYSCTL_SYSCALL_CHECK is not set
-# CONFIG_DEBUG_PAGEALLOC is not set
-CONFIG_HAVE_FUNCTION_TRACER=y
-CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
-CONFIG_HAVE_DYNAMIC_FTRACE=y
-CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
-CONFIG_HAVE_C_RECORDMCOUNT=y
-CONFIG_TRACING_SUPPORT=y
-# CONFIG_FTRACE is not set
-# CONFIG_DMA_API_DEBUG is not set
-# CONFIG_ATOMIC64_SELFTEST is not set
-CONFIG_ASYNC_RAID6_TEST=m
-# CONFIG_SAMPLES is not set
-CONFIG_HAVE_ARCH_KGDB=y
-# CONFIG_KGDB is not set
-# CONFIG_TEST_KSTRTOX is not set
-# CONFIG_STRICT_DEVMEM is not set
-# CONFIG_ARM_UNWIND is not set
-# CONFIG_DEBUG_USER is not set
-CONFIG_DEBUG_LL=y
-CONFIG_DEBUG_LL_UART_NONE=y
-# CONFIG_DEBUG_ICEDCC is not set
-CONFIG_EARLY_PRINTK=y
-
-#
-# Security options
-#
-CONFIG_KEYS=y
-# CONFIG_ENCRYPTED_KEYS is not set
-# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
-# CONFIG_SECURITY_DMESG_RESTRICT is not set
-# CONFIG_SECURITY is not set
-# CONFIG_SECURITYFS is not set
-CONFIG_DEFAULT_SECURITY_DAC=y
-CONFIG_DEFAULT_SECURITY=""
-CONFIG_XOR_BLOCKS=m
-CONFIG_ASYNC_CORE=m
-CONFIG_ASYNC_MEMCPY=m
-CONFIG_ASYNC_XOR=m
-CONFIG_ASYNC_PQ=m
-CONFIG_ASYNC_RAID6_RECOV=m
-CONFIG_CRYPTO=y
-
-#
-# Crypto core or helper
-#
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_ALGAPI2=y
-CONFIG_CRYPTO_AEAD=m
-CONFIG_CRYPTO_AEAD2=y
-CONFIG_CRYPTO_BLKCIPHER=m
-CONFIG_CRYPTO_BLKCIPHER2=y
-CONFIG_CRYPTO_HASH=y
-CONFIG_CRYPTO_HASH2=y
-CONFIG_CRYPTO_RNG=m
-CONFIG_CRYPTO_RNG2=y
-CONFIG_CRYPTO_PCOMP=m
-CONFIG_CRYPTO_PCOMP2=y
-CONFIG_CRYPTO_MANAGER=y
-CONFIG_CRYPTO_MANAGER2=y
-CONFIG_CRYPTO_USER=m
-CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
-CONFIG_CRYPTO_GF128MUL=m
-# CONFIG_CRYPTO_NULL is not set
-CONFIG_CRYPTO_PCRYPT=m
-CONFIG_CRYPTO_WORKQUEUE=y
-CONFIG_CRYPTO_CRYPTD=m
-CONFIG_CRYPTO_AUTHENC=m
-# CONFIG_CRYPTO_TEST is not set
-
-#
-# Authenticated Encryption with Associated Data
-#
-CONFIG_CRYPTO_CCM=m
-CONFIG_CRYPTO_GCM=m
-CONFIG_CRYPTO_SEQIV=m
-
-#
-# Block modes
-#
-CONFIG_CRYPTO_CBC=m
-CONFIG_CRYPTO_CTR=m
-CONFIG_CRYPTO_CTS=m
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_LRW=m
-CONFIG_CRYPTO_PCBC=m
-CONFIG_CRYPTO_XTS=m
-
-#
-# Hash modes
-#
-CONFIG_CRYPTO_HMAC=y
-CONFIG_CRYPTO_XCBC=m
-CONFIG_CRYPTO_VMAC=m
-
-#
-# Digest
-#
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_GHASH=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_RMD128=m
-CONFIG_CRYPTO_RMD160=m
-CONFIG_CRYPTO_RMD256=m
-CONFIG_CRYPTO_RMD320=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_TGR192=m
-CONFIG_CRYPTO_WP512=m
-
-#
-# Ciphers
-#
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_BLOWFISH_COMMON=m
-CONFIG_CRYPTO_CAMELLIA=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_DES=m
-CONFIG_CRYPTO_FCRYPT=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_SALSA20=m
-CONFIG_CRYPTO_SEED=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_TWOFISH_COMMON=m
-
-#
-# Compression
-#
-CONFIG_CRYPTO_DEFLATE=y
-CONFIG_CRYPTO_ZLIB=m
-CONFIG_CRYPTO_LZO=m
-
-#
-# Random Number Generation
-#
-CONFIG_CRYPTO_ANSI_CPRNG=m
-CONFIG_CRYPTO_USER_API=m
-CONFIG_CRYPTO_USER_API_HASH=m
-CONFIG_CRYPTO_USER_API_SKCIPHER=m
-CONFIG_CRYPTO_HW=y
-CONFIG_CRYPTO_DEV_OMAP_SHAM=m
-CONFIG_CRYPTO_DEV_OMAP_AES=m
-# CONFIG_BINARY_PRINTF is not set
-
-#
-# Library routines
-#
-CONFIG_RAID6_PQ=m
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=m
-CONFIG_CRC16=y
-CONFIG_CRC_T10DIF=m
-CONFIG_CRC_ITU_T=m
-CONFIG_CRC32=y
-CONFIG_CRC7=m
-CONFIG_LIBCRC32C=m
-CONFIG_CRC8=m
-CONFIG_AUDIT_GENERIC=y
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_LZO_COMPRESS=y
-CONFIG_LZO_DECOMPRESS=y
-CONFIG_XZ_DEC=y
-CONFIG_XZ_DEC_X86=y
-CONFIG_XZ_DEC_POWERPC=y
-CONFIG_XZ_DEC_IA64=y
-CONFIG_XZ_DEC_ARM=y
-CONFIG_XZ_DEC_ARMTHUMB=y
-CONFIG_XZ_DEC_SPARC=y
-CONFIG_XZ_DEC_BCJ=y
-# CONFIG_XZ_DEC_TEST is not set
-CONFIG_DECOMPRESS_GZIP=y
-CONFIG_DECOMPRESS_BZIP2=y
-CONFIG_DECOMPRESS_LZMA=y
-CONFIG_DECOMPRESS_XZ=y
-CONFIG_DECOMPRESS_LZO=y
-CONFIG_TEXTSEARCH=y
-CONFIG_TEXTSEARCH_KMP=m
-CONFIG_TEXTSEARCH_BM=m
-CONFIG_TEXTSEARCH_FSM=m
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
-CONFIG_CPU_RMAP=y
-CONFIG_NLATTR=y
-CONFIG_GENERIC_ATOMIC64=y
-CONFIG_AVERAGE=y
-CONFIG_CORDIC=m
index 1e5588613e737c931356e2d5aa240ddf690db9c1..d343a9d35b886d711b953a9eb5b28fcdfd3653bb 100644 (file)
@@ -1,40 +1,32 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/arm 3.2.47 Kernel Configuration
+# Linux/arm 3.10.11 Kernel Configuration
 #
 CONFIG_ARM=y
 CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_HAVE_SCHED_CLOCK=y
-CONFIG_GENERIC_GPIO=y
-# CONFIG_ARCH_USES_GETTIMEOFFSET is not set
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_KTIME_SCALAR=y
 CONFIG_HAVE_PROC_CPU=y
 CONFIG_STACKTRACE_SUPPORT=y
 CONFIG_HAVE_LATENCYTOP_SUPPORT=y
 CONFIG_LOCKDEP_SUPPORT=y
 CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_PROBE=y
 CONFIG_RWSEM_GENERIC_SPINLOCK=y
 CONFIG_ARCH_HAS_CPUFREQ=y
-CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
 CONFIG_GENERIC_HWEIGHT=y
 CONFIG_GENERIC_CALIBRATE_DELAY=y
 CONFIG_NEED_DMA_MAP_STATE=y
 CONFIG_FIQ=y
 CONFIG_VECTORS_BASE=0xffff0000
 CONFIG_ARM_PATCH_PHYS_VIRT=y
+CONFIG_NEED_MACH_IO_H=y
 CONFIG_NEED_MACH_MEMORY_H=y
 CONFIG_GENERIC_BUG=y
 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-CONFIG_HAVE_IRQ_WORK=y
 CONFIG_IRQ_WORK=y
+CONFIG_BUILDTIME_EXTABLE_SORT=y
 
 #
 # General setup
 #
-CONFIG_EXPERIMENTAL=y
 CONFIG_BROKEN_ON_SMP=y
 CONFIG_INIT_ENV_ARG_LIMIT=32
 CONFIG_CROSS_COMPILE=""
@@ -42,9 +34,11 @@ CONFIG_LOCALVERSION=""
 # CONFIG_LOCALVERSION_AUTO is not set
 CONFIG_HAVE_KERNEL_GZIP=y
 CONFIG_HAVE_KERNEL_LZMA=y
+CONFIG_HAVE_KERNEL_XZ=y
 CONFIG_HAVE_KERNEL_LZO=y
-# CONFIG_KERNEL_GZIP is not set
-CONFIG_KERNEL_LZMA=y
+CONFIG_KERNEL_GZIP=y
+# CONFIG_KERNEL_LZMA is not set
+# CONFIG_KERNEL_XZ is not set
 # CONFIG_KERNEL_LZO is not set
 CONFIG_DEFAULT_HOSTNAME="(none)"
 CONFIG_SWAP=y
@@ -52,36 +46,58 @@ CONFIG_SYSVIPC=y
 CONFIG_SYSVIPC_SYSCTL=y
 CONFIG_POSIX_MQUEUE=y
 CONFIG_POSIX_MQUEUE_SYSCTL=y
-CONFIG_BSD_PROCESS_ACCT=y
-CONFIG_BSD_PROCESS_ACCT_V3=y
 # CONFIG_FHANDLE is not set
-# CONFIG_TASKSTATS is not set
 CONFIG_AUDIT=y
+# CONFIG_AUDITSYSCALL is not set
+# CONFIG_AUDIT_LOGINUID_IMMUTABLE is not set
 CONFIG_HAVE_GENERIC_HARDIRQS=y
 
 #
 # IRQ subsystem
 #
 CONFIG_GENERIC_HARDIRQS=y
-CONFIG_HAVE_SPARSE_IRQ=y
+CONFIG_GENERIC_IRQ_PROBE=y
 CONFIG_GENERIC_IRQ_SHOW=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_CHIP=y
 CONFIG_IRQ_DOMAIN=y
-CONFIG_SPARSE_IRQ=y
+CONFIG_KTIME_SCALAR=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+
+#
+# Timers subsystem
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ_COMMON=y
+# CONFIG_HZ_PERIODIC is not set
+CONFIG_NO_HZ_IDLE=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+
+#
+# CPU/Task time and stats accounting
+#
+# CONFIG_TICK_CPU_ACCOUNTING is not set
+CONFIG_IRQ_TIME_ACCOUNTING=y
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_BSD_PROCESS_ACCT_V3=y
+# CONFIG_TASKSTATS is not set
 
 #
 # RCU Subsystem
 #
 CONFIG_TINY_RCU=y
 # CONFIG_PREEMPT_RCU is not set
-# CONFIG_RCU_TRACE is not set
+# CONFIG_RCU_STALL_COMMON is not set
 # CONFIG_TREE_RCU_TRACE is not set
 # CONFIG_IKCONFIG is not set
 CONFIG_LOG_BUF_SHIFT=19
 # CONFIG_CGROUPS is not set
+# CONFIG_CHECKPOINT_RESTORE is not set
 CONFIG_NAMESPACES=y
 CONFIG_UTS_NS=y
 CONFIG_IPC_NS=y
-# CONFIG_USER_NS is not set
 # CONFIG_PID_NS is not set
 # CONFIG_NET_NS is not set
 # CONFIG_SCHED_AUTOGROUP is not set
@@ -98,12 +114,13 @@ CONFIG_RD_LZO=y
 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 CONFIG_SYSCTL=y
 CONFIG_ANON_INODES=y
+CONFIG_HAVE_UID16=y
+CONFIG_HOTPLUG=y
 # CONFIG_EXPERT is not set
 CONFIG_UID16=y
 # CONFIG_SYSCTL_SYSCALL is not set
 CONFIG_KALLSYMS=y
 # CONFIG_KALLSYMS_ALL is not set
-CONFIG_HOTPLUG=y
 CONFIG_PRINTK=y
 CONFIG_BUG=y
 CONFIG_ELF_CORE=y
@@ -123,7 +140,6 @@ CONFIG_PERF_USE_VMALLOC=y
 # Kernel Performance Events And Counters
 #
 CONFIG_PERF_EVENTS=y
-# CONFIG_PERF_COUNTERS is not set
 # CONFIG_DEBUG_PERF_USE_VMALLOC is not set
 CONFIG_VM_EVENT_COUNTERS=y
 CONFIG_SLUB_DEBUG=y
@@ -133,12 +149,29 @@ CONFIG_SLUB=y
 # CONFIG_PROFILING is not set
 CONFIG_HAVE_OPROFILE=y
 # CONFIG_KPROBES is not set
+CONFIG_JUMP_LABEL=y
+# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
 CONFIG_HAVE_KPROBES=y
 CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_ARCH_TRACEHOOK=y
+CONFIG_HAVE_DMA_ATTRS=y
+CONFIG_HAVE_DMA_CONTIGUOUS=y
+CONFIG_GENERIC_SMP_IDLE_THREAD=y
+CONFIG_GENERIC_IDLE_POLL_SETUP=y
 CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
 CONFIG_HAVE_CLK=y
 CONFIG_HAVE_DMA_API_DEBUG=y
 CONFIG_HAVE_HW_BREAKPOINT=y
+CONFIG_HAVE_ARCH_JUMP_LABEL=y
+CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
+CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
+CONFIG_SECCOMP_FILTER=y
+CONFIG_HAVE_CONTEXT_TRACKING=y
+CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
+CONFIG_MODULES_USE_ELF_REL=y
+CONFIG_CLONE_BACKWARDS=y
+CONFIG_OLD_SIGSUSPEND3=y
+CONFIG_OLD_SIGACTION=y
 
 #
 # GCOV-based kernel profiling
@@ -153,12 +186,36 @@ CONFIG_MODULE_UNLOAD=y
 CONFIG_MODULE_FORCE_UNLOAD=y
 # CONFIG_MODVERSIONS is not set
 # CONFIG_MODULE_SRCVERSION_ALL is not set
+# CONFIG_MODULE_SIG is not set
 CONFIG_BLOCK=y
 CONFIG_LBDAF=y
 CONFIG_BLK_DEV_BSG=y
 CONFIG_BLK_DEV_BSGLIB=y
 # CONFIG_BLK_DEV_INTEGRITY is not set
 
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+CONFIG_BSD_DISKLABEL=y
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+CONFIG_LDM_PARTITION=y
+# CONFIG_LDM_DEBUG is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+CONFIG_EFI_PARTITION=y
+# CONFIG_SYSV68_PARTITION is not set
+
 #
 # IO Schedulers
 #
@@ -169,104 +226,60 @@ CONFIG_IOSCHED_CFQ=y
 CONFIG_DEFAULT_CFQ=y
 # CONFIG_DEFAULT_NOOP is not set
 CONFIG_DEFAULT_IOSCHED="cfq"
-# CONFIG_INLINE_SPIN_TRYLOCK is not set
-# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
-# CONFIG_INLINE_SPIN_LOCK is not set
-# CONFIG_INLINE_SPIN_LOCK_BH is not set
-# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
-# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
-CONFIG_INLINE_SPIN_UNLOCK=y
-# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
+CONFIG_ASN1=m
 CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
-# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
-# CONFIG_INLINE_READ_TRYLOCK is not set
-# CONFIG_INLINE_READ_LOCK is not set
-# CONFIG_INLINE_READ_LOCK_BH is not set
-# CONFIG_INLINE_READ_LOCK_IRQ is not set
-# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
 CONFIG_INLINE_READ_UNLOCK=y
-# CONFIG_INLINE_READ_UNLOCK_BH is not set
 CONFIG_INLINE_READ_UNLOCK_IRQ=y
-# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
-# CONFIG_INLINE_WRITE_TRYLOCK is not set
-# CONFIG_INLINE_WRITE_LOCK is not set
-# CONFIG_INLINE_WRITE_LOCK_BH is not set
-# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
-# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
 CONFIG_INLINE_WRITE_UNLOCK=y
-# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
 CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
-# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
-# CONFIG_MUTEX_SPIN_ON_OWNER is not set
 CONFIG_FREEZER=y
 
 #
 # System Type
 #
 CONFIG_MMU=y
+# CONFIG_ARCH_MULTIPLATFORM is not set
 # CONFIG_ARCH_INTEGRATOR is not set
 # CONFIG_ARCH_REALVIEW is not set
 # CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_VEXPRESS is not set
 # CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_BCMRING is not set
-# CONFIG_ARCH_HIGHBANK is not set
+CONFIG_ARCH_BCM2708=y
 # CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CNS3XXX is not set
 # CONFIG_ARCH_GEMINI is not set
-# CONFIG_ARCH_PRIMA2 is not set
 # CONFIG_ARCH_EBSA110 is not set
 # CONFIG_ARCH_EP93XX is not set
 # CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_MXC is not set
-# CONFIG_ARCH_MXS is not set
 # CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_H720X is not set
 # CONFIG_ARCH_IOP13XX is not set
 # CONFIG_ARCH_IOP32X is not set
 # CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_IXP2000 is not set
 # CONFIG_ARCH_IXP4XX is not set
 # CONFIG_ARCH_DOVE is not set
 # CONFIG_ARCH_KIRKWOOD is not set
-# CONFIG_ARCH_LPC32XX is not set
 # CONFIG_ARCH_MV78XX0 is not set
 # CONFIG_ARCH_ORION5X is not set
 # CONFIG_ARCH_MMP is not set
 # CONFIG_ARCH_KS8695 is not set
 # CONFIG_ARCH_W90X900 is not set
-# CONFIG_ARCH_TEGRA is not set
-# CONFIG_ARCH_PICOXCELL is not set
-# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_LPC32XX is not set
 # CONFIG_ARCH_PXA is not set
 # CONFIG_ARCH_MSM is not set
 # CONFIG_ARCH_SHMOBILE is not set
 # CONFIG_ARCH_RPC is not set
 # CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_S3C24XX is not set
 # CONFIG_ARCH_S3C64XX is not set
 # CONFIG_ARCH_S5P64X0 is not set
 # CONFIG_ARCH_S5PC100 is not set
 # CONFIG_ARCH_S5PV210 is not set
 # CONFIG_ARCH_EXYNOS is not set
 # CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_TCC_926 is not set
 # CONFIG_ARCH_U300 is not set
-# CONFIG_ARCH_U8500 is not set
-# CONFIG_ARCH_NOMADIK is not set
 # CONFIG_ARCH_DAVINCI is not set
-# CONFIG_ARCH_OMAP is not set
-# CONFIG_PLAT_SPEAR is not set
-CONFIG_ARCH_BCM2708=y
-# CONFIG_ARCH_VT8500 is not set
-# CONFIG_ARCH_ZYNQ is not set
+# CONFIG_ARCH_OMAP1 is not set
 CONFIG_GPIO_PCA953X=m
 CONFIG_KEYBOARD_GPIO_POLLED=m
-
-#
-# System MMU
-#
+# CONFIG_PLAT_SPEAR is not set
 
 #
 # Broadcom BCM2708 Implementations
@@ -276,6 +289,7 @@ CONFIG_BCM2708_GPIO=y
 CONFIG_BCM2708_VCMEM=y
 # CONFIG_BCM2708_NOL2CACHE is not set
 CONFIG_BCM2708_DMAER=m
+CONFIG_BCM2708_SPIDEV=y
 
 #
 # Processor Type
@@ -296,41 +310,40 @@ CONFIG_CPU_USE_DOMAINS=y
 #
 # Processor Features
 #
+# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
 CONFIG_ARM_THUMB=y
 # CONFIG_CPU_ICACHE_DISABLE is not set
 # CONFIG_CPU_DCACHE_DISABLE is not set
 # CONFIG_CPU_BPREDICT_DISABLE is not set
+CONFIG_KUSER_HELPERS=y
+# CONFIG_CACHE_L2X0 is not set
 CONFIG_ARM_L1_CACHE_SHIFT=5
 CONFIG_ARM_DMA_MEM_BUFFERABLE=y
-CONFIG_CPU_HAS_PMU=y
+CONFIG_ARM_NR_BANKS=8
 # CONFIG_ARM_ERRATA_326103 is not set
 CONFIG_ARM_ERRATA_411920=y
 # CONFIG_ARM_ERRATA_364296 is not set
-CONFIG_PL330=y
 
 #
 # Bus support
 #
 CONFIG_ARM_AMBA=y
 # CONFIG_PCI_SYSCALL is not set
-# CONFIG_ARCH_SUPPORTS_MSI is not set
 # CONFIG_PCCARD is not set
 
 #
 # Kernel Features
 #
-CONFIG_TICK_ONESHOT=y
-CONFIG_NO_HZ=y
-CONFIG_HIGH_RES_TIMERS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
 CONFIG_VMSPLIT_3G=y
 # CONFIG_VMSPLIT_2G is not set
 # CONFIG_VMSPLIT_1G is not set
 CONFIG_PAGE_OFFSET=0xC0000000
+CONFIG_ARCH_NR_GPIO=0
 CONFIG_PREEMPT_NONE=y
 # CONFIG_PREEMPT_VOLUNTARY is not set
 # CONFIG_PREEMPT is not set
 CONFIG_HZ=100
+CONFIG_SCHED_HRTICK=y
 CONFIG_AEABI=y
 # CONFIG_OABI_COMPAT is not set
 # CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
@@ -338,32 +351,35 @@ CONFIG_AEABI=y
 CONFIG_HAVE_ARCH_PFN_VALID=y
 # CONFIG_HIGHMEM is not set
 CONFIG_HW_PERF_EVENTS=y
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
 CONFIG_FLATMEM=y
 CONFIG_FLAT_NODE_MEM_MAP=y
 CONFIG_HAVE_MEMBLOCK=y
+CONFIG_MEMORY_ISOLATION=y
+# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
 CONFIG_PAGEFLAGS_EXTENDED=y
 CONFIG_SPLIT_PTLOCK_CPUS=4
 # CONFIG_COMPACTION is not set
+CONFIG_MIGRATION=y
 # CONFIG_PHYS_ADDR_T_64BIT is not set
 CONFIG_ZONE_DMA_FLAG=0
-CONFIG_VIRT_TO_BUS=y
 CONFIG_KSM=y
 CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+CONFIG_CROSS_MEMORY_ATTACH=y
 CONFIG_NEED_PER_CPU_KM=y
-# CONFIG_CLEANCACHE is not set
+CONFIG_CLEANCACHE=y
+CONFIG_FRONTSWAP=y
 CONFIG_FORCE_MAX_ZONEORDER=11
 CONFIG_ALIGNMENT_TRAP=y
-CONFIG_UACCESS_WITH_MEMCPY=y
+# CONFIG_UACCESS_WITH_MEMCPY is not set
 CONFIG_SECCOMP=y
 CONFIG_CC_STACKPROTECTOR=y
-# CONFIG_DEPRECATED_PARAM_STRUCT is not set
 
 #
 # Boot options
 #
 CONFIG_USE_OF=y
+CONFIG_ATAGS=y
+# CONFIG_DEPRECATED_PARAM_STRUCT is not set
 CONFIG_ZBOOT_ROM_TEXT=0x0
 CONFIG_ZBOOT_ROM_BSS=0x0
 # CONFIG_ARM_APPENDED_DTB is not set
@@ -385,6 +401,7 @@ CONFIG_CMDLINE_FROM_BOOTLOADER=y
 #
 CONFIG_CPU_FREQ=y
 CONFIG_CPU_FREQ_TABLE=y
+CONFIG_CPU_FREQ_GOV_COMMON=y
 CONFIG_CPU_FREQ_STAT=m
 # CONFIG_CPU_FREQ_STAT_DETAILS is not set
 # CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
@@ -400,10 +417,16 @@ CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
 #
 # ARM CPU frequency scaling drivers
 #
+# CONFIG_ARM_EXYNOS4210_CPUFREQ is not set
+# CONFIG_ARM_EXYNOS4X12_CPUFREQ is not set
+# CONFIG_ARM_EXYNOS5250_CPUFREQ is not set
+# CONFIG_ARM_KIRKWOOD_CPUFREQ is not set
 CONFIG_ARM_BCM2835_CPUFREQ=y
 CONFIG_CPU_IDLE=y
+# CONFIG_CPU_IDLE_MULTIPLE_DRIVERS is not set
 CONFIG_CPU_IDLE_GOV_LADDER=y
 CONFIG_CPU_IDLE_GOV_MENU=y
+# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set
 
 #
 # Floating point emulation
@@ -418,10 +441,12 @@ CONFIG_VFP=y
 # Userspace binary formats
 #
 CONFIG_BINFMT_ELF=y
+CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
 # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
-CONFIG_HAVE_AOUT=y
-# CONFIG_BINFMT_AOUT is not set
+CONFIG_BINFMT_SCRIPT=y
+# CONFIG_HAVE_AOUT is not set
 # CONFIG_BINFMT_MISC is not set
+CONFIG_COREDUMP=y
 
 #
 # Power management options
@@ -429,6 +454,8 @@ CONFIG_HAVE_AOUT=y
 CONFIG_SUSPEND=y
 CONFIG_SUSPEND_FREEZER=y
 CONFIG_PM_SLEEP=y
+# CONFIG_PM_AUTOSLEEP is not set
+# CONFIG_PM_WAKELOCKS is not set
 CONFIG_PM_RUNTIME=y
 CONFIG_PM=y
 # CONFIG_PM_DEBUG is not set
@@ -443,8 +470,11 @@ CONFIG_NET=y
 # Networking options
 #
 CONFIG_PACKET=y
+# CONFIG_PACKET_DIAG is not set
 CONFIG_UNIX=y
+CONFIG_UNIX_DIAG=m
 CONFIG_XFRM=y
+CONFIG_XFRM_ALGO=m
 CONFIG_XFRM_USER=m
 # CONFIG_XFRM_SUB_POLICY is not set
 CONFIG_XFRM_MIGRATE=y
@@ -455,7 +485,7 @@ CONFIG_NET_KEY_MIGRATE=y
 CONFIG_INET=y
 CONFIG_IP_MULTICAST=y
 CONFIG_IP_ADVANCED_ROUTER=y
-# CONFIG_IP_FIB_TRIE_STATS is not set
+CONFIG_IP_FIB_TRIE_STATS=y
 CONFIG_IP_MULTIPLE_TABLES=y
 CONFIG_IP_ROUTE_MULTIPATH=y
 CONFIG_IP_ROUTE_VERBOSE=y
@@ -463,6 +493,7 @@ CONFIG_IP_ROUTE_CLASSID=y
 # CONFIG_IP_PNP is not set
 CONFIG_NET_IPIP=m
 CONFIG_NET_IPGRE_DEMUX=m
+CONFIG_NET_IP_TUNNEL=m
 CONFIG_NET_IPGRE=m
 CONFIG_NET_IPGRE_BROADCAST=y
 CONFIG_IP_MROUTE=y
@@ -471,6 +502,7 @@ CONFIG_IP_PIMSM_V1=y
 CONFIG_IP_PIMSM_V2=y
 CONFIG_ARPD=y
 CONFIG_SYN_COOKIES=y
+CONFIG_NET_IPVTI=m
 CONFIG_INET_AH=m
 CONFIG_INET_ESP=m
 CONFIG_INET_IPCOMP=m
@@ -482,6 +514,7 @@ CONFIG_INET_XFRM_MODE_BEET=y
 CONFIG_INET_LRO=y
 CONFIG_INET_DIAG=m
 CONFIG_INET_TCP_DIAG=m
+CONFIG_INET_UDP_DIAG=m
 CONFIG_TCP_CONG_ADVANCED=y
 CONFIG_TCP_CONG_BIC=m
 CONFIG_TCP_CONG_CUBIC=m
@@ -516,9 +549,11 @@ CONFIG_IPV6_SIT=m
 # CONFIG_IPV6_SIT_6RD is not set
 CONFIG_IPV6_NDISC_NODETYPE=y
 CONFIG_IPV6_TUNNEL=m
+CONFIG_IPV6_GRE=m
 CONFIG_IPV6_MULTIPLE_TABLES=y
 # CONFIG_IPV6_SUBTREES is not set
 # CONFIG_IPV6_MROUTE is not set
+# CONFIG_NETLABEL is not set
 # CONFIG_NETWORK_SECMARK is not set
 CONFIG_NETWORK_PHY_TIMESTAMPING=y
 CONFIG_NETFILTER=y
@@ -530,13 +565,17 @@ CONFIG_BRIDGE_NETFILTER=y
 # Core Netfilter Configuration
 #
 CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_ACCT=m
 CONFIG_NETFILTER_NETLINK_QUEUE=m
 CONFIG_NETFILTER_NETLINK_LOG=m
 CONFIG_NF_CONNTRACK=m
 CONFIG_NF_CONNTRACK_MARK=y
 # CONFIG_NF_CONNTRACK_ZONES is not set
+CONFIG_NF_CONNTRACK_PROCFS=y
 CONFIG_NF_CONNTRACK_EVENTS=y
+# CONFIG_NF_CONNTRACK_TIMEOUT is not set
 CONFIG_NF_CONNTRACK_TIMESTAMP=y
+CONFIG_NF_CONNTRACK_LABELS=y
 CONFIG_NF_CT_PROTO_DCCP=m
 CONFIG_NF_CT_PROTO_GRE=m
 CONFIG_NF_CT_PROTO_SCTP=m
@@ -553,6 +592,19 @@ CONFIG_NF_CONNTRACK_SANE=m
 CONFIG_NF_CONNTRACK_SIP=m
 CONFIG_NF_CONNTRACK_TFTP=m
 CONFIG_NF_CT_NETLINK=m
+CONFIG_NF_CT_NETLINK_TIMEOUT=m
+CONFIG_NF_CT_NETLINK_HELPER=m
+CONFIG_NETFILTER_NETLINK_QUEUE_CT=y
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_NF_NAT_PROTO_DCCP=m
+CONFIG_NF_NAT_PROTO_UDPLITE=m
+CONFIG_NF_NAT_PROTO_SCTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_NF_NAT_TFTP=m
 CONFIG_NETFILTER_TPROXY=m
 CONFIG_NETFILTER_XTABLES=m
 
@@ -572,14 +624,18 @@ CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
 CONFIG_NETFILTER_XT_TARGET_CT=m
 CONFIG_NETFILTER_XT_TARGET_DSCP=m
 CONFIG_NETFILTER_XT_TARGET_HL=m
+CONFIG_NETFILTER_XT_TARGET_HMARK=m
 CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m
 CONFIG_NETFILTER_XT_TARGET_LED=m
+CONFIG_NETFILTER_XT_TARGET_LOG=m
 CONFIG_NETFILTER_XT_TARGET_IMQ=m
 CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NETMAP=m
 CONFIG_NETFILTER_XT_TARGET_NFLOG=m
 CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
 CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
 CONFIG_NETFILTER_XT_TARGET_RATEEST=m
+CONFIG_NETFILTER_XT_TARGET_REDIRECT=m
 CONFIG_NETFILTER_XT_TARGET_TEE=m
 CONFIG_NETFILTER_XT_TARGET_TPROXY=m
 CONFIG_NETFILTER_XT_TARGET_TRACE=m
@@ -590,9 +646,11 @@ CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
 # Xtables matches
 #
 CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
+CONFIG_NETFILTER_XT_MATCH_BPF=m
 CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
 CONFIG_NETFILTER_XT_MATCH_COMMENT=m
 CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m
 CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
 CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
 CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
@@ -600,6 +658,7 @@ CONFIG_NETFILTER_XT_MATCH_CPU=m
 CONFIG_NETFILTER_XT_MATCH_DCCP=m
 CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m
 CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ECN=m
 CONFIG_NETFILTER_XT_MATCH_ESP=m
 CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
 CONFIG_NETFILTER_XT_MATCH_HELPER=m
@@ -611,6 +670,7 @@ CONFIG_NETFILTER_XT_MATCH_LIMIT=m
 CONFIG_NETFILTER_XT_MATCH_MAC=m
 CONFIG_NETFILTER_XT_MATCH_MARK=m
 CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_NFACCT=m
 CONFIG_NETFILTER_XT_MATCH_OSF=m
 CONFIG_NETFILTER_XT_MATCH_OWNER=m
 CONFIG_NETFILTER_XT_MATCH_POLICY=m
@@ -660,6 +720,11 @@ CONFIG_IP_VS_SH=m
 CONFIG_IP_VS_SED=m
 CONFIG_IP_VS_NQ=m
 
+#
+# IPVS SH scheduler
+#
+CONFIG_IP_VS_SH_TAB_BITS=8
+
 #
 # IPVS application helper
 #
@@ -673,37 +738,28 @@ CONFIG_IP_VS_PE_SIP=m
 CONFIG_NF_DEFRAG_IPV4=m
 CONFIG_NF_CONNTRACK_IPV4=m
 CONFIG_NF_CONNTRACK_PROC_COMPAT=y
-CONFIG_IP_NF_QUEUE=m
 CONFIG_IP_NF_IPTABLES=m
 CONFIG_IP_NF_MATCH_AH=m
 CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_RPFILTER=m
 CONFIG_IP_NF_MATCH_TTL=m
 CONFIG_IP_NF_FILTER=m
 CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
 CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_NF_NAT=m
-CONFIG_NF_NAT_NEEDED=y
+CONFIG_NF_NAT_IPV4=m
 CONFIG_IP_NF_TARGET_MASQUERADE=m
 CONFIG_IP_NF_TARGET_NETMAP=m
 CONFIG_IP_NF_TARGET_REDIRECT=m
 CONFIG_NF_NAT_SNMP_BASIC=m
-CONFIG_NF_NAT_PROTO_DCCP=m
 CONFIG_NF_NAT_PROTO_GRE=m
-CONFIG_NF_NAT_PROTO_UDPLITE=m
-CONFIG_NF_NAT_PROTO_SCTP=m
-CONFIG_NF_NAT_FTP=m
-CONFIG_NF_NAT_IRC=m
-CONFIG_NF_NAT_TFTP=m
-CONFIG_NF_NAT_AMANDA=m
 CONFIG_NF_NAT_PPTP=m
 CONFIG_NF_NAT_H323=m
-CONFIG_NF_NAT_SIP=m
 CONFIG_IP_NF_MANGLE=m
 CONFIG_IP_NF_TARGET_CLUSTERIP=m
 CONFIG_IP_NF_TARGET_ECN=m
 CONFIG_IP_NF_TARGET_TTL=m
 CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_SECURITY=m
 CONFIG_IP_NF_ARPTABLES=m
 CONFIG_IP_NF_ARPFILTER=m
 CONFIG_IP_NF_ARP_MANGLE=m
@@ -714,7 +770,6 @@ CONFIG_IP_NF_MATCH_IPP2P=m
 #
 CONFIG_NF_DEFRAG_IPV6=m
 CONFIG_NF_CONNTRACK_IPV6=m
-CONFIG_IP6_NF_QUEUE=m
 CONFIG_IP6_NF_IPTABLES=m
 CONFIG_IP6_NF_MATCH_AH=m
 CONFIG_IP6_NF_MATCH_EUI64=m
@@ -723,13 +778,15 @@ CONFIG_IP6_NF_MATCH_OPTS=m
 CONFIG_IP6_NF_MATCH_HL=m
 CONFIG_IP6_NF_MATCH_IPV6HEADER=m
 CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_RPFILTER=m
 CONFIG_IP6_NF_MATCH_RT=m
 CONFIG_IP6_NF_TARGET_HL=m
-CONFIG_IP6_NF_TARGET_LOG=m
 CONFIG_IP6_NF_FILTER=m
 CONFIG_IP6_NF_TARGET_REJECT=m
 CONFIG_IP6_NF_MANGLE=m
 CONFIG_IP6_NF_RAW=m
+CONFIG_IP6_NF_SECURITY=m
+# CONFIG_NF_NAT_IPV6 is not set
 CONFIG_BRIDGE_NF_EBTABLES=m
 CONFIG_BRIDGE_EBT_BROUTE=m
 CONFIG_BRIDGE_EBT_T_FILTER=m
@@ -768,19 +825,18 @@ CONFIG_L2TP_IP=m
 CONFIG_L2TP_ETH=m
 CONFIG_STP=m
 CONFIG_GARP=m
+CONFIG_MRP=m
 CONFIG_BRIDGE=m
 CONFIG_BRIDGE_IGMP_SNOOPING=y
+CONFIG_BRIDGE_VLAN_FILTERING=y
+CONFIG_HAVE_NET_DSA=y
 CONFIG_NET_DSA=y
 CONFIG_NET_DSA_TAG_DSA=y
 CONFIG_NET_DSA_TAG_EDSA=y
 CONFIG_NET_DSA_TAG_TRAILER=y
-CONFIG_NET_DSA_MV88E6XXX=y
-CONFIG_NET_DSA_MV88E6060=y
-CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y
-CONFIG_NET_DSA_MV88E6131=y
-CONFIG_NET_DSA_MV88E6123_61_65=y
 CONFIG_VLAN_8021Q=m
 CONFIG_VLAN_8021Q_GVRP=y
+# CONFIG_VLAN_8021Q_MVRP is not set
 # CONFIG_DECNET is not set
 CONFIG_LLC=m
 # CONFIG_LLC2 is not set
@@ -788,11 +844,10 @@ CONFIG_LLC=m
 # CONFIG_ATALK is not set
 # CONFIG_X25 is not set
 # CONFIG_LAPB is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
 # CONFIG_PHONET is not set
 CONFIG_IEEE802154=m
 CONFIG_IEEE802154_6LOWPAN=m
+CONFIG_MAC802154=m
 CONFIG_NET_SCHED=y
 
 #
@@ -816,7 +871,10 @@ CONFIG_NET_SCH_DRR=m
 CONFIG_NET_SCH_MQPRIO=m
 CONFIG_NET_SCH_CHOKE=m
 CONFIG_NET_SCH_QFQ=m
+CONFIG_NET_SCH_CODEL=m
+CONFIG_NET_SCH_FQ_CODEL=m
 CONFIG_NET_SCH_INGRESS=m
+CONFIG_NET_SCH_PLUG=m
 
 #
 # Classification
@@ -855,7 +913,16 @@ CONFIG_NET_SCH_FIFO=y
 # CONFIG_DCB is not set
 CONFIG_DNS_RESOLVER=y
 CONFIG_BATMAN_ADV=m
+CONFIG_BATMAN_ADV_BLA=y
+CONFIG_BATMAN_ADV_DAT=y
+CONFIG_BATMAN_ADV_NC=y
 # CONFIG_BATMAN_ADV_DEBUG is not set
+CONFIG_OPENVSWITCH=m
+# CONFIG_VSOCKETS is not set
+# CONFIG_NETLINK_MMAP is not set
+CONFIG_NETLINK_DIAG=m
+CONFIG_BQL=y
+CONFIG_BPF_JIT=y
 
 #
 # Network testing
@@ -863,49 +930,8 @@ CONFIG_BATMAN_ADV=m
 # CONFIG_NET_PKTGEN is not set
 # CONFIG_HAMRADIO is not set
 # CONFIG_CAN is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-CONFIG_IRTTY_SIR=m
-
-#
-# Dongle support
-#
-# CONFIG_DONGLE is not set
-CONFIG_KINGSUN_DONGLE=m
-CONFIG_KSDAZZLE_DONGLE=m
-CONFIG_KS959_DONGLE=m
-
-#
-# FIR device drivers
-#
-CONFIG_USB_IRDA=m
-CONFIG_SIGMATEL_FIR=m
-CONFIG_MCS_FIR=m
+# CONFIG_IRDA is not set
 CONFIG_BT=m
-CONFIG_BT_L2CAP=y
-CONFIG_BT_SCO=y
 CONFIG_BT_RFCOMM=m
 CONFIG_BT_RFCOMM_TTY=y
 CONFIG_BT_BNEP=m
@@ -924,6 +950,7 @@ CONFIG_BT_HCIUART_H4=y
 CONFIG_BT_HCIUART_BCSP=y
 CONFIG_BT_HCIUART_ATH3K=y
 CONFIG_BT_HCIUART_LL=y
+CONFIG_BT_HCIUART_3WIRE=y
 CONFIG_BT_HCIBCM203X=m
 CONFIG_BT_HCIBPA10X=m
 CONFIG_BT_HCIBFUSB=m
@@ -931,7 +958,6 @@ CONFIG_BT_HCIVHCI=m
 CONFIG_BT_MRVL=m
 CONFIG_BT_MRVL_SDIO=m
 CONFIG_BT_ATH3K=m
-CONFIG_BT_WILINK=m
 CONFIG_AF_RXRPC=m
 # CONFIG_AF_RXRPC_DEBUG is not set
 CONFIG_RXKAD=m
@@ -949,7 +975,6 @@ CONFIG_CFG80211=m
 # CONFIG_CFG80211_DEFAULT_PS is not set
 # CONFIG_CFG80211_INTERNAL_REGDB is not set
 CONFIG_CFG80211_WEXT=y
-CONFIG_WIRELESS_EXT_SYSFS=y
 CONFIG_LIB80211=m
 CONFIG_LIB80211_CRYPT_WEP=m
 CONFIG_LIB80211_CRYPT_CCMP=m
@@ -963,6 +988,7 @@ CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
 CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
 CONFIG_MAC80211_MESH=y
 CONFIG_MAC80211_LEDS=y
+# CONFIG_MAC80211_MESSAGE_TRACING is not set
 # CONFIG_MAC80211_DEBUG_MENU is not set
 # CONFIG_WIMAX is not set
 CONFIG_RFKILL=m
@@ -976,6 +1002,7 @@ CONFIG_CEPH_LIB=m
 # CONFIG_CEPH_LIB_PRETTYDEBUG is not set
 # CONFIG_CEPH_LIB_USE_DNS_RESOLVER is not set
 # CONFIG_NFC is not set
+CONFIG_HAVE_BPF_JIT=y
 
 #
 # Device Drivers
@@ -991,23 +1018,44 @@ CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
 CONFIG_FW_LOADER=y
 # CONFIG_FIRMWARE_IN_KERNEL is not set
 CONFIG_EXTRA_FIRMWARE=""
+CONFIG_FW_LOADER_USER_HELPER=y
 # CONFIG_DEBUG_DRIVER is not set
 # CONFIG_DEBUG_DEVRES is not set
 # CONFIG_SYS_HYPERVISOR is not set
+# CONFIG_GENERIC_CPU_DEVICES is not set
 CONFIG_REGMAP=y
 CONFIG_REGMAP_I2C=m
+CONFIG_REGMAP_SPI=m
+CONFIG_DMA_SHARED_BUFFER=y
+CONFIG_CMA=y
+# CONFIG_CMA_DEBUG is not set
+
+#
+# Default contiguous memory area size:
+#
+CONFIG_CMA_SIZE_MBYTES=16
+CONFIG_CMA_SIZE_SEL_MBYTES=y
+# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set
+# CONFIG_CMA_SIZE_SEL_MIN is not set
+# CONFIG_CMA_SIZE_SEL_MAX is not set
+CONFIG_CMA_ALIGNMENT=8
+CONFIG_CMA_AREAS=7
+
+#
+# Bus devices
+#
 CONFIG_CONNECTOR=m
 CONFIG_MTD=m
-CONFIG_MTD_TESTS=m
+# CONFIG_MTD_TESTS is not set
 # CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=m
 # CONFIG_MTD_AFS_PARTS is not set
 CONFIG_MTD_OF_PARTS=m
-CONFIG_MTD_AR7_PARTS=m
+# CONFIG_MTD_AR7_PARTS is not set
 
 #
 # User Modules And Translation Layers
 #
-CONFIG_MTD_CHAR=m
 CONFIG_MTD_BLKDEVS=m
 CONFIG_MTD_BLOCK=m
 # CONFIG_MTD_BLOCK_RO is not set
@@ -1016,7 +1064,7 @@ CONFIG_MTD_BLOCK=m
 # CONFIG_INFTL is not set
 # CONFIG_RFD_FTL is not set
 # CONFIG_SSFDC is not set
-CONFIG_SM_FTL=m
+# CONFIG_SM_FTL is not set
 # CONFIG_MTD_OOPS is not set
 # CONFIG_MTD_SWAP is not set
 
@@ -1050,6 +1098,9 @@ CONFIG_MTD_PHYSMAP=m
 #
 # Self-contained MTD device drivers
 #
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# CONFIG_MTD_SST25L is not set
 # CONFIG_MTD_SLRAM is not set
 # CONFIG_MTD_PHRAM is not set
 # CONFIG_MTD_MTDRAM is not set
@@ -1058,20 +1109,17 @@ CONFIG_MTD_PHYSMAP=m
 #
 # Disk-On-Chip Device Drivers
 #
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
 # CONFIG_MTD_DOCG3 is not set
 CONFIG_MTD_NAND_ECC=m
 # CONFIG_MTD_NAND_ECC_SMC is not set
 CONFIG_MTD_NAND=m
-# CONFIG_MTD_NAND_VERIFY_WRITE is not set
 # CONFIG_MTD_NAND_ECC_BCH is not set
 # CONFIG_MTD_SM_COMMON is not set
-# CONFIG_MTD_NAND_MUSEUM_IDS is not set
+# CONFIG_MTD_NAND_DENALI is not set
 # CONFIG_MTD_NAND_GPIO is not set
 CONFIG_MTD_NAND_IDS=m
 # CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_DOCG4 is not set
 # CONFIG_MTD_NAND_NANDSIM is not set
 CONFIG_MTD_NAND_PLATFORM=m
 # CONFIG_MTD_ALAUDA is not set
@@ -1084,9 +1132,9 @@ CONFIG_MTD_LPDDR=m
 CONFIG_MTD_QINFO_PROBE=m
 CONFIG_MTD_UBI=m
 CONFIG_MTD_UBI_WL_THRESHOLD=4096
-CONFIG_MTD_UBI_BEB_RESERVE=1
+CONFIG_MTD_UBI_BEB_LIMIT=20
+# CONFIG_MTD_UBI_FASTMAP is not set
 # CONFIG_MTD_UBI_GLUEBI is not set
-# CONFIG_MTD_UBI_DEBUG is not set
 CONFIG_DTC=y
 CONFIG_OF=y
 
@@ -1094,15 +1142,16 @@ CONFIG_OF=y
 # Device Tree and Open Firmware support
 #
 CONFIG_PROC_DEVICETREE=y
+# CONFIG_OF_SELFTEST is not set
 CONFIG_OF_FLATTREE=y
 CONFIG_OF_EARLY_FLATTREE=y
 CONFIG_OF_ADDRESS=y
 CONFIG_OF_IRQ=y
 CONFIG_OF_DEVICE=y
-CONFIG_OF_GPIO=y
 CONFIG_OF_I2C=y
 CONFIG_OF_NET=y
 CONFIG_OF_MDIO=y
+CONFIG_OF_MTD=y
 CONFIG_PARPORT=m
 # CONFIG_PARPORT_PC is not set
 # CONFIG_PARPORT_GSC is not set
@@ -1117,7 +1166,6 @@ CONFIG_BLK_DEV_CRYPTOLOOP=m
 # CONFIG_BLK_DEV_DRBD is not set
 CONFIG_BLK_DEV_NBD=m
 CONFIG_BLK_DEV_OSD=m
-# CONFIG_BLK_DEV_UB is not set
 CONFIG_BLK_DEV_RAM=y
 CONFIG_BLK_DEV_RAM_COUNT=8
 CONFIG_BLK_DEV_RAM_SIZE=16384
@@ -1127,41 +1175,50 @@ CONFIG_ATA_OVER_ETH=m
 CONFIG_MG_DISK=m
 CONFIG_MG_DISK_RES=0
 CONFIG_BLK_DEV_RBD=m
-CONFIG_SENSORS_LIS3LV02D=m
-CONFIG_MISC_DEVICES=y
+
+#
+# Misc devices
+#
+# CONFIG_SENSORS_LIS3LV02D is not set
 # CONFIG_AD525X_DPOT is not set
 # CONFIG_ATMEL_PWM is not set
-CONFIG_ICS932S401=m
+CONFIG_DUMMY_IRQ=m
+# CONFIG_ICS932S401 is not set
+# CONFIG_ATMEL_SSC is not set
 CONFIG_ENCLOSURE_SERVICES=m
-CONFIG_APDS9802ALS=m
-CONFIG_ISL29003=m
-CONFIG_ISL29020=m
-CONFIG_SENSORS_TSL2550=m
-CONFIG_SENSORS_BH1780=m
-CONFIG_SENSORS_BH1770=m
-CONFIG_SENSORS_APDS990X=m
-CONFIG_HMC6352=m
+# CONFIG_APDS9802ALS is not set
+# CONFIG_ISL29003 is not set
+# CONFIG_ISL29020 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_SENSORS_BH1780 is not set
+# CONFIG_SENSORS_BH1770 is not set
+# CONFIG_SENSORS_APDS990X is not set
+# CONFIG_HMC6352 is not set
 CONFIG_DS1682=m
-CONFIG_BMP085=m
+# CONFIG_TI_DAC7512 is not set
+# CONFIG_BMP085_I2C is not set
+# CONFIG_BMP085_SPI is not set
 CONFIG_USB_SWITCH_FSA9480=m
-CONFIG_C2PORT=m
+# CONFIG_LATTICE_ECP3_CONFIG is not set
+# CONFIG_SRAM is not set
+# CONFIG_C2PORT is not set
 
 #
 # EEPROM support
 #
 CONFIG_EEPROM_AT24=m
+# CONFIG_EEPROM_AT25 is not set
 CONFIG_EEPROM_LEGACY=m
 CONFIG_EEPROM_MAX6875=m
 CONFIG_EEPROM_93CX6=m
-CONFIG_IWMC3200TOP=m
-# CONFIG_IWMC3200TOP_DEBUG is not set
-# CONFIG_IWMC3200TOP_DEBUGFS is not set
+# CONFIG_EEPROM_93XX46 is not set
 
 #
 # Texas Instruments shared transport line discipline
 #
-CONFIG_TI_ST=m
-CONFIG_SENSORS_LIS3_I2C=m
+# CONFIG_TI_ST is not set
+# CONFIG_SENSORS_LIS3_SPI is not set
+# CONFIG_SENSORS_LIS3_I2C is not set
 
 #
 # Altera FPGA firmware download module
@@ -1195,7 +1252,6 @@ CONFIG_SCSI_MULTI_LUN=y
 # CONFIG_SCSI_CONSTANTS is not set
 # CONFIG_SCSI_LOGGING is not set
 # CONFIG_SCSI_SCAN_ASYNC is not set
-CONFIG_SCSI_WAIT_SCAN=m
 
 #
 # SCSI Transports
@@ -1211,6 +1267,8 @@ CONFIG_SCSI_SRP_ATTRS=m
 CONFIG_SCSI_LOWLEVEL=y
 CONFIG_ISCSI_TCP=m
 CONFIG_ISCSI_BOOT_SYSFS=m
+CONFIG_SCSI_UFSHCD=m
+CONFIG_SCSI_UFSHCD_PLATFORM=m
 CONFIG_LIBFC=m
 CONFIG_LIBFCOE=m
 # CONFIG_SCSI_DEBUG is not set
@@ -1231,31 +1289,8 @@ CONFIG_SATA_PMP=y
 #
 # Controllers with non-SFF native interface
 #
-CONFIG_SATA_AHCI_PLATFORM=m
-CONFIG_ATA_SFF=y
-
-#
-# SFF controllers with custom DMA interface
-#
-CONFIG_ATA_BMDMA=y
-
-#
-# SATA SFF controllers with BMDMA
-#
-CONFIG_SATA_MV=m
-
-#
-# PATA SFF controllers with BMDMA
-#
-CONFIG_PATA_ARASAN_CF=m
-
-#
-# PIO-only SFF controllers
-#
-
-#
-# Generic fallback / legacy drivers
-#
+# CONFIG_SATA_AHCI_PLATFORM is not set
+# CONFIG_ATA_SFF is not set
 CONFIG_MD=y
 CONFIG_BLK_DEV_MD=m
 CONFIG_MD_LINEAR=m
@@ -1265,15 +1300,22 @@ CONFIG_MD_RAID10=m
 CONFIG_MD_RAID456=m
 CONFIG_MD_MULTIPATH=m
 # CONFIG_MD_FAULTY is not set
+CONFIG_BCACHE=m
+# CONFIG_BCACHE_DEBUG is not set
+# CONFIG_BCACHE_EDEBUG is not set
+# CONFIG_BCACHE_CLOSURES_DEBUG is not set
 CONFIG_BLK_DEV_DM=m
 # CONFIG_DM_DEBUG is not set
 CONFIG_DM_BUFIO=m
+CONFIG_DM_BIO_PRISON=m
 CONFIG_DM_PERSISTENT_DATA=m
 CONFIG_DM_CRYPT=m
 CONFIG_DM_SNAPSHOT=m
 CONFIG_DM_THIN_PROVISIONING=m
 # CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
-# CONFIG_DM_DEBUG_SPACE_MAPS is not set
+CONFIG_DM_CACHE=m
+CONFIG_DM_CACHE_MQ=m
+CONFIG_DM_CACHE_CLEANER=m
 CONFIG_DM_MIRROR=m
 CONFIG_DM_RAID=m
 CONFIG_DM_LOG_USERSPACE=m
@@ -1284,27 +1326,33 @@ CONFIG_DM_MULTIPATH_ST=m
 CONFIG_DM_DELAY=m
 CONFIG_DM_UEVENT=y
 CONFIG_DM_FLAKEY=m
+CONFIG_DM_VERITY=m
 # CONFIG_TARGET_CORE is not set
 CONFIG_NETDEVICES=y
 CONFIG_NET_CORE=y
 CONFIG_BONDING=m
 CONFIG_DUMMY=m
 CONFIG_EQUALIZER=m
-CONFIG_IMQ=m
-# CONFIG_IMQ_BEHAVIOR_AA is not set
-CONFIG_IMQ_BEHAVIOR_AB=y
-# CONFIG_IMQ_BEHAVIOR_BA is not set
-# CONFIG_IMQ_BEHAVIOR_BB is not set
-CONFIG_IMQ_NUM_DEVS=2
 CONFIG_MII=m
-CONFIG_IEEE802154_DRIVERS=m
-CONFIG_IEEE802154_FAKEHARD=m
 CONFIG_IFB=m
+CONFIG_NET_TEAM=m
+CONFIG_NET_TEAM_MODE_BROADCAST=m
+CONFIG_NET_TEAM_MODE_ROUNDROBIN=m
+CONFIG_NET_TEAM_MODE_RANDOM=m
+CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m
+CONFIG_NET_TEAM_MODE_LOADBALANCE=m
 CONFIG_MACVLAN=m
 CONFIG_MACVTAP=m
+CONFIG_VXLAN=m
 # CONFIG_NETCONSOLE is not set
 # CONFIG_NETPOLL is not set
 # CONFIG_NET_POLL_CONTROLLER is not set
+CONFIG_IMQ=m
+# CONFIG_IMQ_BEHAVIOR_AA is not set
+CONFIG_IMQ_BEHAVIOR_AB=y
+# CONFIG_IMQ_BEHAVIOR_BA is not set
+# CONFIG_IMQ_BEHAVIOR_BB is not set
+CONFIG_IMQ_NUM_DEVS=2
 CONFIG_TUN=m
 CONFIG_VETH=m
 CONFIG_ATM_DRIVERS=y
@@ -1314,32 +1362,48 @@ CONFIG_ATM_TCP=m
 #
 # CAIF transport drivers
 #
+
+#
+# Distributed Switch Architecture drivers
+#
+CONFIG_NET_DSA_MV88E6XXX=y
+CONFIG_NET_DSA_MV88E6060=y
+CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y
+CONFIG_NET_DSA_MV88E6131=y
+CONFIG_NET_DSA_MV88E6123_61_65=y
 CONFIG_ETHERNET=y
+CONFIG_NET_CADENCE=y
+CONFIG_ARM_AT91_ETHER=m
+CONFIG_MACB=m
 CONFIG_NET_VENDOR_BROADCOM=y
 CONFIG_B44=m
-CONFIG_NET_VENDOR_CHELSIO=y
+CONFIG_NET_CALXEDA_XGMAC=m
+CONFIG_NET_VENDOR_CIRRUS=y
+CONFIG_CS89x0=m
+CONFIG_CS89x0_PLATFORM=y
 CONFIG_DM9000=m
 # CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL is not set
 CONFIG_DNET=m
-CONFIG_NET_VENDOR_DLINK=y
-CONFIG_DE600=m
-CONFIG_DE620=m
 CONFIG_NET_VENDOR_FARADAY=y
-# CONFIG_FTMAC100 is not set
-# CONFIG_FTGMAC100 is not set
+CONFIG_FTMAC100=m
+CONFIG_FTGMAC100=m
 CONFIG_NET_VENDOR_INTEL=y
 CONFIG_NET_VENDOR_I825XX=y
 CONFIG_NET_VENDOR_MARVELL=y
+CONFIG_MVMDIO=m
 CONFIG_NET_VENDOR_MICREL=y
 CONFIG_KS8842=m
+CONFIG_KS8851=m
 CONFIG_KS8851_MLL=m
+CONFIG_NET_VENDOR_MICROCHIP=y
+CONFIG_ENC28J60=m
+# CONFIG_ENC28J60_WRITEVERIFY is not set
 CONFIG_NET_VENDOR_NATSEMI=y
 CONFIG_NET_VENDOR_8390=y
 CONFIG_AX88796=m
 CONFIG_AX88796_93CX6=y
 CONFIG_ETHOC=m
 CONFIG_NET_VENDOR_SEEQ=y
-CONFIG_SEEQ8005=m
 CONFIG_NET_VENDOR_SMSC=y
 CONFIG_SMC91X=m
 CONFIG_SMC911X=m
@@ -1347,14 +1411,21 @@ CONFIG_SMSC911X=m
 # CONFIG_SMSC911X_ARCH_HOOKS is not set
 CONFIG_NET_VENDOR_STMICRO=y
 CONFIG_STMMAC_ETH=m
+CONFIG_STMMAC_PLATFORM=y
 # CONFIG_STMMAC_DA is not set
-CONFIG_STMMAC_RING=y
-# CONFIG_STMMAC_CHAINED is not set
+CONFIG_NET_VENDOR_WIZNET=y
+CONFIG_WIZNET_W5100=m
+CONFIG_WIZNET_W5300=m
+# CONFIG_WIZNET_BUS_DIRECT is not set
+# CONFIG_WIZNET_BUS_INDIRECT is not set
+CONFIG_WIZNET_BUS_ANY=y
 CONFIG_PHYLIB=y
 
 #
 # MII PHY device drivers
 #
+CONFIG_AT803X_PHY=m
+CONFIG_AMD_PHY=m
 CONFIG_MARVELL_PHY=m
 CONFIG_DAVICOM_PHY=m
 CONFIG_QSEMI_PHY=m
@@ -1363,6 +1434,7 @@ CONFIG_CICADA_PHY=m
 CONFIG_VITESSE_PHY=m
 CONFIG_SMSC_PHY=m
 CONFIG_BROADCOM_PHY=m
+CONFIG_BCM87XX_PHY=m
 CONFIG_ICPLUS_PHY=m
 CONFIG_REALTEK_PHY=m
 CONFIG_NATIONAL_PHY=m
@@ -1372,6 +1444,10 @@ CONFIG_MICREL_PHY=m
 # CONFIG_FIXED_PHY is not set
 CONFIG_MDIO_BITBANG=m
 CONFIG_MDIO_GPIO=m
+CONFIG_MDIO_BUS_MUX=m
+CONFIG_MDIO_BUS_MUX_GPIO=m
+CONFIG_MDIO_BUS_MUX_MMIOREG=m
+# CONFIG_MICREL_KS8995MA is not set
 # CONFIG_PLIP is not set
 CONFIG_PPP=m
 CONFIG_PPP_BSDCOMP=m
@@ -1398,11 +1474,14 @@ CONFIG_USB_CATC=m
 CONFIG_USB_KAWETH=m
 CONFIG_USB_PEGASUS=m
 CONFIG_USB_RTL8150=m
+CONFIG_USB_RTL8152=m
 CONFIG_USB_USBNET=m
 CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_AX88179_178A=m
 CONFIG_USB_NET_CDCETHER=m
 CONFIG_USB_NET_CDC_EEM=m
 CONFIG_USB_NET_CDC_NCM=m
+CONFIG_USB_NET_CDC_MBIM=m
 CONFIG_USB_NET_DM9601=m
 CONFIG_USB_NET_SMSC75XX=m
 CONFIG_USB_NET_SMSC95XX=m
@@ -1421,34 +1500,117 @@ CONFIG_USB_KC2190=y
 CONFIG_USB_NET_ZAURUS=m
 CONFIG_USB_NET_CX82310_ETH=m
 CONFIG_USB_NET_KALMIA=m
+CONFIG_USB_NET_QMI_WWAN=m
 CONFIG_USB_HSO=m
 CONFIG_USB_NET_INT51X1=m
 # CONFIG_USB_IPHETH is not set
 CONFIG_USB_SIERRA_NET=m
 CONFIG_USB_VL600=m
 CONFIG_WLAN=y
-# CONFIG_LIBERTAS_THINFIRM is not set
+CONFIG_LIBERTAS_THINFIRM=m
+# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set
+CONFIG_LIBERTAS_THINFIRM_USB=m
 CONFIG_AT76C50X_USB=m
 CONFIG_USB_ZD1201=m
 CONFIG_USB_NET_RNDIS_WLAN=m
-# CONFIG_RTL8187 is not set
+CONFIG_RTL8187=m
+CONFIG_RTL8187_LEDS=y
 # CONFIG_MAC80211_HWSIM is not set
-# CONFIG_ATH_COMMON is not set
-# CONFIG_B43 is not set
-# CONFIG_B43LEGACY is not set
-# CONFIG_BRCMFMAC is not set
+CONFIG_ATH_COMMON=m
+CONFIG_ATH_CARDS=m
+# CONFIG_ATH_DEBUG is not set
+CONFIG_ATH9K_HW=m
+CONFIG_ATH9K_COMMON=m
+CONFIG_ATH9K_BTCOEX_SUPPORT=y
+CONFIG_ATH9K=m
+# CONFIG_ATH9K_AHB is not set
+# CONFIG_ATH9K_DEBUGFS is not set
+CONFIG_ATH9K_LEGACY_RATE_CONTROL=y
+CONFIG_ATH9K_HTC=m
+CONFIG_CARL9170=m
+CONFIG_CARL9170_LEDS=y
+CONFIG_CARL9170_WPC=y
+CONFIG_CARL9170_HWRNG=y
+CONFIG_ATH6KL=m
+CONFIG_ATH6KL_SDIO=m
+CONFIG_ATH6KL_USB=m
+# CONFIG_ATH6KL_DEBUG is not set
+CONFIG_AR5523=m
+CONFIG_B43=m
+CONFIG_B43_BCMA=y
+# CONFIG_B43_BCMA_EXTRA is not set
+CONFIG_B43_SSB=y
+# CONFIG_B43_SDIO is not set
+CONFIG_B43_BCMA_PIO=y
+CONFIG_B43_PIO=y
+# CONFIG_B43_PHY_N is not set
+CONFIG_B43_PHY_LP=y
+# CONFIG_B43_PHY_HT is not set
+CONFIG_B43_LEDS=y
+CONFIG_B43_HWRNG=y
+# CONFIG_B43_DEBUG is not set
+CONFIG_B43LEGACY=m
+CONFIG_B43LEGACY_LEDS=y
+CONFIG_B43LEGACY_HWRNG=y
+CONFIG_B43LEGACY_DEBUG=y
+CONFIG_B43LEGACY_DMA=y
+CONFIG_B43LEGACY_PIO=y
+CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
+# CONFIG_B43LEGACY_DMA_MODE is not set
+# CONFIG_B43LEGACY_PIO_MODE is not set
+CONFIG_BRCMUTIL=m
+CONFIG_BRCMSMAC=m
+CONFIG_BRCMFMAC=m
+CONFIG_BRCMFMAC_SDIO=y
+# CONFIG_BRCMFMAC_USB is not set
+# CONFIG_BRCM_TRACING is not set
+# CONFIG_BRCMDBG is not set
 CONFIG_HOSTAP=m
 CONFIG_HOSTAP_FIRMWARE=y
 # CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-# CONFIG_IWM is not set
-# CONFIG_LIBERTAS is not set
-# CONFIG_P54_COMMON is not set
-# CONFIG_RT2X00 is not set
-# CONFIG_WL1251 is not set
-# CONFIG_WL12XX_MENU is not set
-# CONFIG_ZD1211RW is not set
-# CONFIG_MWIFIEX is not set
-# CONFIG_RTL8192CU is not set
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
+CONFIG_LIBERTAS_SDIO=m
+CONFIG_LIBERTAS_SPI=m
+# CONFIG_LIBERTAS_DEBUG is not set
+# CONFIG_LIBERTAS_MESH is not set
+CONFIG_P54_COMMON=m
+CONFIG_P54_USB=m
+CONFIG_P54_SPI=m
+# CONFIG_P54_SPI_DEFAULT_EEPROM is not set
+CONFIG_P54_LEDS=y
+CONFIG_RT2X00=m
+CONFIG_RT2500USB=m
+CONFIG_RT73USB=m
+CONFIG_RT2800USB=m
+CONFIG_RT2800USB_RT33XX=y
+CONFIG_RT2800USB_RT35XX=y
+CONFIG_RT2800USB_RT53XX=y
+CONFIG_RT2800USB_RT55XX=y
+CONFIG_RT2800USB_UNKNOWN=y
+CONFIG_RT2800_LIB=m
+CONFIG_RT2X00_LIB_USB=m
+CONFIG_RT2X00_LIB=m
+CONFIG_RT2X00_LIB_FIRMWARE=y
+CONFIG_RT2X00_LIB_CRYPTO=y
+CONFIG_RT2X00_LIB_LEDS=y
+# CONFIG_RT2X00_DEBUG is not set
+CONFIG_WL_TI=y
+CONFIG_WL1251=m
+# CONFIG_WL1251_SPI is not set
+CONFIG_WL1251_SDIO=m
+CONFIG_WL12XX=m
+CONFIG_WL18XX=m
+CONFIG_WLCORE=m
+# CONFIG_WLCORE_SPI is not set
+CONFIG_WLCORE_SDIO=m
+CONFIG_WILINK_PLATFORM_DATA=y
+CONFIG_ZD1211RW=m
+# CONFIG_ZD1211RW_DEBUG is not set
+CONFIG_MWIFIEX=m
+CONFIG_MWIFIEX_SDIO=m
+CONFIG_MWIFIEX_USB=m
+CONFIG_RTL8192CU=m
 
 #
 # Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -1466,6 +1628,11 @@ CONFIG_HDLC_PPP=m
 #
 CONFIG_DLCI=m
 CONFIG_DLCI_MAX=8
+CONFIG_IEEE802154_DRIVERS=m
+CONFIG_IEEE802154_FAKEHARD=m
+CONFIG_IEEE802154_FAKELB=m
+# CONFIG_IEEE802154_AT86RF230 is not set
+# CONFIG_IEEE802154_MRF24J40 is not set
 CONFIG_ISDN=y
 CONFIG_ISDN_I4L=m
 CONFIG_ISDN_PPP=y
@@ -1561,7 +1728,6 @@ CONFIG_MISDN_L1OIP=m
 #
 CONFIG_MISDN_HFCUSB=m
 CONFIG_ISDN_HDLC=m
-# CONFIG_PHONE is not set
 
 #
 # Input device support
@@ -1570,6 +1736,7 @@ CONFIG_INPUT=y
 CONFIG_INPUT_FF_MEMLESS=m
 CONFIG_INPUT_POLLDEV=m
 CONFIG_INPUT_SPARSEKMAP=m
+CONFIG_INPUT_MATRIXKMAP=m
 
 #
 # Userland interfaces
@@ -1579,7 +1746,7 @@ CONFIG_INPUT_MOUSEDEV=y
 CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
 CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
 # CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_EVDEV is not set
+CONFIG_INPUT_EVDEV=y
 # CONFIG_INPUT_EVBUG is not set
 
 #
@@ -1594,13 +1761,16 @@ CONFIG_KEYBOARD_QT2160=m
 CONFIG_KEYBOARD_LKKBD=m
 CONFIG_KEYBOARD_GPIO=m
 CONFIG_KEYBOARD_TCA6416=m
+CONFIG_KEYBOARD_TCA8418=m
 CONFIG_KEYBOARD_MATRIX=m
 CONFIG_KEYBOARD_LM8323=m
+CONFIG_KEYBOARD_LM8333=m
 CONFIG_KEYBOARD_MAX7359=m
 CONFIG_KEYBOARD_MCS=m
 CONFIG_KEYBOARD_MPR121=m
 CONFIG_KEYBOARD_NEWTON=m
 CONFIG_KEYBOARD_OPENCORES=m
+CONFIG_KEYBOARD_SAMSUNG=m
 CONFIG_KEYBOARD_STOWAWAY=m
 CONFIG_KEYBOARD_SUNKBD=m
 CONFIG_KEYBOARD_XTKBD=m
@@ -1609,23 +1779,24 @@ CONFIG_KEYBOARD_XTKBD=m
 # CONFIG_INPUT_TABLET is not set
 # CONFIG_INPUT_TOUCHSCREEN is not set
 CONFIG_INPUT_MISC=y
-CONFIG_INPUT_88PM860X_ONKEY=m
-CONFIG_INPUT_AD714X=m
-CONFIG_INPUT_AD714X_I2C=m
-CONFIG_INPUT_BMA150=m
+# CONFIG_INPUT_AD714X is not set
+# CONFIG_INPUT_BMA150 is not set
 # CONFIG_INPUT_MMA8450 is not set
 # CONFIG_INPUT_MPU3050 is not set
+# CONFIG_INPUT_GP2A is not set
+# CONFIG_INPUT_GPIO_TILT_POLLED is not set
 CONFIG_INPUT_ATI_REMOTE2=m
 CONFIG_INPUT_KEYSPAN_REMOTE=m
 # CONFIG_INPUT_KXTJ9 is not set
-CONFIG_INPUT_POWERMATE=m
-CONFIG_INPUT_YEALINK=m
-CONFIG_INPUT_CM109=m
+# CONFIG_INPUT_POWERMATE is not set
+# CONFIG_INPUT_YEALINK is not set
+# CONFIG_INPUT_CM109 is not set
 # CONFIG_INPUT_UINPUT is not set
-CONFIG_INPUT_PCF50633_PMU=m
-CONFIG_INPUT_PCF8574=m
-CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
+# CONFIG_INPUT_PCF8574 is not set
+CONFIG_INPUT_PWM_BEEPER=m
+# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set
 # CONFIG_INPUT_ADXL34X is not set
+# CONFIG_INPUT_IMS_PCU is not set
 # CONFIG_INPUT_CMA3000 is not set
 
 #
@@ -1639,11 +1810,14 @@ CONFIG_SERIO_LIBPS2=y
 # CONFIG_SERIO_RAW is not set
 CONFIG_SERIO_ALTERA_PS2=m
 CONFIG_SERIO_PS2MULT=m
+CONFIG_SERIO_ARC_PS2=m
+CONFIG_SERIO_APBPS2=m
 # CONFIG_GAMEPORT is not set
 
 #
 # Character devices
 #
+CONFIG_TTY=y
 CONFIG_VT=y
 CONFIG_CONSOLE_TRANSLATIONS=y
 CONFIG_VT_CONSOLE=y
@@ -1662,7 +1836,9 @@ CONFIG_DEVKMEM=y
 # Serial drivers
 #
 CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
 CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_DMA=y
 CONFIG_SERIAL_8250_NR_UARTS=4
 CONFIG_SERIAL_8250_RUNTIME_UARTS=4
 CONFIG_SERIAL_8250_EXTENDED=y
@@ -1671,6 +1847,7 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y
 CONFIG_SERIAL_8250_DETECT_IRQ=y
 CONFIG_SERIAL_8250_RSA=y
 CONFIG_SERIAL_8250_DW=m
+CONFIG_SERIAL_8250_EM=m
 
 #
 # Non-8250 serial port support
@@ -1679,15 +1856,21 @@ CONFIG_SERIAL_AMBA_PL010=y
 CONFIG_SERIAL_AMBA_PL010_CONSOLE=y
 CONFIG_SERIAL_AMBA_PL011=y
 CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
+# CONFIG_SERIAL_MAX3100 is not set
+# CONFIG_SERIAL_MAX310X is not set
 CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
 CONFIG_SERIAL_OF_PLATFORM=y
+CONFIG_SERIAL_SCCNXP=m
 CONFIG_SERIAL_TIMBERDALE=m
 CONFIG_SERIAL_ALTERA_JTAGUART=m
 CONFIG_SERIAL_ALTERA_UART=m
 CONFIG_SERIAL_ALTERA_UART_MAXPORTS=4
 CONFIG_SERIAL_ALTERA_UART_BAUDRATE=115200
+# CONFIG_SERIAL_IFX6X60 is not set
 CONFIG_SERIAL_XILINX_PS_UART=m
+CONFIG_SERIAL_ARC=m
+CONFIG_SERIAL_ARC_NR_PORTS=1
 CONFIG_PRINTER=m
 # CONFIG_LP_CONSOLE is not set
 CONFIG_PPDEV=m
@@ -1699,13 +1882,17 @@ CONFIG_IPMI_DEVICE_INTERFACE=m
 CONFIG_IPMI_SI=m
 CONFIG_IPMI_WATCHDOG=m
 CONFIG_IPMI_POWEROFF=m
-CONFIG_HW_RANDOM=m
-CONFIG_HW_RANDOM_TIMERIOMEM=m
+CONFIG_HW_RANDOM=y
+# CONFIG_HW_RANDOM_TIMERIOMEM is not set
+# CONFIG_HW_RANDOM_ATMEL is not set
+# CONFIG_HW_RANDOM_EXYNOS is not set
+CONFIG_HW_RANDOM_BCM2708=y
 CONFIG_NVRAM=m
 # CONFIG_R3964 is not set
 # CONFIG_RAW_DRIVER is not set
 # CONFIG_TCG_TPM is not set
-# CONFIG_RAMOOPS is not set
+CONFIG_BRCM_CHAR_DRIVERS=y
+CONFIG_BCM_VC_CMA=y
 CONFIG_I2C=y
 CONFIG_I2C_BOARDINFO=y
 CONFIG_I2C_COMPAT=y
@@ -1715,6 +1902,7 @@ CONFIG_I2C_MUX=m
 #
 # Multiplexer I2C Chip support
 #
+# CONFIG_I2C_ARB_GPIO_CHALLENGE is not set
 CONFIG_I2C_MUX_GPIO=m
 CONFIG_I2C_MUX_PCA9541=m
 CONFIG_I2C_MUX_PCA954x=m
@@ -1732,9 +1920,11 @@ CONFIG_I2C_ALGOPCA=m
 #
 CONFIG_I2C_BCM2708=m
 CONFIG_I2C_BCM2708_BAUDRATE=100000
+CONFIG_I2C_CBUS_GPIO=m
 CONFIG_I2C_DESIGNWARE_CORE=m
 CONFIG_I2C_DESIGNWARE_PLATFORM=m
 CONFIG_I2C_GPIO=m
+CONFIG_I2C_NOMADIK=m
 CONFIG_I2C_OCORES=m
 CONFIG_I2C_PCA_PLATFORM=m
 # CONFIG_I2C_PXA_PCI is not set
@@ -1757,7 +1947,45 @@ CONFIG_I2C_STUB=m
 # CONFIG_I2C_DEBUG_CORE is not set
 # CONFIG_I2C_DEBUG_ALGO is not set
 # CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_SPI is not set
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_ALTERA is not set
+CONFIG_SPI_BCM2708=m
+CONFIG_SPI_BITBANG=m
+# CONFIG_SPI_BUTTERFLY is not set
+CONFIG_SPI_GPIO=m
+# CONFIG_SPI_LM70_LLP is not set
+# CONFIG_SPI_FSL_SPI is not set
+CONFIG_SPI_OC_TINY=m
+CONFIG_SPI_PL022=m
+# CONFIG_SPI_PXA2XX_PCI is not set
+# CONFIG_SPI_SC18IS602 is not set
+# CONFIG_SPI_XCOMM is not set
+# CONFIG_SPI_XILINX is not set
+# CONFIG_SPI_DESIGNWARE is not set
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_TLE62X0 is not set
+
+#
+# Qualcomm MSM SSBI bus support
+#
+# CONFIG_SSBI is not set
+CONFIG_HSI=m
+CONFIG_HSI_BOARDINFO=y
+
+#
+# HSI clients
+#
+CONFIG_HSI_CHAR=m
 
 #
 # PPS support
@@ -1781,9 +2009,13 @@ CONFIG_PPS=m
 # PTP clock support
 #
 CONFIG_PTP_1588_CLOCK=m
-CONFIG_DP83640_PHY=m
+# CONFIG_DP83640_PHY is not set
+# CONFIG_PTP_1588_CLOCK_PCH is not set
+CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
 CONFIG_ARCH_REQUIRE_GPIOLIB=y
+CONFIG_GPIO_DEVRES=y
 CONFIG_GPIOLIB=y
+CONFIG_OF_GPIO=y
 # CONFIG_DEBUG_GPIO is not set
 CONFIG_GPIO_SYSFS=y
 CONFIG_GPIO_GENERIC=m
@@ -1793,8 +2025,11 @@ CONFIG_GPIO_MAX730X=m
 # Memory mapped GPIO drivers:
 #
 CONFIG_GPIO_GENERIC_PLATFORM=m
-CONFIG_GPIO_IT8761E=m
+# CONFIG_GPIO_EM is not set
 CONFIG_GPIO_PL061=y
+CONFIG_GPIO_RCAR=m
+CONFIG_GPIO_TS5500=m
+CONFIG_GPIO_GRGPIO=m
 
 #
 # I2C GPIO expanders:
@@ -1804,6 +2039,7 @@ CONFIG_GPIO_MAX732X=m
 CONFIG_GPIO_PCF857X=m
 # CONFIG_GPIO_SX150X is not set
 CONFIG_GPIO_ADP5588=m
+CONFIG_GPIO_ADNP=m
 
 #
 # PCI GPIO expanders:
@@ -1812,16 +2048,22 @@ CONFIG_GPIO_ADP5588=m
 #
 # SPI GPIO expanders:
 #
+CONFIG_GPIO_MAX7301=m
 CONFIG_GPIO_MCP23S08=m
+CONFIG_GPIO_MC33880=m
+CONFIG_GPIO_74X164=m
 
 #
 # AC97 GPIO expanders:
 #
-# CONFIG_GPIO_UCB1400 is not set
 
 #
 # MODULbus GPIO expanders:
 #
+
+#
+# USB GPIO expanders:
+#
 CONFIG_W1=m
 CONFIG_W1_CON=y
 
@@ -1839,28 +2081,40 @@ CONFIG_W1_MASTER_GPIO=m
 CONFIG_W1_SLAVE_THERM=m
 CONFIG_W1_SLAVE_SMEM=m
 CONFIG_W1_SLAVE_DS2408=m
+CONFIG_W1_SLAVE_DS2408_READBACK=y
+CONFIG_W1_SLAVE_DS2413=m
 CONFIG_W1_SLAVE_DS2423=m
 CONFIG_W1_SLAVE_DS2431=m
 CONFIG_W1_SLAVE_DS2433=m
 CONFIG_W1_SLAVE_DS2433_CRC=y
 CONFIG_W1_SLAVE_DS2760=m
 CONFIG_W1_SLAVE_DS2780=m
+CONFIG_W1_SLAVE_DS2781=m
+CONFIG_W1_SLAVE_DS28E04=m
 CONFIG_W1_SLAVE_BQ27000=m
 CONFIG_POWER_SUPPLY=y
 # CONFIG_POWER_SUPPLY_DEBUG is not set
 # CONFIG_PDA_POWER is not set
+# CONFIG_GENERIC_ADC_BATTERY is not set
 # CONFIG_TEST_POWER is not set
 # CONFIG_BATTERY_DS2760 is not set
 # CONFIG_BATTERY_DS2780 is not set
+# CONFIG_BATTERY_DS2781 is not set
 # CONFIG_BATTERY_DS2782 is not set
-# CONFIG_BATTERY_BQ20Z75 is not set
+# CONFIG_BATTERY_SBS is not set
 # CONFIG_BATTERY_BQ27x00 is not set
 # CONFIG_BATTERY_MAX17040 is not set
 # CONFIG_BATTERY_MAX17042 is not set
-# CONFIG_CHARGER_PCF50633 is not set
-# CONFIG_CHARGER_ISP1704 is not set
 # CONFIG_CHARGER_MAX8903 is not set
+# CONFIG_CHARGER_LP8727 is not set
 # CONFIG_CHARGER_GPIO is not set
+# CONFIG_CHARGER_MANAGER is not set
+# CONFIG_CHARGER_BQ2415X is not set
+# CONFIG_CHARGER_SMB347 is not set
+# CONFIG_BATTERY_GOLDFISH is not set
+# CONFIG_POWER_RESET is not set
+# CONFIG_POWER_RESET_RESTART is not set
+# CONFIG_POWER_AVS is not set
 CONFIG_HWMON=m
 CONFIG_HWMON_VID=m
 # CONFIG_HWMON_DEBUG_CHIP is not set
@@ -1868,14 +2122,19 @@ CONFIG_HWMON_VID=m
 #
 # Native drivers
 #
+CONFIG_SENSORS_AD7314=m
 CONFIG_SENSORS_AD7414=m
 CONFIG_SENSORS_AD7418=m
+CONFIG_SENSORS_ADCXX=m
 CONFIG_SENSORS_ADM1021=m
 CONFIG_SENSORS_ADM1025=m
 CONFIG_SENSORS_ADM1026=m
 CONFIG_SENSORS_ADM1029=m
 CONFIG_SENSORS_ADM1031=m
 CONFIG_SENSORS_ADM9240=m
+CONFIG_SENSORS_ADT7X10=m
+CONFIG_SENSORS_ADT7310=m
+CONFIG_SENSORS_ADT7410=m
 CONFIG_SENSORS_ADT7411=m
 CONFIG_SENSORS_ADT7462=m
 CONFIG_SENSORS_ADT7470=m
@@ -1891,12 +2150,15 @@ CONFIG_SENSORS_G760A=m
 CONFIG_SENSORS_GL518SM=m
 CONFIG_SENSORS_GL520SM=m
 CONFIG_SENSORS_GPIO_FAN=m
+CONFIG_SENSORS_HIH6130=m
 CONFIG_SENSORS_IBMAEM=m
 CONFIG_SENSORS_IBMPEX=m
+CONFIG_SENSORS_IIO_HWMON=m
 CONFIG_SENSORS_IT87=m
 CONFIG_SENSORS_JC42=m
 CONFIG_SENSORS_LINEAGE=m
 CONFIG_SENSORS_LM63=m
+CONFIG_SENSORS_LM70=m
 CONFIG_SENSORS_LM73=m
 CONFIG_SENSORS_LM75=m
 CONFIG_SENSORS_LM77=m
@@ -1912,14 +2174,20 @@ CONFIG_SENSORS_LTC4151=m
 CONFIG_SENSORS_LTC4215=m
 CONFIG_SENSORS_LTC4245=m
 CONFIG_SENSORS_LTC4261=m
+CONFIG_SENSORS_LM95234=m
 CONFIG_SENSORS_LM95241=m
 CONFIG_SENSORS_LM95245=m
+CONFIG_SENSORS_MAX1111=m
 CONFIG_SENSORS_MAX16065=m
 CONFIG_SENSORS_MAX1619=m
 CONFIG_SENSORS_MAX1668=m
+CONFIG_SENSORS_MAX197=m
 CONFIG_SENSORS_MAX6639=m
 CONFIG_SENSORS_MAX6642=m
 CONFIG_SENSORS_MAX6650=m
+CONFIG_SENSORS_MAX6697=m
+CONFIG_SENSORS_MCP3021=m
+CONFIG_SENSORS_NCT6775=m
 CONFIG_SENSORS_NTC_THERMISTOR=m
 CONFIG_SENSORS_PC87360=m
 CONFIG_SENSORS_PC87427=m
@@ -1950,7 +2218,10 @@ CONFIG_SENSORS_SCH5627=m
 CONFIG_SENSORS_SCH5636=m
 CONFIG_SENSORS_ADS1015=m
 CONFIG_SENSORS_ADS7828=m
+CONFIG_SENSORS_ADS7871=m
 CONFIG_SENSORS_AMC6821=m
+CONFIG_SENSORS_INA209=m
+CONFIG_SENSORS_INA2XX=m
 CONFIG_SENSORS_THMC50=m
 CONFIG_SENSORS_TMP102=m
 CONFIG_SENSORS_TMP401=m
@@ -1967,6 +2238,14 @@ CONFIG_SENSORS_W83L786NG=m
 CONFIG_SENSORS_W83627HF=m
 CONFIG_SENSORS_W83627EHF=m
 CONFIG_THERMAL=y
+CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
+# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set
+# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
+CONFIG_THERMAL_GOV_FAIR_SHARE=y
+CONFIG_THERMAL_GOV_STEP_WISE=y
+CONFIG_THERMAL_GOV_USER_SPACE=y
+CONFIG_CPU_THERMAL=y
+# CONFIG_THERMAL_EMULATION is not set
 CONFIG_THERMAL_BCM2835=y
 CONFIG_WATCHDOG=y
 CONFIG_WATCHDOG_CORE=y
@@ -1976,9 +2255,9 @@ CONFIG_WATCHDOG_CORE=y
 # Watchdog Device Drivers
 #
 CONFIG_SOFT_WATCHDOG=m
-CONFIG_ARM_SP805_WATCHDOG=m
-CONFIG_DW_WATCHDOG=m
-CONFIG_MAX63XX_WATCHDOG=m
+# CONFIG_ARM_SP805_WATCHDOG is not set
+# CONFIG_DW_WATCHDOG is not set
+# CONFIG_MAX63XX_WATCHDOG is not set
 CONFIG_BCM2708_WDT=m
 
 #
@@ -1991,57 +2270,92 @@ CONFIG_SSB_POSSIBLE=y
 # Sonics Silicon Backplane
 #
 CONFIG_SSB=m
+CONFIG_SSB_BLOCKIO=y
 CONFIG_SSB_SDIOHOST_POSSIBLE=y
 CONFIG_SSB_SDIOHOST=y
 # CONFIG_SSB_DEBUG is not set
+CONFIG_SSB_DRIVER_GPIO=y
 CONFIG_BCMA_POSSIBLE=y
 
 #
 # Broadcom specific AMBA
 #
-CONFIG_BCMA=m
+CONFIG_BCMA=y
+CONFIG_BCMA_BLOCKIO=y
+CONFIG_BCMA_DRIVER_GMAC_CMN=y
+CONFIG_BCMA_DRIVER_GPIO=y
 # CONFIG_BCMA_DEBUG is not set
 
 #
 # Multifunction device drivers
 #
-CONFIG_MFD_CORE=y
-CONFIG_MFD_88PM860X=y
-CONFIG_MFD_SM501=m
-# CONFIG_MFD_SM501_GPIO is not set
+CONFIG_MFD_CORE=m
+# CONFIG_MFD_AS3711 is not set
+# CONFIG_PMIC_ADP5520 is not set
+# CONFIG_MFD_AAT2870_CORE is not set
+# CONFIG_MFD_CROS_EC is not set
 # CONFIG_MFD_ASIC3 is not set
+# CONFIG_PMIC_DA903X is not set
+# CONFIG_MFD_DA9052_SPI is not set
+# CONFIG_MFD_DA9052_I2C is not set
+# CONFIG_MFD_DA9055 is not set
+# CONFIG_MFD_MC13XXX_SPI is not set
+# CONFIG_MFD_MC13XXX_I2C is not set
 # CONFIG_HTC_EGPIO is not set
-CONFIG_HTC_PASIC3=m
+# CONFIG_HTC_PASIC3 is not set
 # CONFIG_HTC_I2CPLD is not set
-CONFIG_UCB1400_CORE=m
-CONFIG_TPS6105X=m
-CONFIG_TPS65010=m
-CONFIG_TPS6507X=m
+# CONFIG_MFD_88PM800 is not set
+# CONFIG_MFD_88PM805 is not set
+# CONFIG_MFD_88PM860X is not set
+# CONFIG_MFD_MAX77686 is not set
+# CONFIG_MFD_MAX77693 is not set
+# CONFIG_MFD_MAX8907 is not set
+# CONFIG_MFD_MAX8925 is not set
+# CONFIG_MFD_MAX8997 is not set
+# CONFIG_MFD_MAX8998 is not set
+# CONFIG_EZX_PCAP is not set
+# CONFIG_MFD_VIPERBOARD is not set
+# CONFIG_MFD_RETU is not set
+# CONFIG_MFD_PCF50633 is not set
+# CONFIG_UCB1400_CORE is not set
+# CONFIG_MFD_RC5T583 is not set
+# CONFIG_MFD_SEC_CORE is not set
+# CONFIG_MFD_SI476X_CORE is not set
+# CONFIG_MFD_SM501 is not set
+# CONFIG_MFD_SMSC is not set
+# CONFIG_ABX500_CORE is not set
+# CONFIG_MFD_STMPE is not set
+# CONFIG_MFD_SYSCON is not set
+# CONFIG_MFD_TI_AM335X_TSCADC is not set
+# CONFIG_MFD_LP8788 is not set
+# CONFIG_MFD_PALMAS is not set
+# CONFIG_TPS6105X is not set
+# CONFIG_TPS65010 is not set
+# CONFIG_TPS6507X is not set
+# CONFIG_MFD_TPS65090 is not set
+# CONFIG_MFD_TPS65217 is not set
 # CONFIG_MFD_TPS6586X is not set
 # CONFIG_MFD_TPS65910 is not set
+# CONFIG_MFD_TPS65912 is not set
 # CONFIG_MFD_TPS65912_I2C is not set
+# CONFIG_MFD_TPS65912_SPI is not set
+# CONFIG_MFD_TPS80031 is not set
 # CONFIG_TWL4030_CORE is not set
-# CONFIG_MFD_STMPE is not set
+# CONFIG_TWL6040_CORE is not set
+# CONFIG_MFD_WL1273_CORE is not set
+# CONFIG_MFD_LM3533 is not set
 # CONFIG_MFD_TC3589X is not set
 # CONFIG_MFD_TMIO is not set
 # CONFIG_MFD_T7L66XB is not set
 # CONFIG_MFD_TC6387XB is not set
 # CONFIG_MFD_TC6393XB is not set
-# CONFIG_PMIC_DA903X is not set
-# CONFIG_PMIC_ADP5520 is not set
-# CONFIG_MFD_MAX8925 is not set
-# CONFIG_MFD_MAX8997 is not set
-# CONFIG_MFD_MAX8998 is not set
-CONFIG_MFD_WM8400=m
+# CONFIG_MFD_ARIZONA_I2C is not set
+# CONFIG_MFD_ARIZONA_SPI is not set
+# CONFIG_MFD_WM8400 is not set
 # CONFIG_MFD_WM831X_I2C is not set
+# CONFIG_MFD_WM831X_SPI is not set
 # CONFIG_MFD_WM8350_I2C is not set
 # CONFIG_MFD_WM8994 is not set
-CONFIG_MFD_PCF50633=m
-CONFIG_PCF50633_ADC=m
-CONFIG_PCF50633_GPIO=m
-# CONFIG_ABX500_CORE is not set
-CONFIG_MFD_WL1273_CORE=m
-# CONFIG_MFD_AAT2870_CORE is not set
 CONFIG_REGULATOR=y
 # CONFIG_REGULATOR_DEBUG is not set
 # CONFIG_REGULATOR_DUMMY is not set
@@ -2049,265 +2363,437 @@ CONFIG_REGULATOR_FIXED_VOLTAGE=m
 # CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
 # CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
 CONFIG_REGULATOR_GPIO=m
-# CONFIG_REGULATOR_BQ24022 is not set
+# CONFIG_REGULATOR_AD5398 is not set
+# CONFIG_REGULATOR_FAN53555 is not set
+# CONFIG_REGULATOR_ISL6271A is not set
 # CONFIG_REGULATOR_MAX1586 is not set
 # CONFIG_REGULATOR_MAX8649 is not set
 # CONFIG_REGULATOR_MAX8660 is not set
 # CONFIG_REGULATOR_MAX8952 is not set
-# CONFIG_REGULATOR_WM8400 is not set
-# CONFIG_REGULATOR_PCF50633 is not set
+# CONFIG_REGULATOR_MAX8973 is not set
 # CONFIG_REGULATOR_LP3971 is not set
 # CONFIG_REGULATOR_LP3972 is not set
-# CONFIG_REGULATOR_TPS6105X is not set
+# CONFIG_REGULATOR_LP872X is not set
+# CONFIG_REGULATOR_LP8755 is not set
+# CONFIG_REGULATOR_TPS51632 is not set
+# CONFIG_REGULATOR_TPS62360 is not set
 # CONFIG_REGULATOR_TPS65023 is not set
 # CONFIG_REGULATOR_TPS6507X is not set
-# CONFIG_REGULATOR_88PM8607 is not set
-# CONFIG_REGULATOR_ISL6271A is not set
-# CONFIG_REGULATOR_AD5398 is not set
+# CONFIG_REGULATOR_TPS6524X is not set
 CONFIG_MEDIA_SUPPORT=m
 
 #
 # Multimedia core support
 #
+CONFIG_MEDIA_CAMERA_SUPPORT=y
+CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
+CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
+CONFIG_MEDIA_RADIO_SUPPORT=y
+CONFIG_MEDIA_RC_SUPPORT=y
 CONFIG_MEDIA_CONTROLLER=y
 CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L2_COMMON=m
 CONFIG_VIDEO_V4L2_SUBDEV_API=y
+CONFIG_VIDEO_V4L2=m
+# CONFIG_VIDEO_ADV_DEBUG is not set
+# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
+CONFIG_VIDEO_TUNER=m
+CONFIG_VIDEOBUF_GEN=m
+CONFIG_VIDEOBUF_VMALLOC=m
+CONFIG_VIDEOBUF_DVB=m
+CONFIG_VIDEOBUF2_CORE=m
+CONFIG_VIDEOBUF2_MEMOPS=m
+CONFIG_VIDEOBUF2_VMALLOC=m
+CONFIG_VIDEO_V4L2_INT_DEVICE=m
 CONFIG_DVB_CORE=m
 CONFIG_DVB_NET=y
-CONFIG_VIDEO_MEDIA=m
+CONFIG_TTPCI_EEPROM=m
+CONFIG_DVB_MAX_ADAPTERS=8
+# CONFIG_DVB_DYNAMIC_MINORS is not set
 
 #
-# Multimedia drivers
+# Media drivers
 #
 CONFIG_RC_CORE=m
-CONFIG_LIRC=m
 CONFIG_RC_MAP=m
-# CONFIG_IR_NEC_DECODER is not set
-# CONFIG_IR_RC5_DECODER is not set
-# CONFIG_IR_RC6_DECODER is not set
-# CONFIG_IR_JVC_DECODER is not set
-# CONFIG_IR_SONY_DECODER is not set
-# CONFIG_IR_RC5_SZ_DECODER is not set
-# CONFIG_IR_MCE_KBD_DECODER is not set
-# CONFIG_IR_LIRC_CODEC is not set
-# CONFIG_RC_ATI_REMOTE is not set
-# CONFIG_IR_IMON is not set
-# CONFIG_IR_MCEUSB is not set
-# CONFIG_IR_REDRAT3 is not set
-# CONFIG_IR_STREAMZAP is not set
-# CONFIG_RC_LOOPBACK is not set
-CONFIG_MEDIA_ATTACH=y
-CONFIG_MEDIA_TUNER=m
-# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
-CONFIG_MEDIA_TUNER_SIMPLE=m
-CONFIG_MEDIA_TUNER_TDA8290=m
-CONFIG_MEDIA_TUNER_TDA827X=m
-CONFIG_MEDIA_TUNER_TDA18271=m
-CONFIG_MEDIA_TUNER_TDA9887=m
-CONFIG_MEDIA_TUNER_TEA5761=m
-CONFIG_MEDIA_TUNER_TEA5767=m
-CONFIG_MEDIA_TUNER_MT20XX=m
-CONFIG_MEDIA_TUNER_XC2028=m
-CONFIG_MEDIA_TUNER_XC5000=m
-CONFIG_MEDIA_TUNER_XC4000=m
-CONFIG_MEDIA_TUNER_MC44S803=m
-CONFIG_VIDEO_V4L2=m
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
-# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set
-CONFIG_VIDEO_IR_I2C=m
+CONFIG_RC_DECODERS=y
+CONFIG_LIRC=m
+CONFIG_IR_LIRC_CODEC=m
+CONFIG_IR_NEC_DECODER=m
+CONFIG_IR_RC5_DECODER=m
+CONFIG_IR_RC6_DECODER=m
+CONFIG_IR_JVC_DECODER=m
+CONFIG_IR_SONY_DECODER=m
+CONFIG_IR_RC5_SZ_DECODER=m
+CONFIG_IR_SANYO_DECODER=m
+CONFIG_IR_MCE_KBD_DECODER=m
+CONFIG_RC_DEVICES=y
+CONFIG_RC_ATI_REMOTE=m
+CONFIG_IR_IMON=m
+CONFIG_IR_MCEUSB=m
+CONFIG_IR_REDRAT3=m
+CONFIG_IR_STREAMZAP=m
+CONFIG_IR_IGUANA=m
+CONFIG_IR_TTUSBIR=m
+CONFIG_RC_LOOPBACK=m
+CONFIG_IR_GPIO_CIR=m
+CONFIG_MEDIA_USB_SUPPORT=y
+
+#
+# Webcam devices
+#
+CONFIG_USB_VIDEO_CLASS=m
+CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
+CONFIG_USB_GSPCA=m
+CONFIG_USB_M5602=m
+CONFIG_USB_STV06XX=m
+CONFIG_USB_GL860=m
+CONFIG_USB_GSPCA_BENQ=m
+CONFIG_USB_GSPCA_CONEX=m
+CONFIG_USB_GSPCA_CPIA1=m
+CONFIG_USB_GSPCA_ETOMS=m
+CONFIG_USB_GSPCA_FINEPIX=m
+CONFIG_USB_GSPCA_JEILINJ=m
+CONFIG_USB_GSPCA_JL2005BCD=m
+CONFIG_USB_GSPCA_KINECT=m
+CONFIG_USB_GSPCA_KONICA=m
+CONFIG_USB_GSPCA_MARS=m
+CONFIG_USB_GSPCA_MR97310A=m
+CONFIG_USB_GSPCA_NW80X=m
+CONFIG_USB_GSPCA_OV519=m
+CONFIG_USB_GSPCA_OV534=m
+CONFIG_USB_GSPCA_OV534_9=m
+CONFIG_USB_GSPCA_PAC207=m
+CONFIG_USB_GSPCA_PAC7302=m
+CONFIG_USB_GSPCA_PAC7311=m
+CONFIG_USB_GSPCA_SE401=m
+CONFIG_USB_GSPCA_SN9C2028=m
+CONFIG_USB_GSPCA_SN9C20X=m
+CONFIG_USB_GSPCA_SONIXB=m
+CONFIG_USB_GSPCA_SONIXJ=m
+CONFIG_USB_GSPCA_SPCA500=m
+CONFIG_USB_GSPCA_SPCA501=m
+CONFIG_USB_GSPCA_SPCA505=m
+CONFIG_USB_GSPCA_SPCA506=m
+CONFIG_USB_GSPCA_SPCA508=m
+CONFIG_USB_GSPCA_SPCA561=m
+CONFIG_USB_GSPCA_SPCA1528=m
+CONFIG_USB_GSPCA_SQ905=m
+CONFIG_USB_GSPCA_SQ905C=m
+CONFIG_USB_GSPCA_SQ930X=m
+CONFIG_USB_GSPCA_STK014=m
+CONFIG_USB_GSPCA_STV0680=m
+CONFIG_USB_GSPCA_SUNPLUS=m
+CONFIG_USB_GSPCA_T613=m
+CONFIG_USB_GSPCA_TOPRO=m
+CONFIG_USB_GSPCA_TV8532=m
+CONFIG_USB_GSPCA_VC032X=m
+CONFIG_USB_GSPCA_VICAM=m
+CONFIG_USB_GSPCA_XIRLINK_CIT=m
+CONFIG_USB_GSPCA_ZC3XX=m
+CONFIG_USB_PWC=m
+# CONFIG_USB_PWC_DEBUG is not set
+CONFIG_USB_PWC_INPUT_EVDEV=y
+CONFIG_VIDEO_CPIA2=m
+CONFIG_USB_ZR364XX=m
+CONFIG_USB_STKWEBCAM=m
+CONFIG_USB_S2255=m
+CONFIG_USB_SN9C102=m
+
+#
+# Analog TV USB devices
+#
+CONFIG_VIDEO_PVRUSB2=m
+CONFIG_VIDEO_PVRUSB2_SYSFS=y
+CONFIG_VIDEO_PVRUSB2_DVB=y
+# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
+CONFIG_VIDEO_HDPVR=m
+CONFIG_VIDEO_TLG2300=m
+CONFIG_VIDEO_USBVISION=m
+CONFIG_VIDEO_STK1160=m
+CONFIG_VIDEO_STK1160_AC97=y
+
+#
+# Analog/digital TV USB devices
+#
+CONFIG_VIDEO_AU0828=m
+CONFIG_VIDEO_AU0828_V4L2=y
+CONFIG_VIDEO_CX231XX=m
+# CONFIG_VIDEO_CX231XX_RC is not set
+CONFIG_VIDEO_CX231XX_ALSA=m
+CONFIG_VIDEO_CX231XX_DVB=m
+CONFIG_VIDEO_TM6000=m
+CONFIG_VIDEO_TM6000_ALSA=m
+CONFIG_VIDEO_TM6000_DVB=m
+
+#
+# Digital TV USB devices
+#
+CONFIG_DVB_USB=m
+# CONFIG_DVB_USB_DEBUG is not set
+CONFIG_DVB_USB_A800=m
+CONFIG_DVB_USB_DIBUSB_MB=m
+# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set
+CONFIG_DVB_USB_DIBUSB_MC=m
+CONFIG_DVB_USB_DIB0700=m
+CONFIG_DVB_USB_UMT_010=m
+CONFIG_DVB_USB_CXUSB=m
+CONFIG_DVB_USB_M920X=m
+CONFIG_DVB_USB_DIGITV=m
+CONFIG_DVB_USB_VP7045=m
+CONFIG_DVB_USB_VP702X=m
+CONFIG_DVB_USB_GP8PSK=m
+CONFIG_DVB_USB_NOVA_T_USB2=m
+CONFIG_DVB_USB_TTUSB2=m
+CONFIG_DVB_USB_DTT200U=m
+CONFIG_DVB_USB_OPERA1=m
+CONFIG_DVB_USB_AF9005=m
+CONFIG_DVB_USB_AF9005_REMOTE=m
+CONFIG_DVB_USB_PCTV452E=m
+CONFIG_DVB_USB_DW2102=m
+CONFIG_DVB_USB_CINERGY_T2=m
+CONFIG_DVB_USB_DTV5100=m
+CONFIG_DVB_USB_FRIIO=m
+CONFIG_DVB_USB_AZ6027=m
+CONFIG_DVB_USB_TECHNISAT_USB2=m
+CONFIG_DVB_USB_V2=m
+CONFIG_DVB_USB_AF9015=m
+CONFIG_DVB_USB_AF9035=m
+CONFIG_DVB_USB_ANYSEE=m
+CONFIG_DVB_USB_AU6610=m
+CONFIG_DVB_USB_AZ6007=m
+CONFIG_DVB_USB_CE6230=m
+CONFIG_DVB_USB_EC168=m
+CONFIG_DVB_USB_GL861=m
+CONFIG_DVB_USB_IT913X=m
+CONFIG_DVB_USB_LME2510=m
+CONFIG_DVB_USB_MXL111SF=m
+CONFIG_DVB_USB_RTL28XXU=m
+CONFIG_DVB_USB_DVBSKY=m
+CONFIG_SMS_USB_DRV=m
+CONFIG_DVB_B2C2_FLEXCOP_USB=m
+CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG=y
+
+#
+# Webcam, TV (analog/digital) USB devices
+#
+CONFIG_VIDEO_EM28XX=m
+CONFIG_VIDEO_EM28XX_ALSA=m
+CONFIG_VIDEO_EM28XX_DVB=m
+CONFIG_VIDEO_EM28XX_RC=m
+CONFIG_V4L_PLATFORM_DRIVERS=y
+# CONFIG_VIDEO_TIMBERDALE is not set
+# CONFIG_SOC_CAMERA is not set
+# CONFIG_V4L_MEM2MEM_DRIVERS is not set
+# CONFIG_V4L_TEST_DRIVERS is not set
 
 #
-# Encoders, decoders, sensors and other helper chips
+# Supported MMC/SDIO adapters
 #
+# CONFIG_SMS_SDIO_DRV is not set
+# CONFIG_MEDIA_PARPORT_SUPPORT is not set
+# CONFIG_RADIO_ADAPTERS is not set
+CONFIG_MEDIA_COMMON_OPTIONS=y
+
+#
+# common driver options
+#
+CONFIG_VIDEO_CX2341X=m
+CONFIG_VIDEO_TVEEPROM=m
+CONFIG_CYPRESS_FIRMWARE=m
+CONFIG_DVB_B2C2_FLEXCOP=m
+CONFIG_DVB_B2C2_FLEXCOP_DEBUG=y
+CONFIG_SMS_SIANO_MDTV=m
+CONFIG_SMS_SIANO_RC=y
+
+#
+# Media ancillary drivers (tuners, sensors, i2c, frontends)
+#
+CONFIG_MEDIA_SUBDRV_AUTOSELECT=y
+CONFIG_MEDIA_ATTACH=y
+CONFIG_VIDEO_IR_I2C=m
 
 #
 # Audio decoders, processors and mixers
 #
-# CONFIG_VIDEO_TVAUDIO is not set
-# CONFIG_VIDEO_TDA7432 is not set
-# CONFIG_VIDEO_TDA9840 is not set
-# CONFIG_VIDEO_TEA6415C is not set
-# CONFIG_VIDEO_TEA6420 is not set
-# CONFIG_VIDEO_MSP3400 is not set
-# CONFIG_VIDEO_CS5345 is not set
-# CONFIG_VIDEO_CS53L32A is not set
-# CONFIG_VIDEO_TLV320AIC23B is not set
-# CONFIG_VIDEO_WM8775 is not set
-# CONFIG_VIDEO_WM8739 is not set
-# CONFIG_VIDEO_VP27SMPX is not set
+CONFIG_VIDEO_MSP3400=m
+CONFIG_VIDEO_CS53L32A=m
+CONFIG_VIDEO_WM8775=m
 
 #
 # RDS decoders
 #
-# CONFIG_VIDEO_SAA6588 is not set
 
 #
 # Video decoders
 #
-# CONFIG_VIDEO_ADV7180 is not set
-# CONFIG_VIDEO_BT819 is not set
-# CONFIG_VIDEO_BT856 is not set
-# CONFIG_VIDEO_BT866 is not set
-# CONFIG_VIDEO_KS0127 is not set
-# CONFIG_VIDEO_SAA7110 is not set
-# CONFIG_VIDEO_SAA711X is not set
-# CONFIG_VIDEO_SAA7191 is not set
-# CONFIG_VIDEO_TVP514X is not set
-# CONFIG_VIDEO_TVP5150 is not set
-# CONFIG_VIDEO_TVP7002 is not set
-# CONFIG_VIDEO_VPX3220 is not set
+CONFIG_VIDEO_SAA711X=m
+CONFIG_VIDEO_TVP5150=m
 
 #
 # Video and audio decoders
 #
-# CONFIG_VIDEO_SAA717X is not set
-# CONFIG_VIDEO_CX25840 is not set
-
-#
-# MPEG video encoders
-#
-# CONFIG_VIDEO_CX2341X is not set
+CONFIG_VIDEO_CX25840=m
 
 #
 # Video encoders
 #
-# CONFIG_VIDEO_SAA7127 is not set
-# CONFIG_VIDEO_SAA7185 is not set
-# CONFIG_VIDEO_ADV7170 is not set
-# CONFIG_VIDEO_ADV7175 is not set
-# CONFIG_VIDEO_ADV7343 is not set
-# CONFIG_VIDEO_AK881X is not set
 
 #
 # Camera sensor devices
 #
-# CONFIG_VIDEO_OV7670 is not set
-# CONFIG_VIDEO_MT9P031 is not set
-# CONFIG_VIDEO_MT9T001 is not set
-# CONFIG_VIDEO_MT9V011 is not set
-# CONFIG_VIDEO_MT9V032 is not set
-# CONFIG_VIDEO_TCM825X is not set
-# CONFIG_VIDEO_SR030PC30 is not set
-# CONFIG_VIDEO_NOON010PC30 is not set
-# CONFIG_VIDEO_M5MOLS is not set
-# CONFIG_VIDEO_S5K6AA is not set
+CONFIG_VIDEO_MT9V011=m
 
 #
 # Flash devices
 #
-# CONFIG_VIDEO_ADP1653 is not set
 
 #
 # Video improvement chips
 #
-# CONFIG_VIDEO_UPD64031A is not set
-# CONFIG_VIDEO_UPD64083 is not set
 
 #
 # Miscelaneous helper chips
 #
-# CONFIG_VIDEO_THS7303 is not set
-# CONFIG_VIDEO_M52790 is not set
-# CONFIG_VIDEO_VIVI is not set
-# CONFIG_VIDEO_BWQCAM is not set
-# CONFIG_VIDEO_CQCAM is not set
-# CONFIG_VIDEO_W9966 is not set
-# CONFIG_VIDEO_CPIA2 is not set
-# CONFIG_VIDEO_TIMBERDALE is not set
-# CONFIG_VIDEO_AU0828 is not set
-# CONFIG_SOC_CAMERA is not set
-CONFIG_V4L_USB_DRIVERS=y
-# CONFIG_USB_VIDEO_CLASS is not set
-CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
-# CONFIG_USB_GSPCA is not set
-# CONFIG_VIDEO_PVRUSB2 is not set
-# CONFIG_VIDEO_HDPVR is not set
-# CONFIG_VIDEO_EM28XX is not set
-# CONFIG_VIDEO_TLG2300 is not set
-# CONFIG_VIDEO_CX231XX is not set
-# CONFIG_VIDEO_TM6000 is not set
-# CONFIG_VIDEO_USBVISION is not set
-# CONFIG_USB_ET61X251 is not set
-# CONFIG_USB_SN9C102 is not set
-# CONFIG_USB_PWC is not set
-# CONFIG_USB_ZR364XX is not set
-# CONFIG_USB_STKWEBCAM is not set
-# CONFIG_USB_S2255 is not set
-# CONFIG_V4L_MEM2MEM_DRIVERS is not set
-CONFIG_RADIO_ADAPTERS=y
-# CONFIG_I2C_SI4713 is not set
-# CONFIG_RADIO_SI4713 is not set
-# CONFIG_USB_DSBR is not set
-# CONFIG_RADIO_SI470X is not set
-# CONFIG_USB_MR800 is not set
-# CONFIG_RADIO_TEA5764 is not set
-# CONFIG_RADIO_SAA7706H is not set
-# CONFIG_RADIO_TEF6862 is not set
-# CONFIG_RADIO_WL1273 is not set
 
 #
-# Texas Instruments WL128x FM driver (ST based)
+# Sensors used on soc_camera driver
 #
-# CONFIG_RADIO_WL128X is not set
-CONFIG_DVB_MAX_ADAPTERS=8
-# CONFIG_DVB_DYNAMIC_MINORS is not set
-CONFIG_DVB_CAPTURE_DRIVERS=y
-# CONFIG_TTPCI_EEPROM is not set
-
-#
-# Supported USB Adapters
-#
-# CONFIG_DVB_USB is not set
-# CONFIG_SMS_SIANO_MDTV is not set
-
-#
-# Supported FlexCopII (B2C2) Adapters
-#
-# CONFIG_DVB_B2C2_FLEXCOP is not set
-
-#
-# Supported DVB Frontends
-#
-# CONFIG_DVB_FE_CUSTOMISE is not set
+CONFIG_MEDIA_TUNER=m
+CONFIG_MEDIA_TUNER_SIMPLE=m
+CONFIG_MEDIA_TUNER_TDA8290=m
+CONFIG_MEDIA_TUNER_TDA827X=m
+CONFIG_MEDIA_TUNER_TDA18271=m
+CONFIG_MEDIA_TUNER_TDA9887=m
+CONFIG_MEDIA_TUNER_TEA5761=m
+CONFIG_MEDIA_TUNER_TEA5767=m
+CONFIG_MEDIA_TUNER_MT20XX=m
+CONFIG_MEDIA_TUNER_MT2060=m
+CONFIG_MEDIA_TUNER_MT2063=m
+CONFIG_MEDIA_TUNER_MT2266=m
+CONFIG_MEDIA_TUNER_QT1010=m
+CONFIG_MEDIA_TUNER_XC2028=m
+CONFIG_MEDIA_TUNER_XC5000=m
+CONFIG_MEDIA_TUNER_XC4000=m
+CONFIG_MEDIA_TUNER_MXL5005S=m
+CONFIG_MEDIA_TUNER_MXL5007T=m
+CONFIG_MEDIA_TUNER_MC44S803=m
+CONFIG_MEDIA_TUNER_MAX2165=m
+CONFIG_MEDIA_TUNER_TDA18218=m
+CONFIG_MEDIA_TUNER_FC0011=m
+CONFIG_MEDIA_TUNER_FC0012=m
+CONFIG_MEDIA_TUNER_FC0013=m
+CONFIG_MEDIA_TUNER_TDA18212=m
+CONFIG_MEDIA_TUNER_E4000=m
+CONFIG_MEDIA_TUNER_FC2580=m
+CONFIG_MEDIA_TUNER_TUA9001=m
+CONFIG_MEDIA_TUNER_IT913X=m
+CONFIG_MEDIA_TUNER_R820T=m
 
 #
 # Multistandard (satellite) frontends
 #
+CONFIG_DVB_STB0899=m
+CONFIG_DVB_STB6100=m
+CONFIG_DVB_STV090x=m
+CONFIG_DVB_STV6110x=m
 
 #
 # Multistandard (cable + terrestrial) frontends
 #
+CONFIG_DVB_DRXK=m
+CONFIG_DVB_TDA18271C2DD=m
 
 #
 # DVB-S (satellite) frontends
 #
+CONFIG_DVB_CX24123=m
+CONFIG_DVB_MT312=m
+CONFIG_DVB_ZL10039=m
+CONFIG_DVB_S5H1420=m
+CONFIG_DVB_STV0288=m
+CONFIG_DVB_STB6000=m
+CONFIG_DVB_STV0299=m
+CONFIG_DVB_STV6110=m
+CONFIG_DVB_STV0900=m
+CONFIG_DVB_TDA10086=m
+CONFIG_DVB_TUNER_ITD1000=m
+CONFIG_DVB_TUNER_CX24113=m
+CONFIG_DVB_TDA826X=m
+CONFIG_DVB_CX24116=m
+CONFIG_DVB_M88DS3103=m
+CONFIG_DVB_SI21XX=m
+CONFIG_DVB_TS2020=m
+CONFIG_DVB_DS3000=m
+CONFIG_DVB_TDA10071=m
 
 #
 # DVB-T (terrestrial) frontends
 #
+CONFIG_DVB_CX22702=m
+CONFIG_DVB_DRXD=m
+CONFIG_DVB_TDA1004X=m
+CONFIG_DVB_NXT6000=m
+CONFIG_DVB_MT352=m
+CONFIG_DVB_ZL10353=m
+CONFIG_DVB_DIB3000MB=m
+CONFIG_DVB_DIB3000MC=m
+CONFIG_DVB_DIB7000M=m
+CONFIG_DVB_DIB7000P=m
+CONFIG_DVB_TDA10048=m
+CONFIG_DVB_AF9013=m
+CONFIG_DVB_EC100=m
+CONFIG_DVB_CXD2820R=m
+CONFIG_DVB_RTL2830=m
+CONFIG_DVB_RTL2832=m
 
 #
 # DVB-C (cable) frontends
 #
+CONFIG_DVB_TDA10023=m
+CONFIG_DVB_STV0297=m
 
 #
 # ATSC (North American/Korean Terrestrial/Cable DTV) frontends
 #
+CONFIG_DVB_NXT200X=m
+CONFIG_DVB_BCM3510=m
+CONFIG_DVB_LGDT330X=m
+CONFIG_DVB_LGDT3305=m
+CONFIG_DVB_LG2160=m
+CONFIG_DVB_S5H1409=m
+CONFIG_DVB_AU8522=m
+CONFIG_DVB_AU8522_DTV=m
+CONFIG_DVB_AU8522_V4L=m
+CONFIG_DVB_S5H1411=m
 
 #
 # ISDB-T (terrestrial) frontends
 #
+CONFIG_DVB_S921=m
+CONFIG_DVB_DIB8000=m
+CONFIG_DVB_MB86A20S=m
 
 #
 # Digital terrestrial only tuners/PLL
 #
+CONFIG_DVB_PLL=m
+CONFIG_DVB_TUNER_DIB0070=m
+CONFIG_DVB_TUNER_DIB0090=m
 
 #
 # SEC control devices for DVB-S
 #
+CONFIG_DVB_LNBP21=m
+CONFIG_DVB_LNBP22=m
+CONFIG_DVB_ISL6421=m
+CONFIG_DVB_ISL6423=m
+CONFIG_DVB_A8293=m
+CONFIG_DVB_LGS8GXX=m
+CONFIG_DVB_ATBM8830=m
+CONFIG_DVB_IX2505V=m
+CONFIG_DVB_IT913X_FE=m
+CONFIG_DVB_M88RS2000=m
+CONFIG_DVB_AF9033=m
 
 #
 # Tools to develop new frontends
@@ -2318,8 +2804,21 @@ CONFIG_DVB_CAPTURE_DRIVERS=y
 # Graphics support
 #
 CONFIG_DRM=m
+CONFIG_DRM_USB=m
+CONFIG_DRM_KMS_HELPER=m
+# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
+
+#
+# I2C encoder or helper chips
+#
+# CONFIG_DRM_I2C_CH7006 is not set
+# CONFIG_DRM_I2C_SIL164 is not set
+CONFIG_DRM_I2C_NXP_TDA998X=m
+CONFIG_DRM_UDL=m
+# CONFIG_DRM_TILCDC is not set
 # CONFIG_VGASTATE is not set
 CONFIG_VIDEO_OUTPUT_CONTROL=m
+CONFIG_HDMI=y
 CONFIG_FB=y
 CONFIG_FIRMWARE_EDID=y
 # CONFIG_FB_DDC is not set
@@ -2333,7 +2832,6 @@ CONFIG_FB_SYS_COPYAREA=m
 CONFIG_FB_SYS_IMAGEBLIT=m
 # CONFIG_FB_FOREIGN_ENDIAN is not set
 CONFIG_FB_SYS_FOPS=m
-# CONFIG_FB_WMT_GE_ROPS is not set
 CONFIG_FB_DEFERRED_IO=y
 # CONFIG_FB_SVGALIB is not set
 # CONFIG_FB_MACMODES is not set
@@ -2348,32 +2846,17 @@ CONFIG_FB_BCM2708=y
 CONFIG_FB_ARMCLCD=y
 CONFIG_FB_UVESA=m
 # CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_TMIO=m
-CONFIG_FB_TMIO_ACCELL=y
-CONFIG_FB_SM501=m
+# CONFIG_FB_TMIO is not set
 CONFIG_FB_SMSCUFX=m
-# CONFIG_FB_UDL is not set
+CONFIG_FB_UDL=m
+# CONFIG_FB_GOLDFISH is not set
 # CONFIG_FB_VIRTUAL is not set
-CONFIG_FB_METRONOME=m
+# CONFIG_FB_METRONOME is not set
 # CONFIG_FB_BROADSHEET is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_LCD_CLASS_DEVICE=m
-CONFIG_LCD_PLATFORM=m
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_GENERIC=m
-CONFIG_BACKLIGHT_ADP8860=m
-CONFIG_BACKLIGHT_ADP8870=m
-CONFIG_BACKLIGHT_88PM860X=m
-CONFIG_BACKLIGHT_PCF50633=m
-
-#
-# Display device support
-#
-CONFIG_DISPLAY_SUPPORT=y
-
-#
-# Display hardware drivers
-#
+# CONFIG_FB_AUO_K190X is not set
+# CONFIG_FB_SIMPLE is not set
+# CONFIG_EXYNOS_VIDEO is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
 
 #
 # Console display driver support
@@ -2389,6 +2872,7 @@ CONFIG_LOGO=y
 CONFIG_LOGO_LINUX_MONO=y
 CONFIG_LOGO_LINUX_VGA16=y
 CONFIG_LOGO_LINUX_CLUT224=y
+# CONFIG_FB_SSD1307 is not set
 CONFIG_SOUND=m
 CONFIG_SOUND_OSS_CORE=y
 CONFIG_SOUND_OSS_CORE_PRECLAIM=y
@@ -2397,6 +2881,7 @@ CONFIG_SND_TIMER=m
 CONFIG_SND_PCM=m
 CONFIG_SND_HWDEP=m
 CONFIG_SND_RAWMIDI=m
+CONFIG_SND_COMPRESS_OFFLOAD=m
 CONFIG_SND_JACK=y
 CONFIG_SND_SEQUENCER=m
 CONFIG_SND_SEQ_DUMMY=m
@@ -2434,6 +2919,7 @@ CONFIG_SND_AC97_POWER_SAVE_DEFAULT=60
 CONFIG_SND_ARM=y
 CONFIG_SND_ARMAACI=m
 CONFIG_SND_BCM2835=m
+CONFIG_SND_SPI=y
 CONFIG_SND_USB=y
 CONFIG_SND_USB_AUDIO=m
 CONFIG_SND_USB_UA101=m
@@ -2441,39 +2927,42 @@ CONFIG_SND_USB_CAIAQ=m
 CONFIG_SND_USB_CAIAQ_INPUT=y
 CONFIG_SND_USB_6FIRE=m
 CONFIG_SND_SOC=m
-CONFIG_SND_SOC_CACHE_LZO=y
+# CONFIG_SND_ATMEL_SOC is not set
+CONFIG_SND_DESIGNWARE_I2S=m
 CONFIG_SND_SOC_I2C_AND_SPI=m
 # CONFIG_SND_SOC_ALL_CODECS is not set
+CONFIG_SND_SIMPLE_CARD=m
 # CONFIG_SOUND_PRIME is not set
 CONFIG_AC97_BUS=m
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=y
-# CONFIG_HIDRAW is not set
 
 #
-# USB Input Devices
+# HID support
 #
-CONFIG_USB_HID=m
-# CONFIG_HID_PID is not set
-CONFIG_USB_HIDDEV=y
+CONFIG_HID=y
+# CONFIG_HID_BATTERY_STRENGTH is not set
+# CONFIG_HIDRAW is not set
+# CONFIG_UHID is not set
+CONFIG_HID_GENERIC=y
 
 #
 # Special HID drivers
 #
-CONFIG_HID_A4TECH=m
+CONFIG_HID_A4TECH=y
 CONFIG_HID_ACRUX=m
 # CONFIG_HID_ACRUX_FF is not set
-CONFIG_HID_APPLE=m
-CONFIG_HID_BELKIN=m
-CONFIG_HID_CHERRY=m
-CONFIG_HID_CHICONY=m
+CONFIG_HID_APPLE=y
+# CONFIG_HID_APPLEIR is not set
+CONFIG_HID_AUREAL=m
+CONFIG_HID_BELKIN=y
+CONFIG_HID_CHERRY=y
+CONFIG_HID_CHICONY=y
 CONFIG_HID_PRODIKEYS=m
-CONFIG_HID_CYPRESS=m
+CONFIG_HID_CYPRESS=y
 CONFIG_HID_DRAGONRISE=m
 # CONFIG_DRAGONRISE_FF is not set
 # CONFIG_HID_EMS_FF is not set
 CONFIG_HID_ELECOM=m
-CONFIG_HID_EZKEY=m
+CONFIG_HID_EZKEY=y
 CONFIG_HID_HOLTEK=m
 # CONFIG_HOLTEK_FF is not set
 CONFIG_HID_KEYTOUCH=m
@@ -2481,18 +2970,20 @@ CONFIG_HID_KYE=m
 CONFIG_HID_UCLOGIC=m
 CONFIG_HID_WALTOP=m
 CONFIG_HID_GYRATION=m
+CONFIG_HID_ICADE=m
 CONFIG_HID_TWINHAN=m
-CONFIG_HID_KENSINGTON=m
+CONFIG_HID_KENSINGTON=y
 CONFIG_HID_LCPOWER=m
-CONFIG_HID_LOGITECH=m
+CONFIG_HID_LENOVO_TPKBD=m
+CONFIG_HID_LOGITECH=y
 CONFIG_HID_LOGITECH_DJ=m
 # CONFIG_LOGITECH_FF is not set
 # CONFIG_LOGIRUMBLEPAD2_FF is not set
 # CONFIG_LOGIG940_FF is not set
 # CONFIG_LOGIWHEELS_FF is not set
 CONFIG_HID_MAGICMOUSE=m
-CONFIG_HID_MICROSOFT=m
-CONFIG_HID_MONTEREY=m
+CONFIG_HID_MICROSOFT=y
+CONFIG_HID_MONTEREY=y
 CONFIG_HID_MULTITOUCH=m
 CONFIG_HID_NTRIG=m
 CONFIG_HID_ORTEK=m
@@ -2501,41 +2992,51 @@ CONFIG_HID_PANTHERLORD=m
 CONFIG_HID_PETALYNX=m
 CONFIG_HID_PICOLCD=m
 CONFIG_HID_PICOLCD_FB=y
-CONFIG_HID_PICOLCD_BACKLIGHT=y
-CONFIG_HID_PICOLCD_LCD=y
 CONFIG_HID_PICOLCD_LEDS=y
+CONFIG_HID_PICOLCD_CIR=y
 CONFIG_HID_PRIMAX=m
-CONFIG_HID_QUANTA=m
+CONFIG_HID_PS3REMOTE=m
 CONFIG_HID_ROCCAT=m
-CONFIG_HID_ROCCAT_COMMON=m
-CONFIG_HID_ROCCAT_ARVO=m
-CONFIG_HID_ROCCAT_KONE=m
-CONFIG_HID_ROCCAT_KONEPLUS=m
-CONFIG_HID_ROCCAT_KOVAPLUS=m
-CONFIG_HID_ROCCAT_PYRA=m
+CONFIG_HID_SAITEK=m
 CONFIG_HID_SAMSUNG=m
 CONFIG_HID_SONY=m
 CONFIG_HID_SPEEDLINK=m
+CONFIG_HID_STEELSERIES=m
 CONFIG_HID_SUNPLUS=m
 CONFIG_HID_GREENASIA=m
 # CONFIG_GREENASIA_FF is not set
 CONFIG_HID_SMARTJOYPLUS=m
 # CONFIG_SMARTJOYPLUS_FF is not set
+CONFIG_HID_TIVO=m
 CONFIG_HID_TOPSEED=m
+CONFIG_HID_THINGM=m
 CONFIG_HID_THRUSTMASTER=m
 # CONFIG_THRUSTMASTER_FF is not set
 CONFIG_HID_WACOM=m
-# CONFIG_HID_WACOM_POWER_SUPPLY is not set
 CONFIG_HID_WIIMOTE=m
+CONFIG_HID_WIIMOTE_EXT=y
 CONFIG_HID_ZEROPLUS=m
 # CONFIG_ZEROPLUS_FF is not set
 CONFIG_HID_ZYDACRON=m
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_COMMON=y
-CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_HID_SENSOR_HUB=m
+
+#
+# USB HID support
+#
+CONFIG_USB_HID=m
+# CONFIG_HID_PID is not set
+CONFIG_USB_HIDDEV=y
+
+#
+# I2C HID support
+#
+CONFIG_I2C_HID=m
 # CONFIG_USB_ARCH_HAS_OHCI is not set
 # CONFIG_USB_ARCH_HAS_EHCI is not set
 # CONFIG_USB_ARCH_HAS_XHCI is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_COMMON=y
+CONFIG_USB_ARCH_HAS_HCD=y
 CONFIG_USB=y
 # CONFIG_USB_DEBUG is not set
 CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
@@ -2543,31 +3044,26 @@ CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
 #
 # Miscellaneous USB options
 #
-CONFIG_USB_DEVICEFS=y
-CONFIG_USB_DEVICE_CLASS=y
+CONFIG_USB_DEFAULT_PERSIST=y
 CONFIG_USB_DYNAMIC_MINORS=y
-CONFIG_USB_SUSPEND=y
 # CONFIG_USB_OTG is not set
-CONFIG_USB_DWC3=m
-# CONFIG_USB_DWC3_DEBUG is not set
 # CONFIG_USB_MON is not set
-# CONFIG_USB_WUSB is not set
 # CONFIG_USB_WUSB_CBAF is not set
 
 #
 # USB Host Controller Drivers
 #
 # CONFIG_USB_C67X00_HCD is not set
-CONFIG_USB_OXU210HP_HCD=m
-CONFIG_USB_ISP116X_HCD=m
+# CONFIG_USB_OXU210HP_HCD is not set
+# CONFIG_USB_ISP116X_HCD is not set
 # CONFIG_USB_ISP1760_HCD is not set
-CONFIG_USB_ISP1362_HCD=m
-CONFIG_USB_U132_HCD=m
-CONFIG_USB_SL811_HCD=m
-# CONFIG_USB_SL811_HCD_ISO is not set
-CONFIG_USB_R8A66597_HCD=m
-# CONFIG_USB_HWA_HCD is not set
+# CONFIG_USB_ISP1362_HCD is not set
+# CONFIG_USB_U132_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
 CONFIG_USB_DWCOTG=y
+CONFIG_USB_HCD_BCMA=y
+# CONFIG_USB_HCD_SSB is not set
 
 #
 # USB Device Class drivers
@@ -2600,21 +3096,20 @@ CONFIG_USB_STORAGE_ONETOUCH=m
 CONFIG_USB_STORAGE_KARMA=m
 CONFIG_USB_STORAGE_CYPRESS_ATACB=m
 CONFIG_USB_STORAGE_ENE_UB6250=m
-CONFIG_USB_UAS=m
-# CONFIG_USB_LIBUSUAL is not set
 
 #
 # USB Imaging devices
 #
 # CONFIG_USB_MDC800 is not set
 # CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_DWC3 is not set
+# CONFIG_USB_CHIPIDEA is not set
 
 #
 # USB port drivers
 #
 CONFIG_USB_USS720=m
 CONFIG_USB_SERIAL=m
-CONFIG_USB_EZUSB=y
 CONFIG_USB_SERIAL_GENERIC=y
 CONFIG_USB_SERIAL_AIRCABLE=m
 CONFIG_USB_SERIAL_ARK3116=m
@@ -2632,19 +3127,21 @@ CONFIG_USB_SERIAL_IPAQ=m
 CONFIG_USB_SERIAL_IR=m
 CONFIG_USB_SERIAL_EDGEPORT=m
 CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_F81232=m
 CONFIG_USB_SERIAL_GARMIN=m
 CONFIG_USB_SERIAL_IPW=m
 CONFIG_USB_SERIAL_IUU=m
-# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
-# CONFIG_USB_SERIAL_KEYSPAN is not set
-# CONFIG_USB_SERIAL_KLSI is not set
-# CONFIG_USB_SERIAL_KOBIL_SCT is not set
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
 CONFIG_USB_SERIAL_MCT_U232=m
+CONFIG_USB_SERIAL_METRO=m
 CONFIG_USB_SERIAL_MOS7720=m
 # CONFIG_USB_SERIAL_MOS7715_PARPORT is not set
 CONFIG_USB_SERIAL_MOS7840=m
 CONFIG_USB_SERIAL_MOTOROLA=m
-# CONFIG_USB_SERIAL_NAVMAN is not set
+CONFIG_USB_SERIAL_NAVMAN=m
 CONFIG_USB_SERIAL_PL2303=m
 CONFIG_USB_SERIAL_OTI6858=m
 CONFIG_USB_SERIAL_QCAUX=m
@@ -2657,15 +3154,19 @@ CONFIG_USB_SERIAL_SIEMENS_MPI=m
 CONFIG_USB_SERIAL_SIERRAWIRELESS=m
 CONFIG_USB_SERIAL_SYMBOL=m
 CONFIG_USB_SERIAL_TI=m
-# CONFIG_USB_SERIAL_CYBERJACK is not set
+CONFIG_USB_SERIAL_CYBERJACK=m
 CONFIG_USB_SERIAL_XIRCOM=m
 CONFIG_USB_SERIAL_WWAN=m
 CONFIG_USB_SERIAL_OPTION=m
-# CONFIG_USB_SERIAL_OMNINET is not set
+CONFIG_USB_SERIAL_OMNINET=m
 CONFIG_USB_SERIAL_OPTICON=m
 CONFIG_USB_SERIAL_VIVOPAY_SERIAL=m
+CONFIG_USB_SERIAL_XSENS_MT=m
 CONFIG_USB_SERIAL_ZIO=m
+CONFIG_USB_SERIAL_WISHBONE=m
+CONFIG_USB_SERIAL_ZTE=m
 CONFIG_USB_SERIAL_SSU100=m
+CONFIG_USB_SERIAL_QT2=m
 # CONFIG_USB_SERIAL_DEBUG is not set
 
 #
@@ -2690,20 +3191,15 @@ CONFIG_USB_IOWARRIOR=m
 # CONFIG_USB_TEST is not set
 CONFIG_USB_ISIGHTFW=m
 CONFIG_USB_YUREX=m
+CONFIG_USB_EZUSB_FX2=m
+CONFIG_USB_HSIC_USB3503=m
 CONFIG_USB_ATM=m
 CONFIG_USB_SPEEDTOUCH=m
 CONFIG_USB_CXACRU=m
 CONFIG_USB_UEAGLEATM=m
 CONFIG_USB_XUSBATM=m
+# CONFIG_USB_PHY is not set
 # CONFIG_USB_GADGET is not set
-
-#
-# OTG and related infrastructure
-#
-CONFIG_USB_OTG_UTILS=y
-CONFIG_USB_GPIO_VBUS=m
-# CONFIG_USB_ULPI is not set
-CONFIG_NOP_USB_XCEIV=m
 CONFIG_MMC=y
 # CONFIG_MMC_DEBUG is not set
 # CONFIG_MMC_UNSAFE_RESUME is not set
@@ -2729,9 +3225,11 @@ CONFIG_MMC_SDHCI_PXAV3=m
 CONFIG_MMC_SDHCI_PXAV2=m
 CONFIG_MMC_SDHCI_BCM2708=y
 CONFIG_MMC_SDHCI_BCM2708_DMA=y
-# CONFIG_MMC_BCM2708 is not set
+# CONFIG_MMC_SPI is not set
 CONFIG_MMC_DW=m
 # CONFIG_MMC_DW_IDMAC is not set
+CONFIG_MMC_DW_PLTFM=m
+CONFIG_MMC_DW_EXYNOS=m
 CONFIG_MMC_VUB300=m
 CONFIG_MMC_USHC=m
 CONFIG_MEMSTICK=m
@@ -2752,39 +3250,53 @@ CONFIG_LEDS_CLASS=y
 #
 # LED drivers
 #
-CONFIG_LEDS_88PM860X=m
 CONFIG_LEDS_LM3530=m
+CONFIG_LEDS_LM3642=m
 CONFIG_LEDS_PCA9532=m
 CONFIG_LEDS_PCA9532_GPIO=y
 CONFIG_LEDS_GPIO=m
 CONFIG_LEDS_LP3944=m
+CONFIG_LEDS_LP55XX_COMMON=m
 CONFIG_LEDS_LP5521=m
 CONFIG_LEDS_LP5523=m
+CONFIG_LEDS_LP5562=m
 CONFIG_LEDS_PCA955X=m
+CONFIG_LEDS_PCA9633=m
+CONFIG_LEDS_DAC124S085=m
+CONFIG_LEDS_PWM=m
 CONFIG_LEDS_REGULATOR=m
 CONFIG_LEDS_BD2802=m
 CONFIG_LEDS_LT3593=m
 # CONFIG_LEDS_RENESAS_TPU is not set
-CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TCA6507=m
+CONFIG_LEDS_LM355x=m
+CONFIG_LEDS_OT200=m
+CONFIG_LEDS_BLINKM=m
 
 #
 # LED Triggers
 #
+CONFIG_LEDS_TRIGGERS=y
 CONFIG_LEDS_TRIGGER_TIMER=m
+CONFIG_LEDS_TRIGGER_ONESHOT=m
 CONFIG_LEDS_TRIGGER_HEARTBEAT=m
 CONFIG_LEDS_TRIGGER_BACKLIGHT=m
+CONFIG_LEDS_TRIGGER_CPU=y
 CONFIG_LEDS_TRIGGER_GPIO=m
 CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
 
 #
 # iptables trigger is under Netfilter config (LED target)
 #
+CONFIG_LEDS_TRIGGER_TRANSIENT=m
+CONFIG_LEDS_TRIGGER_CAMERA=m
 CONFIG_LEDS_TRIGGER_NETDEV=m
 # CONFIG_ACCESSIBILITY is not set
+# CONFIG_EDAC is not set
 CONFIG_RTC_LIB=y
 CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_HCTOSYS is not set
+# CONFIG_RTC_SYSTOHC is not set
 # CONFIG_RTC_DEBUG is not set
 
 #
@@ -2799,7 +3311,6 @@ CONFIG_RTC_INTF_DEV=y
 #
 # I2C RTC drivers
 #
-CONFIG_RTC_DRV_88PM860X=y
 CONFIG_RTC_DRV_DS1307=m
 CONFIG_RTC_DRV_DS1374=m
 CONFIG_RTC_DRV_DS1672=m
@@ -2809,6 +3320,7 @@ CONFIG_RTC_DRV_RS5C372=m
 CONFIG_RTC_DRV_ISL1208=m
 CONFIG_RTC_DRV_ISL12022=m
 CONFIG_RTC_DRV_X1205=m
+CONFIG_RTC_DRV_PCF8523=m
 CONFIG_RTC_DRV_PCF8563=m
 CONFIG_RTC_DRV_PCF8583=m
 CONFIG_RTC_DRV_M41T80=m
@@ -2824,6 +3336,16 @@ CONFIG_RTC_DRV_RV3029C2=m
 #
 # SPI RTC drivers
 #
+CONFIG_RTC_DRV_M41T93=m
+CONFIG_RTC_DRV_M41T94=m
+CONFIG_RTC_DRV_DS1305=m
+CONFIG_RTC_DRV_DS1390=m
+CONFIG_RTC_DRV_MAX6902=m
+CONFIG_RTC_DRV_R9701=m
+CONFIG_RTC_DRV_RS5C348=m
+CONFIG_RTC_DRV_DS3234=m
+CONFIG_RTC_DRV_PCF2123=m
+CONFIG_RTC_DRV_RX4581=m
 
 #
 # Platform RTC drivers
@@ -2841,13 +3363,19 @@ CONFIG_RTC_DRV_MSM6242=m
 CONFIG_RTC_DRV_BQ4802=m
 CONFIG_RTC_DRV_RP5C01=m
 CONFIG_RTC_DRV_V3020=m
-CONFIG_RTC_DRV_PCF50633=m
+CONFIG_RTC_DRV_DS2404=m
 
 #
 # on-CPU RTC drivers
 #
 CONFIG_RTC_DRV_PL030=m
 CONFIG_RTC_DRV_PL031=m
+CONFIG_RTC_DRV_SNVS=m
+
+#
+# HID Sensor RTC drivers
+#
+CONFIG_RTC_DRV_HID_SENSOR_TIME=m
 CONFIG_DMADEVICES=y
 # CONFIG_DMADEVICES_DEBUG is not set
 
@@ -2856,9 +3384,12 @@ CONFIG_DMADEVICES=y
 #
 CONFIG_AMBA_PL08X=y
 CONFIG_DW_DMAC=y
+# CONFIG_DW_DMAC_BIG_ENDIAN_IO is not set
 # CONFIG_TIMB_DMA is not set
 CONFIG_PL330_DMA=y
 CONFIG_DMA_ENGINE=y
+CONFIG_DMA_VIRTUAL_CHANNELS=y
+CONFIG_DMA_OF=y
 
 #
 # DMA Clients
@@ -2870,12 +3401,17 @@ CONFIG_DMATEST=m
 CONFIG_UIO=m
 CONFIG_UIO_PDRV=m
 CONFIG_UIO_PDRV_GENIRQ=m
+CONFIG_UIO_DMEM_GENIRQ=m
+# CONFIG_VIRT_DRIVERS is not set
 
 #
 # Virtio drivers
 #
-# CONFIG_VIRTIO_BALLOON is not set
 # CONFIG_VIRTIO_MMIO is not set
+
+#
+# Microsoft Hyper-V guest support
+#
 CONFIG_STAGING=y
 CONFIG_USBIP_CORE=m
 CONFIG_USBIP_VHCI_HCD=m
@@ -2883,21 +3419,113 @@ CONFIG_USBIP_HOST=m
 # CONFIG_USBIP_DEBUG is not set
 # CONFIG_W35UND is not set
 # CONFIG_PRISM2_USB is not set
-# CONFIG_ECHO is not set
+CONFIG_ECHO=m
+# CONFIG_COMEDI is not set
 # CONFIG_ASUS_OLED is not set
 # CONFIG_PANEL is not set
+# CONFIG_RTLLIB is not set
 # CONFIG_R8712U is not set
 # CONFIG_RTS5139 is not set
 # CONFIG_TRANZPORT is not set
-# CONFIG_POHMELFS is not set
 # CONFIG_LINE6_USB is not set
 # CONFIG_USB_SERIAL_QUATECH2 is not set
-# CONFIG_USB_SERIAL_QUATECH_USB2 is not set
 # CONFIG_VT6656 is not set
-# CONFIG_IIO is not set
-# CONFIG_XVMALLOC is not set
-# CONFIG_ZRAM is not set
-# CONFIG_FB_SM7XX is not set
+
+#
+# IIO staging drivers
+#
+
+#
+# Accelerometers
+#
+# CONFIG_ADIS16201 is not set
+# CONFIG_ADIS16203 is not set
+# CONFIG_ADIS16204 is not set
+# CONFIG_ADIS16209 is not set
+# CONFIG_ADIS16220 is not set
+# CONFIG_ADIS16240 is not set
+# CONFIG_LIS3L02DQ is not set
+
+#
+# Analog to digital converters
+#
+# CONFIG_AD7291 is not set
+# CONFIG_AD7606 is not set
+# CONFIG_AD799X is not set
+# CONFIG_AD7780 is not set
+# CONFIG_AD7816 is not set
+# CONFIG_AD7192 is not set
+# CONFIG_AD7280 is not set
+
+#
+# Analog digital bi-direction converters
+#
+# CONFIG_ADT7316 is not set
+
+#
+# Capacitance to digital converters
+#
+# CONFIG_AD7150 is not set
+# CONFIG_AD7152 is not set
+# CONFIG_AD7746 is not set
+
+#
+# Direct Digital Synthesis
+#
+# CONFIG_AD5930 is not set
+# CONFIG_AD9832 is not set
+# CONFIG_AD9834 is not set
+# CONFIG_AD9850 is not set
+# CONFIG_AD9852 is not set
+# CONFIG_AD9910 is not set
+# CONFIG_AD9951 is not set
+
+#
+# Digital gyroscope sensors
+#
+# CONFIG_ADIS16060 is not set
+# CONFIG_ADIS16130 is not set
+# CONFIG_ADIS16260 is not set
+
+#
+# Network Analyzer, Impedance Converters
+#
+# CONFIG_AD5933 is not set
+
+#
+# Light sensors
+#
+# CONFIG_SENSORS_ISL29018 is not set
+# CONFIG_SENSORS_ISL29028 is not set
+# CONFIG_TSL2583 is not set
+# CONFIG_TSL2x7x is not set
+
+#
+# Magnetometer sensors
+#
+# CONFIG_SENSORS_HMC5843 is not set
+
+#
+# Active energy metering IC
+#
+# CONFIG_ADE7753 is not set
+# CONFIG_ADE7754 is not set
+# CONFIG_ADE7758 is not set
+# CONFIG_ADE7759 is not set
+# CONFIG_ADE7854 is not set
+
+#
+# Resolver to digital converters
+#
+# CONFIG_AD2S90 is not set
+# CONFIG_AD2S1200 is not set
+# CONFIG_AD2S1210 is not set
+
+#
+# Triggers - standalone
+#
+# CONFIG_IIO_SIMPLE_DUMMY is not set
+# CONFIG_ZSMALLOC is not set
 # CONFIG_USB_ENESTORAGE is not set
 # CONFIG_BCM_WIMAX is not set
 # CONFIG_FT1000 is not set
@@ -2909,23 +3537,149 @@ CONFIG_USBIP_HOST=m
 # CONFIG_TOUCHSCREEN_CLEARPAD_TM1217 is not set
 # CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4 is not set
 # CONFIG_STAGING_MEDIA is not set
+
+#
+# Android
+#
+# CONFIG_ANDROID is not set
+# CONFIG_USB_WPAN_HCD is not set
+# CONFIG_WIMAX_GDM72XX is not set
+# CONFIG_CSR_WIFI is not set
+# CONFIG_CED1401 is not set
+# CONFIG_DGRP is not set
+# CONFIG_ZCACHE is not set
 CONFIG_CLKDEV_LOOKUP=y
 
 #
 # Hardware Spinlock drivers
 #
-CONFIG_IOMMU_SUPPORT=y
-# CONFIG_VIRT_DRIVERS is not set
+# CONFIG_MAILBOX is not set
+# CONFIG_IOMMU_SUPPORT is not set
+
+#
+# Remoteproc drivers
+#
+# CONFIG_STE_MODEM_RPROC is not set
+
+#
+# Rpmsg drivers
+#
 # CONFIG_PM_DEVFREQ is not set
+# CONFIG_EXTCON is not set
+# CONFIG_MEMORY is not set
+CONFIG_IIO=m
+# CONFIG_IIO_BUFFER is not set
+# CONFIG_IIO_TRIGGER is not set
+
+#
+# Accelerometers
+#
+# CONFIG_HID_SENSOR_ACCEL_3D is not set
+# CONFIG_KXSD9 is not set
+# CONFIG_IIO_ST_ACCEL_3AXIS is not set
+
+#
+# Analog to digital converters
+#
+# CONFIG_AD7266 is not set
+# CONFIG_AD7298 is not set
+# CONFIG_AD7923 is not set
+# CONFIG_AD7791 is not set
+# CONFIG_AD7793 is not set
+# CONFIG_AD7476 is not set
+# CONFIG_AD7887 is not set
+# CONFIG_EXYNOS_ADC is not set
+# CONFIG_MAX1363 is not set
+# CONFIG_TI_ADC081C is not set
+
+#
+# Amplifiers
+#
+# CONFIG_AD8366 is not set
+
+#
+# Hid Sensor IIO Common
+#
+CONFIG_HID_SENSOR_IIO_COMMON=m
+# CONFIG_HID_SENSOR_IIO_TRIGGER is not set
+# CONFIG_HID_SENSOR_ENUM_BASE_QUIRKS is not set
+
+#
+# Digital to analog converters
+#
+# CONFIG_AD5064 is not set
+# CONFIG_AD5360 is not set
+# CONFIG_AD5380 is not set
+# CONFIG_AD5421 is not set
+# CONFIG_AD5624R_SPI is not set
+# CONFIG_AD5446 is not set
+# CONFIG_AD5449 is not set
+# CONFIG_AD5504 is not set
+# CONFIG_AD5755 is not set
+# CONFIG_AD5764 is not set
+# CONFIG_AD5791 is not set
+# CONFIG_AD5686 is not set
+# CONFIG_MAX517 is not set
+# CONFIG_MCP4725 is not set
+
+#
+# Frequency Synthesizers DDS/PLL
+#
+
+#
+# Clock Generator/Distribution
+#
+# CONFIG_AD9523 is not set
+
+#
+# Phase-Locked Loop (PLL) frequency synthesizers
+#
+# CONFIG_ADF4350 is not set
+
+#
+# Digital gyroscope sensors
+#
+# CONFIG_ADIS16080 is not set
+# CONFIG_ADIS16136 is not set
+# CONFIG_ADXRS450 is not set
+# CONFIG_HID_SENSOR_GYRO_3D is not set
+# CONFIG_IIO_ST_GYRO_3AXIS is not set
+# CONFIG_ITG3200 is not set
+
+#
+# Inertial measurement units
+#
+# CONFIG_ADIS16400 is not set
+# CONFIG_ADIS16480 is not set
+# CONFIG_INV_MPU6050_IIO is not set
+
+#
+# Light sensors
+#
+# CONFIG_ADJD_S311 is not set
+# CONFIG_SENSORS_TSL2563 is not set
+# CONFIG_VCNL4000 is not set
+# CONFIG_HID_SENSOR_ALS is not set
+
+#
+# Magnetometer sensors
+#
+# CONFIG_AK8975 is not set
+# CONFIG_HID_SENSOR_MAGNETOMETER_3D is not set
+# CONFIG_IIO_ST_MAGN_3AXIS is not set
+CONFIG_PWM=y
+CONFIG_IRQCHIP=y
+# CONFIG_IPACK_BUS is not set
+# CONFIG_RESET_CONTROLLER is not set
 
 #
 # File systems
 #
+CONFIG_DCACHE_WORD_ACCESS=y
 # CONFIG_EXT2_FS is not set
 # CONFIG_EXT3_FS is not set
 CONFIG_EXT4_FS=y
 CONFIG_EXT4_USE_FOR_EXT23=y
-CONFIG_EXT4_FS_XATTR=y
 CONFIG_EXT4_FS_POSIX_ACL=y
 CONFIG_EXT4_FS_SECURITY=y
 # CONFIG_EXT4_DEBUG is not set
@@ -2946,9 +3700,14 @@ CONFIG_XFS_FS=m
 CONFIG_XFS_QUOTA=y
 CONFIG_XFS_POSIX_ACL=y
 # CONFIG_XFS_RT is not set
+# CONFIG_XFS_WARN is not set
 # CONFIG_XFS_DEBUG is not set
 # CONFIG_GFS2_FS is not set
-# CONFIG_BTRFS_FS is not set
+CONFIG_BTRFS_FS=m
+CONFIG_BTRFS_FS_POSIX_ACL=y
+# CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set
+# CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set
+# CONFIG_BTRFS_DEBUG is not set
 # CONFIG_NILFS2_FS is not set
 CONFIG_FS_POSIX_ACL=y
 CONFIG_EXPORTFS=m
@@ -2957,6 +3716,7 @@ CONFIG_FSNOTIFY=y
 CONFIG_DNOTIFY=y
 CONFIG_INOTIFY_USER=y
 CONFIG_FANOTIFY=y
+CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
 CONFIG_QUOTA=y
 CONFIG_QUOTA_NETLINK_INTERFACE=y
 CONFIG_PRINT_QUOTA_WARNING=y
@@ -2968,6 +3728,7 @@ CONFIG_QUOTACTL=y
 CONFIG_AUTOFS4_FS=m
 CONFIG_FUSE_FS=m
 CONFIG_CUSE=m
+CONFIG_GENERIC_ACL=y
 
 #
 # Caches
@@ -3008,7 +3769,7 @@ CONFIG_PROC_SYSCTL=y
 CONFIG_PROC_PAGE_MONITOR=y
 CONFIG_SYSFS=y
 CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
+CONFIG_TMPFS_POSIX_ACL=y
 CONFIG_TMPFS_XATTR=y
 # CONFIG_HUGETLB_PAGE is not set
 # CONFIG_CONFIGFS_FS is not set
@@ -3016,6 +3777,7 @@ CONFIG_MISC_FILESYSTEMS=y
 # CONFIG_ADFS_FS is not set
 # CONFIG_AFFS_FS is not set
 CONFIG_ECRYPT_FS=m
+# CONFIG_ECRYPT_FS_MESSAGING is not set
 # CONFIG_HFS_FS is not set
 # CONFIG_HFSPLUS_FS is not set
 # CONFIG_BEFS_FS is not set
@@ -3045,6 +3807,7 @@ CONFIG_JFFS2_CMODE_PRIORITY=y
 # CONFIG_OMFS_FS is not set
 # CONFIG_HPFS_FS is not set
 # CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX6FS_FS is not set
 # CONFIG_ROMFS_FS is not set
 # CONFIG_PSTORE is not set
 # CONFIG_SYSV_FS is not set
@@ -3052,21 +3815,24 @@ CONFIG_UFS_FS=m
 # CONFIG_UFS_FS_WRITE is not set
 # CONFIG_UFS_DEBUG is not set
 # CONFIG_EXOFS_FS is not set
+# CONFIG_F2FS_FS is not set
 CONFIG_NETWORK_FILESYSTEMS=y
 CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
+CONFIG_NFS_V2=m
+CONFIG_NFS_V3=m
 CONFIG_NFS_V3_ACL=y
-CONFIG_NFS_V4=y
+CONFIG_NFS_V4=m
+# CONFIG_NFS_SWAP is not set
 # CONFIG_NFS_V4_1 is not set
 # CONFIG_NFS_FSCACHE is not set
 # CONFIG_NFS_USE_LEGACY_DNS is not set
 CONFIG_NFS_USE_KERNEL_DNS=y
-# CONFIG_NFS_USE_NEW_IDMAPPER is not set
 CONFIG_NFSD=m
 CONFIG_NFSD_V2_ACL=y
 CONFIG_NFSD_V3=y
 CONFIG_NFSD_V3_ACL=y
 CONFIG_NFSD_V4=y
+# CONFIG_NFSD_FAULT_INJECTION is not set
 CONFIG_LOCKD=m
 CONFIG_LOCKD_V4=y
 CONFIG_NFS_ACL_SUPPORT=m
@@ -3074,6 +3840,7 @@ CONFIG_NFS_COMMON=y
 CONFIG_SUNRPC=m
 CONFIG_SUNRPC_GSS=m
 CONFIG_RPCSEC_GSS_KRB5=m
+# CONFIG_SUNRPC_DEBUG is not set
 # CONFIG_CEPH_FS is not set
 CONFIG_CIFS=m
 CONFIG_CIFS_STATS=y
@@ -3082,36 +3849,15 @@ CONFIG_CIFS_STATS2=y
 # CONFIG_CIFS_UPCALL is not set
 CONFIG_CIFS_XATTR=y
 CONFIG_CIFS_POSIX=y
+CONFIG_CIFS_ACL=y
+CONFIG_CIFS_DEBUG=y
 # CONFIG_CIFS_DEBUG2 is not set
 # CONFIG_CIFS_DFS_UPCALL is not set
+# CONFIG_CIFS_SMB2 is not set
 # CONFIG_CIFS_FSCACHE is not set
-CONFIG_CIFS_ACL=y
 # CONFIG_NCP_FS is not set
 # CONFIG_CODA_FS is not set
 # CONFIG_AFS_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-CONFIG_BSD_DISKLABEL=y
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-CONFIG_LDM_PARTITION=y
-# CONFIG_LDM_DEBUG is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-CONFIG_EFI_PARTITION=y
-# CONFIG_SYSV68_PARTITION is not set
 CONFIG_NLS=y
 CONFIG_NLS_DEFAULT="cp850"
 # CONFIG_NLS_CODEPAGE_437 is not set
@@ -3151,6 +3897,17 @@ CONFIG_NLS_ISO8859_1=y
 # CONFIG_NLS_ISO8859_15 is not set
 # CONFIG_NLS_KOI8_R is not set
 # CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_MAC_ROMAN is not set
+# CONFIG_NLS_MAC_CELTIC is not set
+# CONFIG_NLS_MAC_CENTEURO is not set
+# CONFIG_NLS_MAC_CROATIAN is not set
+# CONFIG_NLS_MAC_CYRILLIC is not set
+# CONFIG_NLS_MAC_GAELIC is not set
+# CONFIG_NLS_MAC_GREEK is not set
+# CONFIG_NLS_MAC_ICELAND is not set
+# CONFIG_NLS_MAC_INUIT is not set
+# CONFIG_NLS_MAC_ROMANIAN is not set
+# CONFIG_NLS_MAC_TURKISH is not set
 CONFIG_NLS_UTF8=y
 
 #
@@ -3163,6 +3920,7 @@ CONFIG_ENABLE_MUST_CHECK=y
 CONFIG_FRAME_WARN=1024
 # CONFIG_MAGIC_SYSRQ is not set
 CONFIG_STRIP_ASM_SYMS=y
+# CONFIG_READABLE_ASM is not set
 # CONFIG_UNUSED_SYMBOLS is not set
 # CONFIG_DEBUG_FS is not set
 # CONFIG_HEADERS_CHECK is not set
@@ -3170,7 +3928,8 @@ CONFIG_STRIP_ASM_SYMS=y
 CONFIG_DEBUG_KERNEL=y
 # CONFIG_DEBUG_SHIRQ is not set
 # CONFIG_LOCKUP_DETECTOR is not set
-# CONFIG_HARDLOCKUP_DETECTOR is not set
+# CONFIG_PANIC_ON_OOPS is not set
+CONFIG_PANIC_ON_OOPS_VALUE=0
 CONFIG_DETECT_HUNG_TASK=y
 CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
 # CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
@@ -3181,6 +3940,7 @@ CONFIG_TIMER_STATS=y
 # CONFIG_DEBUG_OBJECTS is not set
 # CONFIG_SLUB_DEBUG_ON is not set
 # CONFIG_SLUB_STATS is not set
+CONFIG_HAVE_DEBUG_KMEMLEAK=y
 # CONFIG_DEBUG_KMEMLEAK is not set
 # CONFIG_DEBUG_RT_MUTEXES is not set
 # CONFIG_RT_MUTEX_TESTER is not set
@@ -3188,7 +3948,6 @@ CONFIG_TIMER_STATS=y
 # CONFIG_DEBUG_MUTEXES is not set
 # CONFIG_DEBUG_LOCK_ALLOC is not set
 # CONFIG_PROVE_LOCKING is not set
-# CONFIG_SPARSE_RCU_POINTER is not set
 # CONFIG_LOCK_STAT is not set
 # CONFIG_DEBUG_ATOMIC_SLEEP is not set
 # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
@@ -3206,47 +3965,71 @@ CONFIG_DEBUG_MEMORY_INIT=y
 # CONFIG_DEBUG_CREDENTIALS is not set
 CONFIG_FRAME_POINTER=y
 # CONFIG_BOOT_PRINTK_DELAY is not set
+
+#
+# RCU Debugging
+#
+# CONFIG_SPARSE_RCU_POINTER is not set
 # CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_RCU_TRACE is not set
 # CONFIG_BACKTRACE_SELF_TEST is not set
 # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
 # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
+# CONFIG_NOTIFIER_ERROR_INJECTION is not set
 # CONFIG_FAULT_INJECTION is not set
 # CONFIG_LATENCYTOP is not set
-# CONFIG_SYSCTL_SYSCALL_CHECK is not set
 # CONFIG_DEBUG_PAGEALLOC is not set
 CONFIG_HAVE_FUNCTION_TRACER=y
 CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
 CONFIG_HAVE_DYNAMIC_FTRACE=y
 CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
+CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
 CONFIG_HAVE_C_RECORDMCOUNT=y
 CONFIG_TRACING_SUPPORT=y
 # CONFIG_FTRACE is not set
+# CONFIG_RBTREE_TEST is not set
+# CONFIG_INTERVAL_TREE_TEST is not set
 # CONFIG_DMA_API_DEBUG is not set
 # CONFIG_ATOMIC64_SELFTEST is not set
 CONFIG_ASYNC_RAID6_TEST=m
 # CONFIG_SAMPLES is not set
 CONFIG_HAVE_ARCH_KGDB=y
 # CONFIG_KGDB is not set
+# CONFIG_TEST_STRING_HELPERS is not set
 # CONFIG_TEST_KSTRTOX is not set
 # CONFIG_STRICT_DEVMEM is not set
 # CONFIG_ARM_UNWIND is not set
 # CONFIG_DEBUG_USER is not set
 CONFIG_DEBUG_LL=y
-CONFIG_DEBUG_LL_UART_NONE=y
+# CONFIG_DEBUG_LL_UART_NONE is not set
 # CONFIG_DEBUG_ICEDCC is not set
-# CONFIG_DEBUG_BCM2708_UART0 is not set
+# CONFIG_DEBUG_SEMIHOSTING is not set
+CONFIG_DEBUG_BCM2708_UART0=y
+CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
+CONFIG_UNCOMPRESS_INCLUDE="mach/uncompress.h"
 CONFIG_EARLY_PRINTK=y
 # CONFIG_OC_ETM is not set
+# CONFIG_PID_IN_CONTEXTIDR is not set
 
 #
 # Security options
 #
 CONFIG_KEYS=y
 # CONFIG_ENCRYPTED_KEYS is not set
-# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
-# CONFIG_SECURITY_DMESG_RESTRICT is not set
-# CONFIG_SECURITY is not set
-# CONFIG_SECURITYFS is not set
+CONFIG_KEYS_DEBUG_PROC_KEYS=y
+CONFIG_SECURITY_DMESG_RESTRICT=y
+CONFIG_SECURITY=y
+CONFIG_SECURITYFS=y
+CONFIG_SECURITY_NETWORK=y
+CONFIG_SECURITY_NETWORK_XFRM=y
+# CONFIG_SECURITY_PATH is not set
+# CONFIG_SECURITY_SELINUX is not set
+# CONFIG_SECURITY_SMACK is not set
+# CONFIG_SECURITY_TOMOYO is not set
+# CONFIG_SECURITY_APPARMOR is not set
+# CONFIG_SECURITY_YAMA is not set
+# CONFIG_IMA is not set
+# CONFIG_EVM is not set
 CONFIG_DEFAULT_SECURITY_DAC=y
 CONFIG_DEFAULT_SECURITY=""
 CONFIG_XOR_BLOCKS=m
@@ -3277,7 +4060,7 @@ CONFIG_CRYPTO_MANAGER2=y
 CONFIG_CRYPTO_USER=m
 CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
 CONFIG_CRYPTO_GF128MUL=m
-# CONFIG_CRYPTO_NULL is not set
+CONFIG_CRYPTO_NULL=m
 CONFIG_CRYPTO_WORKQUEUE=y
 CONFIG_CRYPTO_CRYPTD=m
 CONFIG_CRYPTO_AUTHENC=m
@@ -3304,6 +4087,7 @@ CONFIG_CRYPTO_XTS=m
 #
 # Hash modes
 #
+CONFIG_CRYPTO_CMAC=m
 CONFIG_CRYPTO_HMAC=y
 CONFIG_CRYPTO_XCBC=m
 CONFIG_CRYPTO_VMAC=m
@@ -3311,7 +4095,8 @@ CONFIG_CRYPTO_VMAC=m
 #
 # Digest
 #
-CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_CRC32C=y
+CONFIG_CRYPTO_CRC32=m
 CONFIG_CRYPTO_GHASH=m
 CONFIG_CRYPTO_MD4=m
 CONFIG_CRYPTO_MD5=m
@@ -3321,7 +4106,8 @@ CONFIG_CRYPTO_RMD160=m
 CONFIG_CRYPTO_RMD256=m
 CONFIG_CRYPTO_RMD320=m
 CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA1_ARM=m
+CONFIG_CRYPTO_SHA256=y
 CONFIG_CRYPTO_SHA512=m
 CONFIG_CRYPTO_TGR192=m
 CONFIG_CRYPTO_WP512=m
@@ -3329,12 +4115,14 @@ CONFIG_CRYPTO_WP512=m
 #
 # Ciphers
 #
-CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_AES=y
+CONFIG_CRYPTO_AES_ARM=m
 CONFIG_CRYPTO_ANUBIS=m
 CONFIG_CRYPTO_ARC4=m
 CONFIG_CRYPTO_BLOWFISH=m
 CONFIG_CRYPTO_BLOWFISH_COMMON=m
 CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_CAST_COMMON=m
 CONFIG_CRYPTO_CAST5=m
 CONFIG_CRYPTO_CAST6=m
 CONFIG_CRYPTO_DES=m
@@ -3362,6 +4150,10 @@ CONFIG_CRYPTO_USER_API=m
 CONFIG_CRYPTO_USER_API_HASH=m
 CONFIG_CRYPTO_USER_API_SKCIPHER=m
 CONFIG_CRYPTO_HW=y
+CONFIG_ASYMMETRIC_KEY_TYPE=m
+CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=m
+CONFIG_PUBLIC_KEY_ALGO_RSA=m
+CONFIG_X509_CERTIFICATE_PARSER=m
 # CONFIG_BINARY_PRINTF is not set
 
 #
@@ -3369,11 +4161,20 @@ CONFIG_CRYPTO_HW=y
 #
 CONFIG_RAID6_PQ=m
 CONFIG_BITREVERSE=y
+CONFIG_GENERIC_STRNCPY_FROM_USER=y
+CONFIG_GENERIC_STRNLEN_USER=y
+CONFIG_GENERIC_PCI_IOMAP=y
+CONFIG_GENERIC_IO=y
 CONFIG_CRC_CCITT=m
 CONFIG_CRC16=y
 CONFIG_CRC_T10DIF=m
 CONFIG_CRC_ITU_T=m
 CONFIG_CRC32=y
+# CONFIG_CRC32_SELFTEST is not set
+CONFIG_CRC32_SLICEBY8=y
+# CONFIG_CRC32_SLICEBY4 is not set
+# CONFIG_CRC32_SARWATE is not set
+# CONFIG_CRC32_BIT is not set
 CONFIG_CRC7=m
 CONFIG_LIBCRC32C=m
 CONFIG_CRC8=m
@@ -3403,7 +4204,14 @@ CONFIG_TEXTSEARCH_FSM=m
 CONFIG_HAS_IOMEM=y
 CONFIG_HAS_IOPORT=y
 CONFIG_HAS_DMA=y
+CONFIG_DQL=y
 CONFIG_NLATTR=y
 CONFIG_GENERIC_ATOMIC64=y
+CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y
 CONFIG_AVERAGE=y
+CONFIG_CLZ_TAB=y
 CONFIG_CORDIC=m
+# CONFIG_DDR is not set
+CONFIG_MPILIB=m
+CONFIG_OID_REGISTRY=m
+# CONFIG_VIRTUALIZATION is not set
index ae5e3718a066cbedaa443f16df2f7a49acad6f7c..925b0e0e223a2f9f9f173eff0569390ddbd32a0b 100644 (file)
@@ -1,46 +1,34 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/i386 3.2.47 Kernel Configuration
+# Linux/x86 3.10.11-ipfire Kernel Configuration
 #
 # CONFIG_64BIT is not set
 CONFIG_X86_32=y
-# CONFIG_X86_64 is not set
 CONFIG_X86=y
 CONFIG_INSTRUCTION_DECODER=y
 CONFIG_OUTPUT_FORMAT="elf32-i386"
 CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"
-CONFIG_GENERIC_CMOS_UPDATE=y
-CONFIG_CLOCKSOURCE_WATCHDOG=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
 CONFIG_LOCKDEP_SUPPORT=y
 CONFIG_STACKTRACE_SUPPORT=y
 CONFIG_HAVE_LATENCYTOP_SUPPORT=y
 CONFIG_MMU=y
-CONFIG_ZONE_DMA=y
 CONFIG_NEED_DMA_MAP_STATE=y
 CONFIG_NEED_SG_DMA_LENGTH=y
 CONFIG_GENERIC_ISA_DMA=y
-CONFIG_GENERIC_IOMAP=y
 CONFIG_GENERIC_BUG=y
 CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_GPIO=y
 CONFIG_ARCH_MAY_HAVE_PC_FDC=y
-# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
 CONFIG_RWSEM_XCHGADD_ALGORITHM=y
-CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
 CONFIG_GENERIC_CALIBRATE_DELAY=y
-# CONFIG_GENERIC_TIME_VSYSCALL is not set
 CONFIG_ARCH_HAS_CPU_RELAX=y
-CONFIG_ARCH_HAS_DEFAULT_IDLE=y
 CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
+CONFIG_ARCH_HAS_CPU_AUTOPROBE=y
 CONFIG_HAVE_SETUP_PER_CPU_AREA=y
 CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
 CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
 CONFIG_ARCH_HIBERNATION_POSSIBLE=y
 CONFIG_ARCH_SUSPEND_POSSIBLE=y
 # CONFIG_ZONE_DMA32 is not set
-CONFIG_ARCH_POPULATES_NODE_MAP=y
 # CONFIG_AUDIT_ARCH is not set
 CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
 CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -48,16 +36,15 @@ CONFIG_HAVE_INTEL_TXT=y
 CONFIG_X86_32_SMP=y
 CONFIG_X86_HT=y
 CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-ecx -fcall-saved-edx"
-CONFIG_KTIME_SCALAR=y
 CONFIG_ARCH_CPU_PROBE_RELEASE=y
+CONFIG_ARCH_SUPPORTS_UPROBES=y
 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-CONFIG_HAVE_IRQ_WORK=y
 CONFIG_IRQ_WORK=y
+CONFIG_BUILDTIME_EXTABLE_SORT=y
 
 #
 # General setup
 #
-CONFIG_EXPERIMENTAL=y
 CONFIG_INIT_ENV_ARG_LIMIT=32
 CONFIG_CROSS_COMPILE=""
 CONFIG_LOCALVERSION=""
@@ -69,8 +56,8 @@ CONFIG_HAVE_KERNEL_XZ=y
 CONFIG_HAVE_KERNEL_LZO=y
 # CONFIG_KERNEL_GZIP is not set
 # CONFIG_KERNEL_BZIP2 is not set
-CONFIG_KERNEL_LZMA=y
-# CONFIG_KERNEL_XZ is not set
+# CONFIG_KERNEL_LZMA is not set
+CONFIG_KERNEL_XZ=y
 # CONFIG_KERNEL_LZO is not set
 CONFIG_DEFAULT_HOSTNAME="(none)"
 CONFIG_SWAP=y
@@ -78,54 +65,99 @@ CONFIG_SYSVIPC=y
 CONFIG_SYSVIPC_SYSCTL=y
 CONFIG_POSIX_MQUEUE=y
 CONFIG_POSIX_MQUEUE_SYSCTL=y
-CONFIG_BSD_PROCESS_ACCT=y
-CONFIG_BSD_PROCESS_ACCT_V3=y
-# CONFIG_FHANDLE is not set
-CONFIG_TASKSTATS=y
-CONFIG_TASK_DELAY_ACCT=y
-# CONFIG_TASK_XACCT is not set
+CONFIG_FHANDLE=y
 CONFIG_AUDIT=y
 CONFIG_AUDITSYSCALL=y
 CONFIG_AUDIT_WATCH=y
 CONFIG_AUDIT_TREE=y
+CONFIG_AUDIT_LOGINUID_IMMUTABLE=y
 CONFIG_HAVE_GENERIC_HARDIRQS=y
 
 #
 # IRQ subsystem
 #
 CONFIG_GENERIC_HARDIRQS=y
-CONFIG_HAVE_SPARSE_IRQ=y
 CONFIG_GENERIC_IRQ_PROBE=y
 CONFIG_GENERIC_IRQ_SHOW=y
 CONFIG_GENERIC_PENDING_IRQ=y
-CONFIG_GENERIC_IRQ_CHIP=y
+CONFIG_IRQ_DOMAIN=y
+# CONFIG_IRQ_DOMAIN_DEBUG is not set
 CONFIG_IRQ_FORCED_THREADING=y
 CONFIG_SPARSE_IRQ=y
+CONFIG_CLOCKSOURCE_WATCHDOG=y
+CONFIG_KTIME_SCALAR=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
+CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y
+CONFIG_GENERIC_CMOS_UPDATE=y
+
+#
+# Timers subsystem
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ_COMMON=y
+# CONFIG_HZ_PERIODIC is not set
+CONFIG_NO_HZ_IDLE=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+
+#
+# CPU/Task time and stats accounting
+#
+# CONFIG_TICK_CPU_ACCOUNTING is not set
+CONFIG_IRQ_TIME_ACCOUNTING=y
+CONFIG_BSD_PROCESS_ACCT=y
+# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+CONFIG_TASKSTATS=y
+CONFIG_TASK_DELAY_ACCT=y
+CONFIG_TASK_XACCT=y
+CONFIG_TASK_IO_ACCOUNTING=y
 
 #
 # RCU Subsystem
 #
 CONFIG_TREE_RCU=y
 # CONFIG_PREEMPT_RCU is not set
-# CONFIG_RCU_TRACE is not set
+CONFIG_RCU_STALL_COMMON=y
 CONFIG_RCU_FANOUT=32
+CONFIG_RCU_FANOUT_LEAF=16
 # CONFIG_RCU_FANOUT_EXACT is not set
-# CONFIG_RCU_FAST_NO_HZ is not set
+CONFIG_RCU_FAST_NO_HZ=y
 # CONFIG_TREE_RCU_TRACE is not set
+CONFIG_RCU_NOCB_CPU=y
+# CONFIG_RCU_NOCB_CPU_NONE is not set
+# CONFIG_RCU_NOCB_CPU_ZERO is not set
+CONFIG_RCU_NOCB_CPU_ALL=y
 # CONFIG_IKCONFIG is not set
-CONFIG_LOG_BUF_SHIFT=17
+CONFIG_LOG_BUF_SHIFT=18
 CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
-# CONFIG_CGROUPS is not set
+CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y
+CONFIG_ARCH_WANTS_PROT_NUMA_PROT_NONE=y
+CONFIG_CGROUPS=y
+# CONFIG_CGROUP_DEBUG is not set
+CONFIG_CGROUP_FREEZER=y
+CONFIG_CGROUP_DEVICE=y
+CONFIG_CPUSETS=y
+CONFIG_PROC_PID_CPUSET=y
+CONFIG_CGROUP_CPUACCT=y
+CONFIG_RESOURCE_COUNTERS=y
+# CONFIG_MEMCG is not set
+CONFIG_CGROUP_PERF=y
+CONFIG_CGROUP_SCHED=y
+CONFIG_FAIR_GROUP_SCHED=y
+# CONFIG_CFS_BANDWIDTH is not set
+CONFIG_RT_GROUP_SCHED=y
+CONFIG_BLK_CGROUP=y
+# CONFIG_DEBUG_BLK_CGROUP is not set
 CONFIG_NAMESPACES=y
 CONFIG_UTS_NS=y
 CONFIG_IPC_NS=y
-# CONFIG_USER_NS is not set
-# CONFIG_PID_NS is not set
-# CONFIG_NET_NS is not set
-# CONFIG_SCHED_AUTOGROUP is not set
-CONFIG_SYSFS_DEPRECATED=y
-CONFIG_SYSFS_DEPRECATED_V2=y
-# CONFIG_RELAY is not set
+CONFIG_PID_NS=y
+CONFIG_NET_NS=y
+CONFIG_SCHED_AUTOGROUP=y
+# CONFIG_SYSFS_DEPRECATED is not set
+CONFIG_RELAY=y
 CONFIG_BLK_DEV_INITRD=y
 CONFIG_INITRAMFS_SOURCE=""
 CONFIG_RD_GZIP=y
@@ -136,17 +168,19 @@ CONFIG_RD_LZO=y
 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 CONFIG_SYSCTL=y
 CONFIG_ANON_INODES=y
-# CONFIG_EXPERT is not set
+CONFIG_HAVE_UID16=y
+CONFIG_SYSCTL_EXCEPTION_TRACE=y
+CONFIG_HOTPLUG=y
+CONFIG_HAVE_PCSPKR_PLATFORM=y
+CONFIG_EXPERT=y
 CONFIG_UID16=y
 # CONFIG_SYSCTL_SYSCALL is not set
 CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-CONFIG_HOTPLUG=y
+CONFIG_KALLSYMS_ALL=y
 CONFIG_PRINTK=y
 CONFIG_BUG=y
 CONFIG_ELF_CORE=y
 CONFIG_PCSPKR_PLATFORM=y
-CONFIG_HAVE_PCSPKR_PLATFORM=y
 CONFIG_BASE_FULL=y
 CONFIG_FUTEX=y
 CONFIG_EPOLL=y
@@ -155,46 +189,69 @@ CONFIG_TIMERFD=y
 CONFIG_EVENTFD=y
 CONFIG_SHMEM=y
 CONFIG_AIO=y
-# CONFIG_EMBEDDED is not set
+CONFIG_PCI_QUIRKS=y
+CONFIG_EMBEDDED=y
 CONFIG_HAVE_PERF_EVENTS=y
 
 #
 # Kernel Performance Events And Counters
 #
 CONFIG_PERF_EVENTS=y
-# CONFIG_PERF_COUNTERS is not set
 # CONFIG_DEBUG_PERF_USE_VMALLOC is not set
 CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_PCI_QUIRKS=y
 CONFIG_SLUB_DEBUG=y
 # CONFIG_COMPAT_BRK is not set
 # CONFIG_SLAB is not set
 CONFIG_SLUB=y
+# CONFIG_SLOB is not set
 # CONFIG_PROFILING is not set
+CONFIG_TRACEPOINTS=y
 CONFIG_HAVE_OPROFILE=y
+CONFIG_OPROFILE_NMI_TIMER=y
 # CONFIG_KPROBES is not set
-# CONFIG_JUMP_LABEL is not set
+CONFIG_JUMP_LABEL=y
+# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
 CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
+CONFIG_ARCH_USE_BUILTIN_BSWAP=y
 CONFIG_USER_RETURN_NOTIFIER=y
 CONFIG_HAVE_IOREMAP_PROT=y
 CONFIG_HAVE_KPROBES=y
 CONFIG_HAVE_KRETPROBES=y
 CONFIG_HAVE_OPTPROBES=y
+CONFIG_HAVE_KPROBES_ON_FTRACE=y
 CONFIG_HAVE_ARCH_TRACEHOOK=y
 CONFIG_HAVE_DMA_ATTRS=y
+CONFIG_HAVE_DMA_CONTIGUOUS=y
 CONFIG_USE_GENERIC_SMP_HELPERS=y
+CONFIG_GENERIC_SMP_IDLE_THREAD=y
 CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
+CONFIG_HAVE_CLK=y
 CONFIG_HAVE_DMA_API_DEBUG=y
 CONFIG_HAVE_HW_BREAKPOINT=y
 CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y
 CONFIG_HAVE_USER_RETURN_NOTIFIER=y
 CONFIG_HAVE_PERF_EVENTS_NMI=y
+CONFIG_HAVE_PERF_REGS=y
+CONFIG_HAVE_PERF_USER_STACK_DUMP=y
 CONFIG_HAVE_ARCH_JUMP_LABEL=y
 CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y
+CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y
+CONFIG_HAVE_CMPXCHG_LOCAL=y
+CONFIG_HAVE_CMPXCHG_DOUBLE=y
+CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
+CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
+CONFIG_SECCOMP_FILTER=y
+CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
+CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
+CONFIG_MODULES_USE_ELF_REL=y
+CONFIG_CLONE_BACKWARDS=y
+CONFIG_OLD_SIGSUSPEND3=y
+CONFIG_OLD_SIGACTION=y
 
 #
 # GCOV-based kernel profiling
 #
+# CONFIG_GCOV_KERNEL is not set
 CONFIG_HAVE_GENERIC_DMA_COHERENT=y
 CONFIG_SLABINFO=y
 CONFIG_RT_MUTEXES=y
@@ -202,15 +259,40 @@ CONFIG_BASE_SMALL=0
 CONFIG_MODULES=y
 # CONFIG_MODULE_FORCE_LOAD is not set
 CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
 # CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_MODULE_SRCVERSION_ALL=y
+# CONFIG_MODULE_SIG is not set
 CONFIG_STOP_MACHINE=y
 CONFIG_BLOCK=y
 CONFIG_LBDAF=y
 CONFIG_BLK_DEV_BSG=y
 CONFIG_BLK_DEV_BSGLIB=y
-# CONFIG_BLK_DEV_INTEGRITY is not set
+CONFIG_BLK_DEV_INTEGRITY=y
+CONFIG_BLK_DEV_THROTTLING=y
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+CONFIG_LDM_PARTITION=y
+# CONFIG_LDM_DEBUG is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+CONFIG_EFI_PARTITION=y
+# CONFIG_SYSV68_PARTITION is not set
 
 #
 # IO Schedulers
@@ -218,74 +300,53 @@ CONFIG_BLK_DEV_BSGLIB=y
 CONFIG_IOSCHED_NOOP=y
 CONFIG_IOSCHED_DEADLINE=y
 CONFIG_IOSCHED_CFQ=y
+CONFIG_CFQ_GROUP_IOSCHED=y
 # CONFIG_DEFAULT_DEADLINE is not set
 CONFIG_DEFAULT_CFQ=y
 # CONFIG_DEFAULT_NOOP is not set
 CONFIG_DEFAULT_IOSCHED="cfq"
 CONFIG_PREEMPT_NOTIFIERS=y
 CONFIG_PADATA=y
-# CONFIG_INLINE_SPIN_TRYLOCK is not set
-# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
-# CONFIG_INLINE_SPIN_LOCK is not set
-# CONFIG_INLINE_SPIN_LOCK_BH is not set
-# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
-# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
-CONFIG_INLINE_SPIN_UNLOCK=y
-# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
+CONFIG_ASN1=m
 CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
-# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
-# CONFIG_INLINE_READ_TRYLOCK is not set
-# CONFIG_INLINE_READ_LOCK is not set
-# CONFIG_INLINE_READ_LOCK_BH is not set
-# CONFIG_INLINE_READ_LOCK_IRQ is not set
-# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
 CONFIG_INLINE_READ_UNLOCK=y
-# CONFIG_INLINE_READ_UNLOCK_BH is not set
 CONFIG_INLINE_READ_UNLOCK_IRQ=y
-# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
-# CONFIG_INLINE_WRITE_TRYLOCK is not set
-# CONFIG_INLINE_WRITE_LOCK is not set
-# CONFIG_INLINE_WRITE_LOCK_BH is not set
-# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
-# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
 CONFIG_INLINE_WRITE_UNLOCK=y
-# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
 CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
-# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
 CONFIG_MUTEX_SPIN_ON_OWNER=y
 CONFIG_FREEZER=y
 
 #
 # Processor type and features
 #
-CONFIG_TICK_ONESHOT=y
-CONFIG_NO_HZ=y
-CONFIG_HIGH_RES_TIMERS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y
+CONFIG_ZONE_DMA=y
 CONFIG_SMP=y
 CONFIG_X86_MPPARSE=y
-# CONFIG_X86_BIGSMP is not set
+CONFIG_X86_BIGSMP=y
 CONFIG_X86_EXTENDED_PLATFORM=y
+# CONFIG_X86_GOLDFISH is not set
 # CONFIG_X86_WANT_INTEL_MID is not set
+CONFIG_X86_INTEL_LPSS=y
 # CONFIG_X86_RDC321X is not set
-# CONFIG_X86_32_NON_STANDARD is not set
+CONFIG_X86_32_NON_STANDARD=y
+# CONFIG_X86_NUMAQ is not set
 CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
-# CONFIG_X86_32_IRIS is not set
+# CONFIG_STA2X11 is not set
+# CONFIG_X86_SUMMIT is not set
+# CONFIG_X86_ES7000 is not set
+CONFIG_X86_32_IRIS=m
 CONFIG_SCHED_OMIT_FRAME_POINTER=y
-CONFIG_PARAVIRT_GUEST=y
-# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set
+CONFIG_HYPERVISOR_GUEST=y
+CONFIG_PARAVIRT=y
+# CONFIG_PARAVIRT_DEBUG is not set
+# CONFIG_PARAVIRT_SPINLOCKS is not set
 # CONFIG_XEN_PRIVILEGED_GUEST is not set
-CONFIG_KVM_CLOCK=y
 CONFIG_KVM_GUEST=y
-CONFIG_LGUEST_GUEST=y
-CONFIG_PARAVIRT=y
-CONFIG_PARAVIRT_SPINLOCKS=y
+# CONFIG_LGUEST_GUEST is not set
+CONFIG_PARAVIRT_TIME_ACCOUNTING=y
 CONFIG_PARAVIRT_CLOCK=y
-# CONFIG_PARAVIRT_DEBUG is not set
 CONFIG_NO_BOOTMEM=y
 # CONFIG_MEMTEST is not set
-# CONFIG_M386 is not set
 # CONFIG_M486 is not set
 # CONFIG_M586 is not set
 CONFIG_M586TSC=y
@@ -312,21 +373,14 @@ CONFIG_M586TSC=y
 # CONFIG_MATOM is not set
 CONFIG_X86_GENERIC=y
 CONFIG_X86_INTERNODE_CACHE_SHIFT=6
-CONFIG_X86_CMPXCHG=y
-CONFIG_CMPXCHG_LOCAL=y
-CONFIG_CMPXCHG_DOUBLE=y
 CONFIG_X86_L1_CACHE_SHIFT=6
-CONFIG_X86_XADD=y
-CONFIG_X86_PPRO_FENCE=y
+# CONFIG_X86_PPRO_FENCE is not set
 CONFIG_X86_F00F_BUG=y
-CONFIG_X86_WP_WORKS_OK=y
-CONFIG_X86_INVLPG=y
-CONFIG_X86_BSWAP=y
-CONFIG_X86_POPAD_OK=y
 CONFIG_X86_ALIGNMENT_16=y
 CONFIG_X86_INTEL_USERCOPY=y
 CONFIG_X86_TSC=y
 CONFIG_X86_MINIMUM_CPU_FAMILY=4
+# CONFIG_PROCESSOR_SELECT is not set
 CONFIG_CPU_SUP_INTEL=y
 CONFIG_CPU_SUP_CYRIX_32=y
 CONFIG_CPU_SUP_AMD=y
@@ -336,11 +390,9 @@ CONFIG_CPU_SUP_UMC_32=y
 CONFIG_HPET_TIMER=y
 CONFIG_HPET_EMULATE_RTC=y
 CONFIG_DMI=y
-# CONFIG_IOMMU_HELPER is not set
 CONFIG_NR_CPUS=8
 CONFIG_SCHED_SMT=y
 CONFIG_SCHED_MC=y
-CONFIG_IRQ_TIME_ACCOUNTING=y
 CONFIG_PREEMPT_NONE=y
 # CONFIG_PREEMPT_VOLUNTARY is not set
 # CONFIG_PREEMPT is not set
@@ -350,27 +402,33 @@ CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
 CONFIG_X86_MCE=y
 CONFIG_X86_MCE_INTEL=y
 CONFIG_X86_MCE_AMD=y
-CONFIG_X86_ANCIENT_MCE=y
+# CONFIG_X86_ANCIENT_MCE is not set
 CONFIG_X86_MCE_THRESHOLD=y
-CONFIG_X86_MCE_INJECT=m
+# CONFIG_X86_MCE_INJECT is not set
 CONFIG_X86_THERMAL_VECTOR=y
 CONFIG_VM86=y
 CONFIG_TOSHIBA=m
 CONFIG_I8K=m
-CONFIG_X86_REBOOTFIXUPS=y
+# CONFIG_X86_REBOOTFIXUPS is not set
 CONFIG_MICROCODE=m
 CONFIG_MICROCODE_INTEL=y
 CONFIG_MICROCODE_AMD=y
 CONFIG_MICROCODE_OLD_INTERFACE=y
-CONFIG_X86_MSR=m
+CONFIG_MICROCODE_INTEL_LIB=y
+CONFIG_MICROCODE_INTEL_EARLY=y
+CONFIG_MICROCODE_EARLY=y
+# CONFIG_X86_MSR is not set
 CONFIG_X86_CPUID=y
 # CONFIG_NOHIGHMEM is not set
 CONFIG_HIGHMEM4G=y
 # CONFIG_HIGHMEM64G is not set
+CONFIG_VMSPLIT_3G=y
+# CONFIG_VMSPLIT_3G_OPT is not set
+# CONFIG_VMSPLIT_2G is not set
+# CONFIG_VMSPLIT_2G_OPT is not set
+# CONFIG_VMSPLIT_1G is not set
 CONFIG_PAGE_OFFSET=0xC0000000
 CONFIG_HIGHMEM=y
-# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
-# CONFIG_ARCH_DMA_ADDR_T_64BIT is not set
 CONFIG_ARCH_FLATMEM_ENABLE=y
 CONFIG_ARCH_SPARSEMEM_ENABLE=y
 CONFIG_ARCH_SELECT_MEMORY_MODEL=y
@@ -382,9 +440,15 @@ CONFIG_FLATMEM=y
 CONFIG_FLAT_NODE_MEM_MAP=y
 CONFIG_SPARSEMEM_STATIC=y
 CONFIG_HAVE_MEMBLOCK=y
+CONFIG_HAVE_MEMBLOCK_NODE_MAP=y
+CONFIG_ARCH_DISCARD_MEMBLOCK=y
+CONFIG_MEMORY_ISOLATION=y
+# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
 CONFIG_PAGEFLAGS_EXTENDED=y
 CONFIG_SPLIT_PTLOCK_CPUS=4
-# CONFIG_COMPACTION is not set
+CONFIG_BALLOON_COMPACTION=y
+CONFIG_COMPACTION=y
+CONFIG_MIGRATION=y
 # CONFIG_PHYS_ADDR_T_64BIT is not set
 CONFIG_ZONE_DMA_FLAG=1
 CONFIG_BOUNCE=y
@@ -393,19 +457,28 @@ CONFIG_MMU_NOTIFIER=y
 CONFIG_KSM=y
 CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
 CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y
-# CONFIG_MEMORY_FAILURE is not set
-# CONFIG_TRANSPARENT_HUGEPAGE is not set
-# CONFIG_CLEANCACHE is not set
-# CONFIG_HIGHPTE is not set
-# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set
+CONFIG_MEMORY_FAILURE=y
+CONFIG_TRANSPARENT_HUGEPAGE=y
+CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
+# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
+CONFIG_CROSS_MEMORY_ATTACH=y
+CONFIG_CLEANCACHE=y
+# CONFIG_FRONTSWAP is not set
+CONFIG_HIGHPTE=y
+CONFIG_X86_CHECK_BIOS_CORRUPTION=y
+CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
 CONFIG_X86_RESERVE_LOW=64
-CONFIG_MATH_EMULATION=y
+# CONFIG_MATH_EMULATION is not set
 CONFIG_MTRR=y
-# CONFIG_MTRR_SANITIZER is not set
+CONFIG_MTRR_SANITIZER=y
+CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1
+CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1
 CONFIG_X86_PAT=y
 CONFIG_ARCH_USES_PG_UNCACHED=y
 CONFIG_ARCH_RANDOM=y
-# CONFIG_EFI is not set
+CONFIG_X86_SMAP=y
+CONFIG_EFI=y
+CONFIG_EFI_STUB=y
 CONFIG_SECCOMP=y
 CONFIG_CC_STACKPROTECTOR=y
 # CONFIG_HZ_100 is not set
@@ -415,12 +488,14 @@ CONFIG_HZ_300=y
 CONFIG_HZ=300
 CONFIG_SCHED_HRTICK=y
 # CONFIG_KEXEC is not set
-# CONFIG_CRASH_DUMP is not set
-CONFIG_PHYSICAL_START=0x1000000
-# CONFIG_RELOCATABLE is not set
-CONFIG_PHYSICAL_ALIGN=0x100000
+CONFIG_CRASH_DUMP=y
+CONFIG_PHYSICAL_START=0x400000
+CONFIG_RELOCATABLE=y
+CONFIG_X86_NEED_RELOCS=y
+CONFIG_PHYSICAL_ALIGN=0x400000
 CONFIG_HOTPLUG_CPU=y
-CONFIG_COMPAT_VDSO=y
+# CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set
+# CONFIG_DEBUG_HOTPLUG_CPU0 is not set
 # CONFIG_CMDLINE_BOOL is not set
 CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
 
@@ -429,43 +504,56 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
 #
 CONFIG_SUSPEND=y
 CONFIG_SUSPEND_FREEZER=y
-# CONFIG_HIBERNATION is not set
+CONFIG_HIBERNATE_CALLBACKS=y
+CONFIG_HIBERNATION=y
+CONFIG_PM_STD_PARTITION=""
 CONFIG_PM_SLEEP=y
 CONFIG_PM_SLEEP_SMP=y
+# CONFIG_PM_AUTOSLEEP is not set
+# CONFIG_PM_WAKELOCKS is not set
 CONFIG_PM_RUNTIME=y
 CONFIG_PM=y
 # CONFIG_PM_DEBUG is not set
+CONFIG_PM_CLK=y
 CONFIG_ACPI=y
 CONFIG_ACPI_SLEEP=y
-# CONFIG_ACPI_PROCFS is not set
-CONFIG_ACPI_PROCFS_POWER=y
+CONFIG_ACPI_PROCFS=y
+# CONFIG_ACPI_PROCFS_POWER is not set
 CONFIG_ACPI_EC_DEBUGFS=m
-CONFIG_ACPI_PROC_EVENT=y
-CONFIG_ACPI_AC=m
-CONFIG_ACPI_BATTERY=m
-CONFIG_ACPI_BUTTON=m
+# CONFIG_ACPI_PROC_EVENT is not set
+CONFIG_ACPI_AC=y
+CONFIG_ACPI_BATTERY=y
+CONFIG_ACPI_BUTTON=y
 CONFIG_ACPI_VIDEO=m
-CONFIG_ACPI_FAN=m
+CONFIG_ACPI_FAN=y
 CONFIG_ACPI_DOCK=y
-CONFIG_ACPI_PROCESSOR=m
+CONFIG_ACPI_I2C=m
+CONFIG_ACPI_PROCESSOR=y
 CONFIG_ACPI_IPMI=m
 CONFIG_ACPI_HOTPLUG_CPU=y
 CONFIG_ACPI_PROCESSOR_AGGREGATOR=m
-CONFIG_ACPI_THERMAL=m
-CONFIG_ACPI_CUSTOM_DSDT_FILE=""
+CONFIG_ACPI_THERMAL=y
 # CONFIG_ACPI_CUSTOM_DSDT is not set
-CONFIG_ACPI_BLACKLIST_YEAR=0
+CONFIG_ACPI_INITRD_TABLE_OVERRIDE=y
+CONFIG_ACPI_BLACKLIST_YEAR=1999
 # CONFIG_ACPI_DEBUG is not set
-CONFIG_ACPI_PCI_SLOT=m
+CONFIG_ACPI_PCI_SLOT=y
 CONFIG_X86_PM_TIMER=y
-CONFIG_ACPI_CONTAINER=m
+CONFIG_ACPI_CONTAINER=y
 CONFIG_ACPI_SBS=m
-# CONFIG_ACPI_HED is not set
-# CONFIG_ACPI_APEI is not set
-# CONFIG_SFI is not set
+CONFIG_ACPI_HED=y
+CONFIG_ACPI_CUSTOM_METHOD=m
+# CONFIG_ACPI_BGRT is not set
+CONFIG_ACPI_APEI=y
+CONFIG_ACPI_APEI_GHES=y
+CONFIG_ACPI_APEI_PCIEAER=y
+CONFIG_ACPI_APEI_MEMORY_FAILURE=y
+# CONFIG_ACPI_APEI_EINJ is not set
+# CONFIG_ACPI_APEI_ERST_DEBUG is not set
+CONFIG_SFI=y
 CONFIG_X86_APM_BOOT=y
-CONFIG_APM=m
-CONFIG_APM_IGNORE_USER_SUSPEND=y
+CONFIG_APM=y
+# CONFIG_APM_IGNORE_USER_SUSPEND is not set
 # CONFIG_APM_DO_ENABLE is not set
 CONFIG_APM_CPU_IDLE=y
 # CONFIG_APM_DISPLAY_BLANK is not set
@@ -476,46 +564,52 @@ CONFIG_APM_CPU_IDLE=y
 #
 CONFIG_CPU_FREQ=y
 CONFIG_CPU_FREQ_TABLE=y
-CONFIG_CPU_FREQ_STAT=y
+CONFIG_CPU_FREQ_GOV_COMMON=y
+CONFIG_CPU_FREQ_STAT=m
 CONFIG_CPU_FREQ_STAT_DETAILS=y
-CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
 # CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
 # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
 CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
 CONFIG_CPU_FREQ_GOV_POWERSAVE=m
-CONFIG_CPU_FREQ_GOV_USERSPACE=m
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
 CONFIG_CPU_FREQ_GOV_ONDEMAND=m
 CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
 
 #
 # x86 CPU frequency scaling drivers
 #
-CONFIG_X86_PCC_CPUFREQ=m
-CONFIG_X86_ACPI_CPUFREQ=m
-CONFIG_X86_POWERNOW_K6=m
-CONFIG_X86_POWERNOW_K7=m
+CONFIG_X86_INTEL_PSTATE=y
+CONFIG_X86_PCC_CPUFREQ=y
+CONFIG_X86_ACPI_CPUFREQ=y
+# CONFIG_X86_ACPI_CPUFREQ_CPB is not set
+# CONFIG_X86_POWERNOW_K6 is not set
+CONFIG_X86_POWERNOW_K7=y
 CONFIG_X86_POWERNOW_K7_ACPI=y
-CONFIG_X86_POWERNOW_K8=m
-CONFIG_X86_GX_SUSPMOD=m
-CONFIG_X86_SPEEDSTEP_CENTRINO=m
-CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE=y
-CONFIG_X86_SPEEDSTEP_ICH=m
-CONFIG_X86_SPEEDSTEP_SMI=m
-CONFIG_X86_P4_CLOCKMOD=m
-CONFIG_X86_CPUFREQ_NFORCE2=m
-CONFIG_X86_LONGRUN=m
-CONFIG_X86_LONGHAUL=m
-CONFIG_X86_E_POWERSAVER=m
+CONFIG_X86_POWERNOW_K8=y
+# CONFIG_X86_AMD_FREQ_SENSITIVITY is not set
+# CONFIG_X86_GX_SUSPMOD is not set
+# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
+CONFIG_X86_SPEEDSTEP_ICH=y
+CONFIG_X86_SPEEDSTEP_SMI=y
+CONFIG_X86_P4_CLOCKMOD=y
+# CONFIG_X86_CPUFREQ_NFORCE2 is not set
+CONFIG_X86_LONGRUN=y
+# CONFIG_X86_LONGHAUL is not set
+# CONFIG_X86_E_POWERSAVER is not set
 
 #
 # shared options
 #
-CONFIG_X86_SPEEDSTEP_LIB=m
+CONFIG_X86_SPEEDSTEP_LIB=y
 # CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK is not set
 CONFIG_CPU_IDLE=y
+# CONFIG_CPU_IDLE_MULTIPLE_DRIVERS is not set
 CONFIG_CPU_IDLE_GOV_LADDER=y
 CONFIG_CPU_IDLE_GOV_MENU=y
+# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set
 CONFIG_INTEL_IDLE=y
 
 #
@@ -532,16 +626,21 @@ CONFIG_PCI_MMCONFIG=y
 CONFIG_PCI_DOMAINS=y
 # CONFIG_PCI_CNB20LE_QUIRK is not set
 CONFIG_PCIEPORTBUS=y
+CONFIG_HOTPLUG_PCI_PCIE=y
 CONFIG_PCIEAER=y
-# CONFIG_PCIE_ECRC is not set
-# CONFIG_PCIEAER_INJECT is not set
+CONFIG_PCIE_ECRC=y
+CONFIG_PCIEAER_INJECT=m
 CONFIG_PCIEASPM=y
 # CONFIG_PCIEASPM_DEBUG is not set
+# CONFIG_PCIEASPM_DEFAULT is not set
+CONFIG_PCIEASPM_POWERSAVE=y
+# CONFIG_PCIEASPM_PERFORMANCE is not set
 CONFIG_PCIE_PME=y
 CONFIG_ARCH_SUPPORTS_MSI=y
 CONFIG_PCI_MSI=y
 # CONFIG_PCI_DEBUG is not set
-CONFIG_PCI_STUB=m
+# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
+CONFIG_PCI_STUB=y
 CONFIG_HT_IRQ=y
 CONFIG_PCI_ATS=y
 CONFIG_PCI_IOV=y
@@ -552,17 +651,16 @@ CONFIG_PCI_LABEL=y
 CONFIG_ISA_DMA_API=y
 CONFIG_ISA=y
 CONFIG_EISA=y
-CONFIG_EISA_VLB_PRIMING=y
+# CONFIG_EISA_VLB_PRIMING is not set
 CONFIG_EISA_PCI_EISA=y
 CONFIG_EISA_VIRTUAL_ROOT=y
 CONFIG_EISA_NAMES=y
-CONFIG_MCA=y
-CONFIG_MCA_LEGACY=y
-# CONFIG_MCA_PROC_FS is not set
 CONFIG_SCx200=m
 CONFIG_SCx200HR_TIMER=m
 # CONFIG_OLPC is not set
 CONFIG_ALIX=y
+CONFIG_NET5501=y
+CONFIG_GEOS=y
 CONFIG_AMD_NB=y
 CONFIG_PCCARD=m
 CONFIG_PCMCIA=m
@@ -584,17 +682,25 @@ CONFIG_I82365=m
 CONFIG_TCIC=m
 CONFIG_PCMCIA_PROBE=y
 CONFIG_PCCARD_NONSTATIC=y
-# CONFIG_HOTPLUG_PCI is not set
+CONFIG_HOTPLUG_PCI=y
+# CONFIG_HOTPLUG_PCI_COMPAQ is not set
+# CONFIG_HOTPLUG_PCI_IBM is not set
+CONFIG_HOTPLUG_PCI_ACPI=y
+CONFIG_HOTPLUG_PCI_ACPI_IBM=m
+# CONFIG_HOTPLUG_PCI_CPCI is not set
+# CONFIG_HOTPLUG_PCI_SHPC is not set
 # CONFIG_RAPIDIO is not set
 
 #
 # Executable file formats / Emulations
 #
 CONFIG_BINFMT_ELF=y
-# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
+CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
+CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
+CONFIG_BINFMT_SCRIPT=y
 CONFIG_HAVE_AOUT=y
-# CONFIG_BINFMT_AOUT is not set
-# CONFIG_BINFMT_MISC is not set
+CONFIG_BINFMT_MISC=y
+CONFIG_COREDUMP=y
 CONFIG_HAVE_ATOMIC_IOMAP=y
 CONFIG_HAVE_TEXT_POKE_SMP=y
 CONFIG_NET=y
@@ -603,10 +709,13 @@ CONFIG_NET=y
 # Networking options
 #
 CONFIG_PACKET=y
+CONFIG_PACKET_DIAG=y
 CONFIG_UNIX=y
+CONFIG_UNIX_DIAG=m
 CONFIG_XFRM=y
-CONFIG_XFRM_USER=m
-# CONFIG_XFRM_SUB_POLICY is not set
+CONFIG_XFRM_ALGO=y
+CONFIG_XFRM_USER=y
+CONFIG_XFRM_SUB_POLICY=y
 CONFIG_XFRM_MIGRATE=y
 CONFIG_XFRM_STATISTICS=y
 CONFIG_XFRM_IPCOMP=m
@@ -615,7 +724,7 @@ CONFIG_NET_KEY_MIGRATE=y
 CONFIG_INET=y
 CONFIG_IP_MULTICAST=y
 CONFIG_IP_ADVANCED_ROUTER=y
-# CONFIG_IP_FIB_TRIE_STATS is not set
+CONFIG_IP_FIB_TRIE_STATS=y
 CONFIG_IP_MULTIPLE_TABLES=y
 CONFIG_IP_ROUTE_MULTIPATH=y
 CONFIG_IP_ROUTE_VERBOSE=y
@@ -623,28 +732,31 @@ CONFIG_IP_ROUTE_CLASSID=y
 # CONFIG_IP_PNP is not set
 CONFIG_NET_IPIP=m
 CONFIG_NET_IPGRE_DEMUX=m
+CONFIG_NET_IP_TUNNEL=m
 CONFIG_NET_IPGRE=m
 CONFIG_NET_IPGRE_BROADCAST=y
 CONFIG_IP_MROUTE=y
-# CONFIG_IP_MROUTE_MULTIPLE_TABLES is not set
+CONFIG_IP_MROUTE_MULTIPLE_TABLES=y
 CONFIG_IP_PIMSM_V1=y
 CONFIG_IP_PIMSM_V2=y
-CONFIG_ARPD=y
+# CONFIG_ARPD is not set
 CONFIG_SYN_COOKIES=y
+CONFIG_NET_IPVTI=m
 CONFIG_INET_AH=m
 CONFIG_INET_ESP=m
 CONFIG_INET_IPCOMP=m
 CONFIG_INET_XFRM_TUNNEL=m
 CONFIG_INET_TUNNEL=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=y
-CONFIG_INET_XFRM_MODE_TUNNEL=y
-CONFIG_INET_XFRM_MODE_BEET=y
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
 CONFIG_INET_LRO=y
 CONFIG_INET_DIAG=m
 CONFIG_INET_TCP_DIAG=m
+CONFIG_INET_UDP_DIAG=m
 CONFIG_TCP_CONG_ADVANCED=y
 CONFIG_TCP_CONG_BIC=m
-CONFIG_TCP_CONG_CUBIC=m
+CONFIG_TCP_CONG_CUBIC=y
 CONFIG_TCP_CONG_WESTWOOD=m
 CONFIG_TCP_CONG_HTCP=m
 CONFIG_TCP_CONG_HSTCP=m
@@ -655,13 +767,15 @@ CONFIG_TCP_CONG_LP=m
 CONFIG_TCP_CONG_VENO=m
 CONFIG_TCP_CONG_YEAH=m
 CONFIG_TCP_CONG_ILLINOIS=m
-CONFIG_DEFAULT_RENO=y
-CONFIG_DEFAULT_TCP_CONG="reno"
-# CONFIG_TCP_MD5SIG is not set
+CONFIG_DEFAULT_CUBIC=y
+# CONFIG_DEFAULT_RENO is not set
+CONFIG_DEFAULT_TCP_CONG="cubic"
+CONFIG_TCP_MD5SIG=y
 CONFIG_IPV6=y
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+CONFIG_IPV6_PRIVACY=y
+CONFIG_IPV6_ROUTER_PREF=y
+CONFIG_IPV6_ROUTE_INFO=y
+CONFIG_IPV6_OPTIMISTIC_DAD=y
 CONFIG_INET6_AH=m
 CONFIG_INET6_ESP=m
 CONFIG_INET6_IPCOMP=m
@@ -673,14 +787,18 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m
 CONFIG_INET6_XFRM_MODE_BEET=m
 CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
 CONFIG_IPV6_SIT=m
-# CONFIG_IPV6_SIT_6RD is not set
+CONFIG_IPV6_SIT_6RD=y
 CONFIG_IPV6_NDISC_NODETYPE=y
 CONFIG_IPV6_TUNNEL=m
+CONFIG_IPV6_GRE=m
 CONFIG_IPV6_MULTIPLE_TABLES=y
-# CONFIG_IPV6_SUBTREES is not set
-# CONFIG_IPV6_MROUTE is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETWORK_PHY_TIMESTAMPING=y
+CONFIG_IPV6_SUBTREES=y
+CONFIG_IPV6_MROUTE=y
+CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
+CONFIG_IPV6_PIMSM_V2=y
+# CONFIG_NETLABEL is not set
+CONFIG_NETWORK_SECMARK=y
+# CONFIG_NETWORK_PHY_TIMESTAMPING is not set
 CONFIG_NETFILTER=y
 # CONFIG_NETFILTER_DEBUG is not set
 CONFIG_NETFILTER_ADVANCED=y
@@ -690,13 +808,18 @@ CONFIG_BRIDGE_NETFILTER=y
 # Core Netfilter Configuration
 #
 CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_ACCT=m
 CONFIG_NETFILTER_NETLINK_QUEUE=m
 CONFIG_NETFILTER_NETLINK_LOG=m
-CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CONNTRACK=y
 CONFIG_NF_CONNTRACK_MARK=y
-# CONFIG_NF_CONNTRACK_ZONES is not set
+CONFIG_NF_CONNTRACK_SECMARK=y
+CONFIG_NF_CONNTRACK_ZONES=y
+CONFIG_NF_CONNTRACK_PROCFS=y
 CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CONNTRACK_TIMEOUT=y
 CONFIG_NF_CONNTRACK_TIMESTAMP=y
+CONFIG_NF_CONNTRACK_LABELS=y
 CONFIG_NF_CT_PROTO_DCCP=m
 CONFIG_NF_CT_PROTO_GRE=m
 CONFIG_NF_CT_PROTO_SCTP=m
@@ -713,14 +836,28 @@ CONFIG_NF_CONNTRACK_SANE=m
 CONFIG_NF_CONNTRACK_SIP=m
 CONFIG_NF_CONNTRACK_TFTP=m
 CONFIG_NF_CT_NETLINK=m
+CONFIG_NF_CT_NETLINK_TIMEOUT=m
+CONFIG_NF_CT_NETLINK_HELPER=m
+CONFIG_NETFILTER_NETLINK_QUEUE_CT=y
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_NF_NAT_PROTO_DCCP=m
+CONFIG_NF_NAT_PROTO_UDPLITE=m
+CONFIG_NF_NAT_PROTO_SCTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_NF_NAT_TFTP=m
 CONFIG_NETFILTER_TPROXY=m
-CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XTABLES=y
 
 #
 # Xtables combined modules
 #
 CONFIG_NETFILTER_XT_MARK=m
 CONFIG_NETFILTER_XT_CONNMARK=m
+CONFIG_NETFILTER_XT_SET=m
 
 #
 # Xtables targets
@@ -729,20 +866,26 @@ CONFIG_NETFILTER_XT_TARGET_AUDIT=m
 CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
 CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
 CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m
 CONFIG_NETFILTER_XT_TARGET_CT=m
 CONFIG_NETFILTER_XT_TARGET_DSCP=m
 CONFIG_NETFILTER_XT_TARGET_HL=m
+CONFIG_NETFILTER_XT_TARGET_HMARK=m
 CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m
 CONFIG_NETFILTER_XT_TARGET_LED=m
+CONFIG_NETFILTER_XT_TARGET_LOG=m
 CONFIG_NETFILTER_XT_TARGET_IMQ=m
 CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NETMAP=m
 CONFIG_NETFILTER_XT_TARGET_NFLOG=m
 CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
 CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
 CONFIG_NETFILTER_XT_TARGET_RATEEST=m
+CONFIG_NETFILTER_XT_TARGET_REDIRECT=m
 CONFIG_NETFILTER_XT_TARGET_TEE=m
 CONFIG_NETFILTER_XT_TARGET_TPROXY=m
 CONFIG_NETFILTER_XT_TARGET_TRACE=m
+CONFIG_NETFILTER_XT_TARGET_SECMARK=m
 CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
 CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
 
@@ -750,9 +893,11 @@ CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
 # Xtables matches
 #
 CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
+CONFIG_NETFILTER_XT_MATCH_BPF=m
 CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
 CONFIG_NETFILTER_XT_MATCH_COMMENT=m
 CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m
 CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
 CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
 CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
@@ -760,17 +905,19 @@ CONFIG_NETFILTER_XT_MATCH_CPU=m
 CONFIG_NETFILTER_XT_MATCH_DCCP=m
 CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m
 CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ECN=m
 CONFIG_NETFILTER_XT_MATCH_ESP=m
 CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
 CONFIG_NETFILTER_XT_MATCH_HELPER=m
 CONFIG_NETFILTER_XT_MATCH_HL=m
 CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
-CONFIG_NETFILTER_XT_MATCH_IPVS=m
+# CONFIG_NETFILTER_XT_MATCH_IPVS is not set
 CONFIG_NETFILTER_XT_MATCH_LENGTH=m
 CONFIG_NETFILTER_XT_MATCH_LIMIT=m
 CONFIG_NETFILTER_XT_MATCH_MAC=m
 CONFIG_NETFILTER_XT_MATCH_MARK=m
 CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_NFACCT=m
 CONFIG_NETFILTER_XT_MATCH_OSF=m
 CONFIG_NETFILTER_XT_MATCH_OWNER=m
 CONFIG_NETFILTER_XT_MATCH_POLICY=m
@@ -790,7 +937,19 @@ CONFIG_NETFILTER_XT_MATCH_STRING=m
 CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
 CONFIG_NETFILTER_XT_MATCH_TIME=m
 CONFIG_NETFILTER_XT_MATCH_U32=m
-# CONFIG_IP_SET is not set
+CONFIG_IP_SET=m
+CONFIG_IP_SET_MAX=256
+CONFIG_IP_SET_BITMAP_IP=m
+CONFIG_IP_SET_BITMAP_IPMAC=m
+CONFIG_IP_SET_BITMAP_PORT=m
+CONFIG_IP_SET_HASH_IP=m
+CONFIG_IP_SET_HASH_IPPORT=m
+CONFIG_IP_SET_HASH_IPPORTIP=m
+CONFIG_IP_SET_HASH_IPPORTNET=m
+CONFIG_IP_SET_HASH_NET=m
+CONFIG_IP_SET_HASH_NETPORT=m
+CONFIG_IP_SET_HASH_NETIFACE=m
+CONFIG_IP_SET_LIST_SET=m
 CONFIG_IP_VS=m
 CONFIG_IP_VS_IPV6=y
 # CONFIG_IP_VS_DEBUG is not set
@@ -820,6 +979,11 @@ CONFIG_IP_VS_SH=m
 CONFIG_IP_VS_SED=m
 CONFIG_IP_VS_NQ=m
 
+#
+# IPVS SH scheduler
+#
+CONFIG_IP_VS_SH_TAB_BITS=8
+
 #
 # IPVS application helper
 #
@@ -830,40 +994,31 @@ CONFIG_IP_VS_PE_SIP=m
 #
 # IP: Netfilter Configuration
 #
-CONFIG_NF_DEFRAG_IPV4=m
-CONFIG_NF_CONNTRACK_IPV4=m
-CONFIG_NF_CONNTRACK_PROC_COMPAT=y
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
+CONFIG_NF_DEFRAG_IPV4=y
+CONFIG_NF_CONNTRACK_IPV4=y
+# CONFIG_NF_CONNTRACK_PROC_COMPAT is not set
+CONFIG_IP_NF_IPTABLES=y
 CONFIG_IP_NF_MATCH_AH=m
 CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_RPFILTER=m
 CONFIG_IP_NF_MATCH_TTL=m
 CONFIG_IP_NF_FILTER=m
 CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_NF_NAT=m
-CONFIG_NF_NAT_NEEDED=y
+# CONFIG_IP_NF_TARGET_ULOG is not set
+CONFIG_NF_NAT_IPV4=m
 CONFIG_IP_NF_TARGET_MASQUERADE=m
 CONFIG_IP_NF_TARGET_NETMAP=m
 CONFIG_IP_NF_TARGET_REDIRECT=m
 CONFIG_NF_NAT_SNMP_BASIC=m
-CONFIG_NF_NAT_PROTO_DCCP=m
 CONFIG_NF_NAT_PROTO_GRE=m
-CONFIG_NF_NAT_PROTO_UDPLITE=m
-CONFIG_NF_NAT_PROTO_SCTP=m
-CONFIG_NF_NAT_FTP=m
-CONFIG_NF_NAT_IRC=m
-CONFIG_NF_NAT_TFTP=m
-CONFIG_NF_NAT_AMANDA=m
 CONFIG_NF_NAT_PPTP=m
 CONFIG_NF_NAT_H323=m
-CONFIG_NF_NAT_SIP=m
 CONFIG_IP_NF_MANGLE=m
 CONFIG_IP_NF_TARGET_CLUSTERIP=m
 CONFIG_IP_NF_TARGET_ECN=m
 CONFIG_IP_NF_TARGET_TTL=m
 CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_SECURITY=m
 CONFIG_IP_NF_ARPTABLES=m
 CONFIG_IP_NF_ARPFILTER=m
 CONFIG_IP_NF_ARP_MANGLE=m
@@ -872,10 +1027,9 @@ CONFIG_IP_NF_MATCH_IPP2P=m
 #
 # IPv6: Netfilter Configuration
 #
-CONFIG_NF_DEFRAG_IPV6=m
-CONFIG_NF_CONNTRACK_IPV6=m
-CONFIG_IP6_NF_QUEUE=m
-CONFIG_IP6_NF_IPTABLES=m
+CONFIG_NF_DEFRAG_IPV6=y
+CONFIG_NF_CONNTRACK_IPV6=y
+CONFIG_IP6_NF_IPTABLES=y
 CONFIG_IP6_NF_MATCH_AH=m
 CONFIG_IP6_NF_MATCH_EUI64=m
 CONFIG_IP6_NF_MATCH_FRAG=m
@@ -883,13 +1037,17 @@ CONFIG_IP6_NF_MATCH_OPTS=m
 CONFIG_IP6_NF_MATCH_HL=m
 CONFIG_IP6_NF_MATCH_IPV6HEADER=m
 CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_RPFILTER=m
 CONFIG_IP6_NF_MATCH_RT=m
 CONFIG_IP6_NF_TARGET_HL=m
-CONFIG_IP6_NF_TARGET_LOG=m
 CONFIG_IP6_NF_FILTER=m
 CONFIG_IP6_NF_TARGET_REJECT=m
 CONFIG_IP6_NF_MANGLE=m
 CONFIG_IP6_NF_RAW=m
+CONFIG_IP6_NF_SECURITY=m
+CONFIG_NF_NAT_IPV6=m
+CONFIG_IP6_NF_TARGET_MASQUERADE=m
+CONFIG_IP6_NF_TARGET_NPT=m
 CONFIG_BRIDGE_NF_EBTABLES=m
 CONFIG_BRIDGE_EBT_BROUTE=m
 CONFIG_BRIDGE_EBT_T_FILTER=m
@@ -910,49 +1068,52 @@ CONFIG_BRIDGE_EBT_MARK_T=m
 CONFIG_BRIDGE_EBT_REDIRECT=m
 CONFIG_BRIDGE_EBT_SNAT=m
 CONFIG_BRIDGE_EBT_LOG=m
-CONFIG_BRIDGE_EBT_ULOG=m
+# CONFIG_BRIDGE_EBT_ULOG is not set
 CONFIG_BRIDGE_EBT_NFLOG=m
 # CONFIG_IP_DCCP is not set
-# CONFIG_IP_SCTP is not set
+CONFIG_IP_SCTP=m
+# CONFIG_SCTP_DBG_MSG is not set
+# CONFIG_SCTP_DBG_OBJCNT is not set
+# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5 is not set
+CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1=y
+# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set
+CONFIG_SCTP_COOKIE_HMAC_MD5=y
+CONFIG_SCTP_COOKIE_HMAC_SHA1=y
 # CONFIG_RDS is not set
 # CONFIG_TIPC is not set
 CONFIG_ATM=m
 CONFIG_ATM_CLIP=m
-CONFIG_ATM_CLIP_NO_ICMP=y
+# CONFIG_ATM_CLIP_NO_ICMP is not set
 # CONFIG_ATM_LANE is not set
 CONFIG_ATM_BR2684=m
 # CONFIG_ATM_BR2684_IPFILTER is not set
 CONFIG_L2TP=m
+# CONFIG_L2TP_DEBUGFS is not set
 CONFIG_L2TP_V3=y
 CONFIG_L2TP_IP=m
 CONFIG_L2TP_ETH=m
-CONFIG_STP=m
-CONFIG_GARP=m
-CONFIG_BRIDGE=m
+CONFIG_STP=y
+CONFIG_GARP=y
+CONFIG_BRIDGE=y
 CONFIG_BRIDGE_IGMP_SNOOPING=y
+CONFIG_BRIDGE_VLAN_FILTERING=y
+CONFIG_HAVE_NET_DSA=y
 CONFIG_NET_DSA=y
 CONFIG_NET_DSA_TAG_DSA=y
 CONFIG_NET_DSA_TAG_EDSA=y
 CONFIG_NET_DSA_TAG_TRAILER=y
-CONFIG_NET_DSA_MV88E6XXX=y
-CONFIG_NET_DSA_MV88E6060=y
-CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y
-CONFIG_NET_DSA_MV88E6131=y
-CONFIG_NET_DSA_MV88E6123_61_65=y
 CONFIG_VLAN_8021Q=m
 CONFIG_VLAN_8021Q_GVRP=y
+# CONFIG_VLAN_8021Q_MVRP is not set
 # CONFIG_DECNET is not set
-CONFIG_LLC=m
+CONFIG_LLC=y
 # CONFIG_LLC2 is not set
 # CONFIG_IPX is not set
 # CONFIG_ATALK is not set
 # CONFIG_X25 is not set
 # CONFIG_LAPB is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
 # CONFIG_PHONET is not set
-CONFIG_IEEE802154=m
-CONFIG_IEEE802154_6LOWPAN=m
+# CONFIG_IEEE802154 is not set
 CONFIG_NET_SCHED=y
 
 #
@@ -976,7 +1137,10 @@ CONFIG_NET_SCH_DRR=m
 CONFIG_NET_SCH_MQPRIO=m
 CONFIG_NET_SCH_CHOKE=m
 CONFIG_NET_SCH_QFQ=m
+CONFIG_NET_SCH_CODEL=m
+CONFIG_NET_SCH_FQ_CODEL=m
 CONFIG_NET_SCH_INGRESS=m
+CONFIG_NET_SCH_PLUG=m
 
 #
 # Classification
@@ -992,6 +1156,7 @@ CONFIG_CLS_U32_MARK=y
 CONFIG_NET_CLS_RSVP=m
 CONFIG_NET_CLS_RSVP6=m
 CONFIG_NET_CLS_FLOW=m
+CONFIG_NET_CLS_CGROUP=m
 CONFIG_NET_EMATCH=y
 CONFIG_NET_EMATCH_STACK=32
 CONFIG_NET_EMATCH_CMP=m
@@ -999,6 +1164,7 @@ CONFIG_NET_EMATCH_NBYTE=m
 CONFIG_NET_EMATCH_U32=m
 CONFIG_NET_EMATCH_META=m
 CONFIG_NET_EMATCH_TEXT=m
+CONFIG_NET_EMATCH_IPSET=m
 CONFIG_NET_CLS_ACT=y
 CONFIG_NET_ACT_POLICE=m
 CONFIG_NET_ACT_GACT=m
@@ -1015,67 +1181,30 @@ CONFIG_NET_SCH_FIFO=y
 # CONFIG_DCB is not set
 CONFIG_DNS_RESOLVER=y
 CONFIG_BATMAN_ADV=m
+CONFIG_BATMAN_ADV_BLA=y
+CONFIG_BATMAN_ADV_DAT=y
+CONFIG_BATMAN_ADV_NC=y
 # CONFIG_BATMAN_ADV_DEBUG is not set
+CONFIG_OPENVSWITCH=m
+CONFIG_VSOCKETS=m
+CONFIG_VMWARE_VMCI_VSOCKETS=m
+CONFIG_NETLINK_MMAP=y
+CONFIG_NETLINK_DIAG=m
 CONFIG_RPS=y
 CONFIG_RFS_ACCEL=y
 CONFIG_XPS=y
+CONFIG_NETPRIO_CGROUP=m
+CONFIG_BQL=y
 
 #
 # Network testing
 #
 # CONFIG_NET_PKTGEN is not set
+# CONFIG_NET_DROP_MONITOR is not set
 # CONFIG_HAMRADIO is not set
 # CONFIG_CAN is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-CONFIG_IRTTY_SIR=m
-
-#
-# Dongle support
-#
-# CONFIG_DONGLE is not set
-CONFIG_KINGSUN_DONGLE=m
-CONFIG_KSDAZZLE_DONGLE=m
-CONFIG_KS959_DONGLE=m
-
-#
-# FIR device drivers
-#
-CONFIG_USB_IRDA=m
-CONFIG_SIGMATEL_FIR=m
-CONFIG_NSC_FIR=m
-CONFIG_WINBOND_FIR=m
-CONFIG_TOSHIBA_FIR=m
-CONFIG_SMC_IRCC_FIR=m
-CONFIG_ALI_FIR=m
-CONFIG_VLSI_FIR=m
-CONFIG_VIA_FIR=m
-CONFIG_MCS_FIR=m
+# CONFIG_IRDA is not set
 CONFIG_BT=m
-CONFIG_BT_L2CAP=y
-CONFIG_BT_SCO=y
 CONFIG_BT_RFCOMM=m
 CONFIG_BT_RFCOMM_TTY=y
 CONFIG_BT_BNEP=m
@@ -1094,11 +1223,12 @@ CONFIG_BT_HCIUART_H4=y
 CONFIG_BT_HCIUART_BCSP=y
 CONFIG_BT_HCIUART_ATH3K=y
 CONFIG_BT_HCIUART_LL=y
+CONFIG_BT_HCIUART_3WIRE=y
 CONFIG_BT_HCIBCM203X=m
 CONFIG_BT_HCIBPA10X=m
 CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
+# CONFIG_BT_HCIDTL1 is not set
+# CONFIG_BT_HCIBT3C is not set
 CONFIG_BT_HCIBLUECARD=m
 CONFIG_BT_HCIBTUART=m
 CONFIG_BT_HCIVHCI=m
@@ -1106,9 +1236,7 @@ CONFIG_BT_MRVL=m
 CONFIG_BT_MRVL_SDIO=m
 CONFIG_BT_ATH3K=m
 CONFIG_BT_WILINK=m
-CONFIG_AF_RXRPC=m
-# CONFIG_AF_RXRPC_DEBUG is not set
-CONFIG_RXKAD=m
+# CONFIG_AF_RXRPC is not set
 CONFIG_FIB_RULES=y
 CONFIG_WIRELESS=y
 CONFIG_WIRELESS_EXT=y
@@ -1120,10 +1248,11 @@ CONFIG_CFG80211=m
 # CONFIG_NL80211_TESTMODE is not set
 # CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
 # CONFIG_CFG80211_REG_DEBUG is not set
-# CONFIG_CFG80211_DEFAULT_PS is not set
+# CONFIG_CFG80211_CERTIFICATION_ONUS is not set
+CONFIG_CFG80211_DEFAULT_PS=y
+# CONFIG_CFG80211_DEBUGFS is not set
 # CONFIG_CFG80211_INTERNAL_REGDB is not set
 CONFIG_CFG80211_WEXT=y
-CONFIG_WIRELESS_EXT_SYSFS=y
 CONFIG_LIB80211=m
 CONFIG_LIB80211_CRYPT_WEP=m
 CONFIG_LIB80211_CRYPT_CCMP=m
@@ -1131,23 +1260,24 @@ CONFIG_LIB80211_CRYPT_TKIP=m
 # CONFIG_LIB80211_DEBUG is not set
 CONFIG_MAC80211=m
 CONFIG_MAC80211_HAS_RC=y
+# CONFIG_MAC80211_RC_PID is not set
 CONFIG_MAC80211_RC_MINSTREL=y
 CONFIG_MAC80211_RC_MINSTREL_HT=y
 CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
 CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
 CONFIG_MAC80211_MESH=y
 CONFIG_MAC80211_LEDS=y
+# CONFIG_MAC80211_DEBUGFS is not set
+# CONFIG_MAC80211_MESSAGE_TRACING is not set
 # CONFIG_MAC80211_DEBUG_MENU is not set
 # CONFIG_WIMAX is not set
 CONFIG_RFKILL=m
 CONFIG_RFKILL_LEDS=y
 CONFIG_RFKILL_INPUT=y
-CONFIG_RFKILL_REGULATOR=m
+CONFIG_RFKILL_GPIO=m
 # CONFIG_NET_9P is not set
 # CONFIG_CAIF is not set
-CONFIG_CEPH_LIB=m
-# CONFIG_CEPH_LIB_PRETTYDEBUG is not set
-# CONFIG_CEPH_LIB_USE_DNS_RESOLVER is not set
+# CONFIG_CEPH_LIB is not set
 # CONFIG_NFC is not set
 
 #
@@ -1157,100 +1287,31 @@ CONFIG_CEPH_LIB=m
 #
 # Generic Driver Options
 #
-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
-# CONFIG_DEVTMPFS is not set
-# CONFIG_STANDALONE is not set
-# CONFIG_PREVENT_FIRMWARE_BUILD is not set
+CONFIG_UEVENT_HELPER_PATH=""
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
 CONFIG_FW_LOADER=y
 # CONFIG_FIRMWARE_IN_KERNEL is not set
 CONFIG_EXTRA_FIRMWARE=""
+CONFIG_FW_LOADER_USER_HELPER=y
 # CONFIG_DEBUG_DRIVER is not set
 # CONFIG_DEBUG_DEVRES is not set
 # CONFIG_SYS_HYPERVISOR is not set
+# CONFIG_GENERIC_CPU_DEVICES is not set
 CONFIG_REGMAP=y
 CONFIG_REGMAP_I2C=m
-CONFIG_CONNECTOR=m
-CONFIG_MTD=m
-CONFIG_MTD_TESTS=m
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_AR7_PARTS=m
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=m
-CONFIG_MTD_BLKDEVS=m
-CONFIG_MTD_BLOCK=m
-# CONFIG_MTD_BLOCK_RO is not set
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-# CONFIG_SSFDC is not set
-CONFIG_SM_FTL=m
-# CONFIG_MTD_OOPS is not set
-# CONFIG_MTD_SWAP is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-CONFIG_MTD_PHYSMAP=m
-# CONFIG_MTD_PHYSMAP_COMPAT is not set
-# CONFIG_MTD_TS5500 is not set
-# CONFIG_MTD_INTEL_VR_NOR is not set
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-# CONFIG_MTD_DOCG3 is not set
-CONFIG_MTD_NAND_ECC=m
-# CONFIG_MTD_NAND_ECC_SMC is not set
-# CONFIG_MTD_NAND is not set
-# CONFIG_MTD_ONENAND is not set
-
-#
-# LPDDR flash memory drivers
-#
-CONFIG_MTD_LPDDR=m
-CONFIG_MTD_QINFO_PROBE=m
-CONFIG_MTD_UBI=m
-CONFIG_MTD_UBI_WL_THRESHOLD=4096
-CONFIG_MTD_UBI_BEB_RESERVE=1
-# CONFIG_MTD_UBI_GLUEBI is not set
-# CONFIG_MTD_UBI_DEBUG is not set
+CONFIG_REGMAP_IRQ=y
+CONFIG_DMA_SHARED_BUFFER=y
+# CONFIG_CMA is not set
+
+#
+# Bus devices
+#
+CONFIG_CONNECTOR=y
+CONFIG_PROC_EVENTS=y
+# CONFIG_MTD is not set
 CONFIG_PARPORT=m
 CONFIG_PARPORT_PC=m
 CONFIG_PARPORT_SERIAL=m
@@ -1269,65 +1330,73 @@ CONFIG_PNP=y
 #
 CONFIG_ISAPNP=y
 CONFIG_PNPBIOS=y
-CONFIG_PNPBIOS_PROC_FS=y
+# CONFIG_PNPBIOS_PROC_FS is not set
 CONFIG_PNPACPI=y
 CONFIG_BLK_DEV=y
 CONFIG_BLK_DEV_FD=m
-# CONFIG_BLK_DEV_XD is not set
 # CONFIG_PARIDE is not set
+CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m
 CONFIG_BLK_CPQ_DA=m
 CONFIG_BLK_CPQ_CISS_DA=m
 # CONFIG_CISS_SCSI_TAPE is not set
 CONFIG_BLK_DEV_DAC960=m
-# CONFIG_BLK_DEV_UMEM is not set
+CONFIG_BLK_DEV_UMEM=m
 # CONFIG_BLK_DEV_COW_COMMON is not set
 CONFIG_BLK_DEV_LOOP=y
 CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
 CONFIG_BLK_DEV_CRYPTOLOOP=m
 # CONFIG_BLK_DEV_DRBD is not set
-CONFIG_BLK_DEV_NBD=m
-CONFIG_BLK_DEV_OSD=m
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_NVME=m
+# CONFIG_BLK_DEV_OSD is not set
 CONFIG_BLK_DEV_SX8=m
-# CONFIG_BLK_DEV_UB is not set
 CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=8
+CONFIG_BLK_DEV_RAM_COUNT=16
 CONFIG_BLK_DEV_RAM_SIZE=16384
 # CONFIG_BLK_DEV_XIP is not set
 # CONFIG_CDROM_PKTCDVD is not set
-CONFIG_ATA_OVER_ETH=m
+# CONFIG_ATA_OVER_ETH is not set
 CONFIG_VIRTIO_BLK=m
 # CONFIG_BLK_DEV_HD is not set
-CONFIG_BLK_DEV_RBD=m
+# CONFIG_BLK_DEV_RBD is not set
+CONFIG_BLK_DEV_RSXX=m
+
+#
+# Misc devices
+#
 CONFIG_SENSORS_LIS3LV02D=m
-CONFIG_MISC_DEVICES=y
 # CONFIG_AD525X_DPOT is not set
-# CONFIG_IBM_ASM is not set
+# CONFIG_ATMEL_PWM is not set
+CONFIG_DUMMY_IRQ=m
+CONFIG_IBM_ASM=m
 # CONFIG_PHANTOM is not set
 # CONFIG_INTEL_MID_PTI is not set
 # CONFIG_SGI_IOC4 is not set
 CONFIG_TIFM_CORE=m
 CONFIG_TIFM_7XX1=m
 CONFIG_ICS932S401=m
+# CONFIG_ATMEL_SSC is not set
 CONFIG_ENCLOSURE_SERVICES=m
 CONFIG_CS5535_MFGPT=m
 CONFIG_CS5535_MFGPT_DEFAULT_IRQ=7
 CONFIG_CS5535_CLOCK_EVENT_SRC=m
 CONFIG_HP_ILO=m
-CONFIG_APDS9802ALS=m
-CONFIG_ISL29003=m
-CONFIG_ISL29020=m
-CONFIG_SENSORS_TSL2550=m
-CONFIG_SENSORS_BH1780=m
-CONFIG_SENSORS_BH1770=m
-CONFIG_SENSORS_APDS990X=m
-CONFIG_HMC6352=m
+# CONFIG_APDS9802ALS is not set
+# CONFIG_ISL29003 is not set
+# CONFIG_ISL29020 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_SENSORS_BH1780 is not set
+# CONFIG_SENSORS_BH1770 is not set
+# CONFIG_SENSORS_APDS990X is not set
+# CONFIG_HMC6352 is not set
 CONFIG_DS1682=m
 CONFIG_VMWARE_BALLOON=m
-CONFIG_BMP085=m
+CONFIG_BMP085=y
+CONFIG_BMP085_I2C=m
 CONFIG_PCH_PHUB=m
 CONFIG_USB_SWITCH_FSA9480=m
-CONFIG_C2PORT=m
-CONFIG_C2PORT_DURAMAR_2150=m
+# CONFIG_SRAM is not set
+# CONFIG_C2PORT is not set
 
 #
 # EEPROM support
@@ -1339,62 +1408,63 @@ CONFIG_EEPROM_93CX6=m
 CONFIG_CB710_CORE=m
 # CONFIG_CB710_DEBUG is not set
 CONFIG_CB710_DEBUG_ASSUMPTIONS=y
-CONFIG_IWMC3200TOP=m
-# CONFIG_IWMC3200TOP_DEBUG is not set
-# CONFIG_IWMC3200TOP_DEBUGFS is not set
 
 #
 # Texas Instruments shared transport line discipline
 #
 CONFIG_TI_ST=m
-CONFIG_SENSORS_LIS3_I2C=m
+# CONFIG_SENSORS_LIS3_I2C is not set
 
 #
 # Altera FPGA firmware download module
 #
-# CONFIG_ALTERA_STAPL is not set
+CONFIG_ALTERA_STAPL=m
+CONFIG_INTEL_MEI=m
+CONFIG_INTEL_MEI_ME=m
+CONFIG_VMWARE_VMCI=m
 CONFIG_HAVE_IDE=y
 # CONFIG_IDE is not set
 
 #
 # SCSI device support
 #
-CONFIG_SCSI_MOD=m
+CONFIG_SCSI_MOD=y
 CONFIG_RAID_ATTRS=m
-CONFIG_SCSI=m
+CONFIG_SCSI=y
 CONFIG_SCSI_DMA=y
-# CONFIG_SCSI_TGT is not set
+CONFIG_SCSI_TGT=m
 CONFIG_SCSI_NETLINK=y
 CONFIG_SCSI_PROC_FS=y
 
 #
 # SCSI support type (disk, tape, CD-ROM)
 #
-CONFIG_BLK_DEV_SD=m
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-CONFIG_BLK_DEV_SR=m
+CONFIG_BLK_DEV_SD=y
+CONFIG_CHR_DEV_ST=m
+CONFIG_CHR_DEV_OSST=m
+CONFIG_BLK_DEV_SR=y
 CONFIG_BLK_DEV_SR_VENDOR=y
-CONFIG_CHR_DEV_SG=m
+CONFIG_CHR_DEV_SG=y
 CONFIG_CHR_DEV_SCH=m
 CONFIG_SCSI_ENCLOSURE=m
 CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-CONFIG_SCSI_WAIT_SCAN=m
+CONFIG_SCSI_CONSTANTS=y
+CONFIG_SCSI_LOGGING=y
+CONFIG_SCSI_SCAN_ASYNC=y
 
 #
 # SCSI Transports
 #
 CONFIG_SCSI_SPI_ATTRS=m
 CONFIG_SCSI_FC_ATTRS=m
+CONFIG_SCSI_FC_TGT_ATTRS=y
 CONFIG_SCSI_ISCSI_ATTRS=m
 CONFIG_SCSI_SAS_ATTRS=m
 CONFIG_SCSI_SAS_LIBSAS=m
 CONFIG_SCSI_SAS_ATA=y
 CONFIG_SCSI_SAS_HOST_SMP=y
 CONFIG_SCSI_SRP_ATTRS=m
+CONFIG_SCSI_SRP_TGT_ATTRS=y
 CONFIG_SCSI_LOWLEVEL=y
 CONFIG_ISCSI_TCP=m
 CONFIG_ISCSI_BOOT_SYSFS=m
@@ -1414,25 +1484,23 @@ CONFIG_SCSI_AHA1542=m
 CONFIG_SCSI_AHA1740=m
 CONFIG_SCSI_AACRAID=m
 CONFIG_SCSI_AIC7XXX=m
-CONFIG_AIC7XXX_CMDS_PER_DEVICE=253
-CONFIG_AIC7XXX_RESET_DELAY_MS=15000
-# CONFIG_AIC7XXX_BUILD_FIRMWARE is not set
-# CONFIG_AIC7XXX_DEBUG_ENABLE is not set
+CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
+CONFIG_AIC7XXX_RESET_DELAY_MS=5000
+CONFIG_AIC7XXX_DEBUG_ENABLE=y
 CONFIG_AIC7XXX_DEBUG_MASK=0
-# CONFIG_AIC7XXX_REG_PRETTY_PRINT is not set
+CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
 # CONFIG_SCSI_AIC7XXX_OLD is not set
 CONFIG_SCSI_AIC79XX=m
 CONFIG_AIC79XX_CMDS_PER_DEVICE=32
-CONFIG_AIC79XX_RESET_DELAY_MS=15000
-# CONFIG_AIC79XX_BUILD_FIRMWARE is not set
+CONFIG_AIC79XX_RESET_DELAY_MS=4000
 # CONFIG_AIC79XX_DEBUG_ENABLE is not set
 CONFIG_AIC79XX_DEBUG_MASK=0
 # CONFIG_AIC79XX_REG_PRETTY_PRINT is not set
 CONFIG_SCSI_AIC94XX=m
 # CONFIG_AIC94XX_DEBUG is not set
 CONFIG_SCSI_MVSAS=m
-CONFIG_SCSI_MVSAS_DEBUG=y
-# CONFIG_SCSI_MVSAS_TASKLET is not set
+# CONFIG_SCSI_MVSAS_DEBUG is not set
+CONFIG_SCSI_MVSAS_TASKLET=y
 CONFIG_SCSI_MVUMI=m
 CONFIG_SCSI_DPT_I2O=m
 CONFIG_SCSI_ADVANSYS=m
@@ -1446,9 +1514,15 @@ CONFIG_MEGARAID_SAS=m
 CONFIG_SCSI_MPT2SAS=m
 CONFIG_SCSI_MPT2SAS_MAX_SGE=128
 # CONFIG_SCSI_MPT2SAS_LOGGING is not set
+CONFIG_SCSI_MPT3SAS=m
+CONFIG_SCSI_MPT3SAS_MAX_SGE=128
+# CONFIG_SCSI_MPT3SAS_LOGGING is not set
+CONFIG_SCSI_UFSHCD=m
+CONFIG_SCSI_UFSHCD_PCI=m
+CONFIG_SCSI_UFSHCD_PLATFORM=m
 CONFIG_SCSI_HPTIOP=m
 CONFIG_SCSI_BUSLOGIC=m
-CONFIG_SCSI_FLASHPOINT=y
+# CONFIG_SCSI_FLASHPOINT is not set
 CONFIG_VMWARE_PVSCSI=m
 CONFIG_LIBFC=m
 CONFIG_LIBFCOE=m
@@ -1458,18 +1532,14 @@ CONFIG_SCSI_DMX3191D=m
 CONFIG_SCSI_DTC3280=m
 CONFIG_SCSI_EATA=m
 CONFIG_SCSI_EATA_TAGGED_QUEUE=y
-CONFIG_SCSI_EATA_LINKED_COMMANDS=y
+# CONFIG_SCSI_EATA_LINKED_COMMANDS is not set
 CONFIG_SCSI_EATA_MAX_TAGS=16
 CONFIG_SCSI_FUTURE_DOMAIN=m
-CONFIG_SCSI_FD_MCS=m
 CONFIG_SCSI_GDTH=m
 CONFIG_SCSI_ISCI=m
 CONFIG_SCSI_GENERIC_NCR5380=m
 CONFIG_SCSI_GENERIC_NCR5380_MMIO=m
-CONFIG_SCSI_GENERIC_NCR53C400=y
-CONFIG_SCSI_IBMMCA=m
-# CONFIG_IBMMCA_SCSI_ORDER_STANDARD is not set
-# CONFIG_IBMMCA_SCSI_DEV_RESET is not set
+# CONFIG_SCSI_GENERIC_NCR53C400 is not set
 CONFIG_SCSI_IPS=m
 CONFIG_SCSI_INITIO=m
 CONFIG_SCSI_INIA100=m
@@ -1478,7 +1548,6 @@ CONFIG_SCSI_IMM=m
 # CONFIG_SCSI_IZIP_EPP16 is not set
 # CONFIG_SCSI_IZIP_SLOW_CTR is not set
 CONFIG_SCSI_NCR53C406A=m
-CONFIG_SCSI_NCR_D700=m
 CONFIG_SCSI_STEX=m
 CONFIG_SCSI_SYM53C8XX_2=m
 CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
@@ -1488,24 +1557,21 @@ CONFIG_SCSI_SYM53C8XX_MMIO=y
 CONFIG_SCSI_IPR=m
 CONFIG_SCSI_IPR_TRACE=y
 CONFIG_SCSI_IPR_DUMP=y
-CONFIG_SCSI_NCR_Q720=m
-CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8
-CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32
-CONFIG_SCSI_NCR53C8XX_SYNC=20
 CONFIG_SCSI_PAS16=m
 CONFIG_SCSI_QLOGIC_FAS=m
 CONFIG_SCSI_QLOGIC_1280=m
 CONFIG_SCSI_QLA_FC=m
 CONFIG_SCSI_QLA_ISCSI=m
 CONFIG_SCSI_LPFC=m
+# CONFIG_SCSI_LPFC_DEBUG_FS is not set
 CONFIG_SCSI_SIM710=m
 CONFIG_SCSI_SYM53C416=m
 CONFIG_SCSI_DC395x=m
 CONFIG_SCSI_DC390T=m
 CONFIG_SCSI_T128=m
 CONFIG_SCSI_U14_34F=m
-CONFIG_SCSI_U14_34F_TAGGED_QUEUE=y
-CONFIG_SCSI_U14_34F_LINKED_COMMANDS=y
+# CONFIG_SCSI_U14_34F_TAGGED_QUEUE is not set
+# CONFIG_SCSI_U14_34F_LINKED_COMMANDS is not set
 CONFIG_SCSI_U14_34F_MAX_TAGS=8
 CONFIG_SCSI_ULTRASTOR=m
 CONFIG_SCSI_NSP32=m
@@ -1514,13 +1580,15 @@ CONFIG_SCSI_PMCRAID=m
 CONFIG_SCSI_PM8001=m
 # CONFIG_SCSI_SRP is not set
 CONFIG_SCSI_BFA_FC=m
+CONFIG_SCSI_VIRTIO=m
+CONFIG_SCSI_CHELSIO_FCOE=m
 CONFIG_SCSI_LOWLEVEL_PCMCIA=y
 CONFIG_PCMCIA_AHA152X=m
 CONFIG_PCMCIA_FDOMAIN=m
 CONFIG_PCMCIA_NINJA_SCSI=m
 CONFIG_PCMCIA_QLOGIC=m
 CONFIG_PCMCIA_SYM53C500=m
-CONFIG_SCSI_DH=m
+CONFIG_SCSI_DH=y
 CONFIG_SCSI_DH_RDAC=m
 CONFIG_SCSI_DH_HP_SW=m
 CONFIG_SCSI_DH_EMC=m
@@ -1529,16 +1597,17 @@ CONFIG_SCSI_OSD_INITIATOR=m
 CONFIG_SCSI_OSD_ULD=m
 CONFIG_SCSI_OSD_DPRINT_SENSE=1
 # CONFIG_SCSI_OSD_DEBUG is not set
-CONFIG_ATA=m
+CONFIG_ATA=y
 # CONFIG_ATA_NONSTANDARD is not set
 CONFIG_ATA_VERBOSE_ERROR=y
 CONFIG_ATA_ACPI=y
+CONFIG_SATA_ZPODD=y
 CONFIG_SATA_PMP=y
 
 #
 # Controllers with non-SFF native interface
 #
-CONFIG_SATA_AHCI=m
+CONFIG_SATA_AHCI=y
 CONFIG_SATA_AHCI_PLATFORM=m
 CONFIG_SATA_INIC162X=m
 CONFIG_SATA_ACARD_AHCI=m
@@ -1556,7 +1625,8 @@ CONFIG_ATA_BMDMA=y
 #
 # SATA SFF controllers with BMDMA
 #
-CONFIG_ATA_PIIX=m
+CONFIG_ATA_PIIX=y
+CONFIG_SATA_HIGHBANK=m
 CONFIG_SATA_MV=m
 CONFIG_SATA_NV=m
 CONFIG_SATA_PROMISE=m
@@ -1579,7 +1649,7 @@ CONFIG_PATA_ATP867X=m
 CONFIG_PATA_CMD64X=m
 CONFIG_PATA_CS5520=m
 CONFIG_PATA_CS5530=m
-CONFIG_PATA_CS5535=m
+# CONFIG_PATA_CS5535 is not set
 CONFIG_PATA_CS5536=m
 CONFIG_PATA_CYPRESS=m
 CONFIG_PATA_EFAR=m
@@ -1587,7 +1657,7 @@ CONFIG_PATA_HPT366=m
 CONFIG_PATA_HPT37X=m
 CONFIG_PATA_HPT3X2N=m
 CONFIG_PATA_HPT3X3=m
-CONFIG_PATA_HPT3X3_DMA=y
+# CONFIG_PATA_HPT3X3_DMA is not set
 CONFIG_PATA_IT8213=m
 CONFIG_PATA_IT821X=m
 CONFIG_PATA_JMICRON=m
@@ -1620,6 +1690,7 @@ CONFIG_PATA_MPIIX=m
 CONFIG_PATA_NS87410=m
 CONFIG_PATA_OPTI=m
 CONFIG_PATA_PCMCIA=m
+CONFIG_PATA_PLATFORM=m
 CONFIG_PATA_QDI=m
 CONFIG_PATA_RZ1000=m
 CONFIG_PATA_WINBOND_VLB=m
@@ -1631,75 +1702,92 @@ CONFIG_PATA_ACPI=m
 CONFIG_ATA_GENERIC=m
 CONFIG_PATA_LEGACY=m
 CONFIG_MD=y
-CONFIG_BLK_DEV_MD=m
+CONFIG_BLK_DEV_MD=y
+CONFIG_MD_AUTODETECT=y
 CONFIG_MD_LINEAR=m
 CONFIG_MD_RAID0=m
 CONFIG_MD_RAID1=m
 CONFIG_MD_RAID10=m
 CONFIG_MD_RAID456=m
-# CONFIG_MULTICORE_RAID456 is not set
 CONFIG_MD_MULTIPATH=m
-# CONFIG_MD_FAULTY is not set
-CONFIG_BLK_DEV_DM=m
+CONFIG_MD_FAULTY=m
+CONFIG_BCACHE=m
+# CONFIG_BCACHE_DEBUG is not set
+# CONFIG_BCACHE_EDEBUG is not set
+# CONFIG_BCACHE_CLOSURES_DEBUG is not set
+CONFIG_BLK_DEV_DM=y
 # CONFIG_DM_DEBUG is not set
 CONFIG_DM_BUFIO=m
+CONFIG_DM_BIO_PRISON=m
 CONFIG_DM_PERSISTENT_DATA=m
 CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_THIN_PROVISIONING=m
-# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
-# CONFIG_DM_DEBUG_SPACE_MAPS is not set
-CONFIG_DM_MIRROR=m
+CONFIG_DM_SNAPSHOT=y
+# CONFIG_DM_THIN_PROVISIONING is not set
+CONFIG_DM_CACHE=m
+CONFIG_DM_CACHE_MQ=m
+CONFIG_DM_CACHE_CLEANER=m
+CONFIG_DM_MIRROR=y
 CONFIG_DM_RAID=m
 CONFIG_DM_LOG_USERSPACE=m
-CONFIG_DM_ZERO=m
+CONFIG_DM_ZERO=y
 CONFIG_DM_MULTIPATH=m
 CONFIG_DM_MULTIPATH_QL=m
 CONFIG_DM_MULTIPATH_ST=m
-CONFIG_DM_DELAY=m
+# CONFIG_DM_DELAY is not set
 CONFIG_DM_UEVENT=y
-CONFIG_DM_FLAKEY=m
+# CONFIG_DM_FLAKEY is not set
+CONFIG_DM_VERITY=m
 # CONFIG_TARGET_CORE is not set
 CONFIG_FUSION=y
 CONFIG_FUSION_SPI=m
 CONFIG_FUSION_FC=m
 CONFIG_FUSION_SAS=m
-CONFIG_FUSION_MAX_SGE=128
+CONFIG_FUSION_MAX_SGE=40
 CONFIG_FUSION_CTL=m
-# CONFIG_FUSION_LOGGING is not set
+CONFIG_FUSION_LOGGING=y
 
 #
 # IEEE 1394 (FireWire) support
 #
 CONFIG_FIREWIRE=m
 CONFIG_FIREWIRE_OHCI=m
-CONFIG_FIREWIRE_OHCI_DEBUG=y
 CONFIG_FIREWIRE_SBP2=m
-CONFIG_FIREWIRE_NET=m
+# CONFIG_FIREWIRE_NET is not set
 # CONFIG_FIREWIRE_NOSY is not set
-# CONFIG_I2O is not set
-# CONFIG_MACINTOSH_DRIVERS is not set
+CONFIG_I2O=m
+# CONFIG_I2O_LCT_NOTIFY_ON_CHANGES is not set
+CONFIG_I2O_EXT_ADAPTEC=y
+CONFIG_I2O_CONFIG=m
+CONFIG_I2O_CONFIG_OLD_IOCTL=y
+CONFIG_I2O_BUS=m
+CONFIG_I2O_BLOCK=m
+CONFIG_I2O_SCSI=m
+CONFIG_I2O_PROC=m
+CONFIG_MACINTOSH_DRIVERS=y
+# CONFIG_MAC_EMUMOUSEBTN is not set
 CONFIG_NETDEVICES=y
 CONFIG_NET_CORE=y
 CONFIG_BONDING=m
 CONFIG_DUMMY=m
-CONFIG_EQUALIZER=m
+# CONFIG_EQUALIZER is not set
+# CONFIG_NET_FC is not set
+CONFIG_MII=m
+CONFIG_IFB=m
+# CONFIG_NET_TEAM is not set
+CONFIG_MACVLAN=m
+CONFIG_MACVTAP=m
+CONFIG_VXLAN=m
+CONFIG_NETCONSOLE=m
+CONFIG_NETCONSOLE_DYNAMIC=y
+CONFIG_NETPOLL=y
+CONFIG_NETPOLL_TRAP=y
+CONFIG_NET_POLL_CONTROLLER=y
 CONFIG_IMQ=m
 # CONFIG_IMQ_BEHAVIOR_AA is not set
 CONFIG_IMQ_BEHAVIOR_AB=y
 # CONFIG_IMQ_BEHAVIOR_BA is not set
 # CONFIG_IMQ_BEHAVIOR_BB is not set
 CONFIG_IMQ_NUM_DEVS=2
-# CONFIG_NET_FC is not set
-CONFIG_MII=m
-CONFIG_IEEE802154_DRIVERS=m
-CONFIG_IEEE802154_FAKEHARD=m
-CONFIG_IFB=m
-CONFIG_MACVLAN=m
-CONFIG_MACVTAP=m
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
 CONFIG_TUN=m
 CONFIG_VETH=m
 CONFIG_VIRTIO_NET=m
@@ -1710,22 +1798,14 @@ CONFIG_ATM_DRIVERS=y
 CONFIG_ATM_TCP=m
 CONFIG_ATM_LANAI=m
 CONFIG_ATM_ENI=m
-CONFIG_ATM_ENI_DEBUG=y
-CONFIG_ATM_ENI_TUNE_BURST=y
-CONFIG_ATM_ENI_BURST_TX_16W=y
-CONFIG_ATM_ENI_BURST_TX_8W=y
-CONFIG_ATM_ENI_BURST_TX_4W=y
-CONFIG_ATM_ENI_BURST_TX_2W=y
-CONFIG_ATM_ENI_BURST_RX_16W=y
-CONFIG_ATM_ENI_BURST_RX_8W=y
-CONFIG_ATM_ENI_BURST_RX_4W=y
-CONFIG_ATM_ENI_BURST_RX_2W=y
+# CONFIG_ATM_ENI_DEBUG is not set
+# CONFIG_ATM_ENI_TUNE_BURST is not set
 CONFIG_ATM_FIRESTREAM=m
 CONFIG_ATM_ZATM=m
 # CONFIG_ATM_ZATM_DEBUG is not set
 CONFIG_ATM_NICSTAR=m
-CONFIG_ATM_NICSTAR_USE_SUNI=y
-CONFIG_ATM_NICSTAR_USE_IDT77105=y
+# CONFIG_ATM_NICSTAR_USE_SUNI is not set
+# CONFIG_ATM_NICSTAR_USE_IDT77105 is not set
 CONFIG_ATM_IDT77252=m
 # CONFIG_ATM_IDT77252_DEBUG is not set
 # CONFIG_ATM_IDT77252_RCV_ALL is not set
@@ -1737,20 +1817,30 @@ CONFIG_ATM_HORIZON=m
 CONFIG_ATM_IA=m
 # CONFIG_ATM_IA_DEBUG is not set
 CONFIG_ATM_FORE200E=m
-CONFIG_ATM_FORE200E_USE_TASKLET=y
+# CONFIG_ATM_FORE200E_USE_TASKLET is not set
 CONFIG_ATM_FORE200E_TX_RETRY=16
 CONFIG_ATM_FORE200E_DEBUG=0
 CONFIG_ATM_HE=m
-CONFIG_ATM_HE_USE_SUNI=y
+# CONFIG_ATM_HE_USE_SUNI is not set
 CONFIG_ATM_SOLOS=m
 
 #
 # CAIF transport drivers
 #
+CONFIG_VHOST_NET=m
+CONFIG_VHOST_RING=m
+
+#
+# Distributed Switch Architecture drivers
+#
+CONFIG_NET_DSA_MV88E6XXX=y
+CONFIG_NET_DSA_MV88E6060=y
+CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y
+CONFIG_NET_DSA_MV88E6131=y
+CONFIG_NET_DSA_MV88E6123_61_65=y
 CONFIG_ETHERNET=y
 CONFIG_MDIO=m
 CONFIG_NET_VENDOR_3COM=y
-CONFIG_EL1=m
 CONFIG_EL3=m
 CONFIG_3C515=m
 CONFIG_PCMCIA_3C574=m
@@ -1766,7 +1856,6 @@ CONFIG_NET_VENDOR_AMD=y
 CONFIG_AMD8111_ETH=m
 CONFIG_LANCE=m
 CONFIG_PCNET32=m
-CONFIG_DEPCA=m
 CONFIG_PCMCIA_NMCLAN=m
 CONFIG_NI65=m
 CONFIG_NET_VENDOR_ATHEROS=y
@@ -1774,6 +1863,10 @@ CONFIG_ATL2=m
 CONFIG_ATL1=m
 CONFIG_ATL1E=m
 CONFIG_ATL1C=m
+CONFIG_ALX=m
+CONFIG_NET_CADENCE=y
+CONFIG_ARM_AT91_ETHER=m
+CONFIG_MACB=m
 CONFIG_NET_VENDOR_BROADCOM=y
 CONFIG_B44=m
 CONFIG_B44_PCI_AUTOSELECT=y
@@ -1783,8 +1876,10 @@ CONFIG_BNX2=m
 CONFIG_CNIC=m
 CONFIG_TIGON3=m
 CONFIG_BNX2X=m
+CONFIG_BNX2X_SRIOV=y
 CONFIG_NET_VENDOR_BROCADE=y
 CONFIG_BNA=m
+CONFIG_NET_CALXEDA_XGMAC=m
 CONFIG_NET_VENDOR_CHELSIO=y
 CONFIG_CHELSIO_T1=m
 CONFIG_CHELSIO_T1_1G=y
@@ -1793,26 +1888,25 @@ CONFIG_CHELSIO_T4=m
 CONFIG_CHELSIO_T4VF=m
 CONFIG_NET_VENDOR_CIRRUS=y
 CONFIG_CS89x0=m
+# CONFIG_CS89x0_PLATFORM is not set
 CONFIG_NET_VENDOR_CISCO=y
 CONFIG_ENIC=m
 CONFIG_DNET=m
 CONFIG_NET_VENDOR_DEC=y
-CONFIG_EWRK3=m
 CONFIG_NET_TULIP=y
 CONFIG_DE2104X=m
 CONFIG_DE2104X_DSL=0
 CONFIG_TULIP=m
 # CONFIG_TULIP_MWI is not set
-# CONFIG_TULIP_MMIO is not set
-# CONFIG_TULIP_NAPI is not set
+CONFIG_TULIP_MMIO=y
+CONFIG_TULIP_NAPI=y
+CONFIG_TULIP_NAPI_HW_MITIGATION=y
 CONFIG_DE4X5=m
 CONFIG_WINBOND_840=m
 CONFIG_DM9102=m
 CONFIG_ULI526X=m
 CONFIG_PCMCIA_XIRCOM=m
 CONFIG_NET_VENDOR_DLINK=y
-CONFIG_DE600=m
-CONFIG_DE620=m
 CONFIG_DL2K=m
 CONFIG_SUNDANCE=m
 # CONFIG_SUNDANCE_MMIO is not set
@@ -1823,47 +1917,32 @@ CONFIG_S2IO=m
 CONFIG_VXGE=m
 # CONFIG_VXGE_DEBUG_TRACE_ALL is not set
 CONFIG_NET_VENDOR_FUJITSU=y
-CONFIG_AT1700=m
 CONFIG_PCMCIA_FMVJ18X=m
-CONFIG_ETH16I=m
 CONFIG_NET_VENDOR_HP=y
 CONFIG_HP100=m
-CONFIG_NET_VENDOR_IBM=y
-# CONFIG_IBM_EMAC_ZMII is not set
-# CONFIG_IBM_EMAC_RGMII is not set
-# CONFIG_IBM_EMAC_TAH is not set
-# CONFIG_IBM_EMAC_EMAC4 is not set
-# CONFIG_IBM_EMAC_NO_FLOW_CTRL is not set
-# CONFIG_IBM_EMAC_MAL_CLR_ICINTSTAT is not set
-# CONFIG_IBM_EMAC_MAL_COMMON_ERR is not set
 CONFIG_NET_VENDOR_INTEL=y
 CONFIG_E100=m
 CONFIG_E1000=m
 CONFIG_E1000E=m
 CONFIG_IGB=m
+CONFIG_IGB_HWMON=y
 CONFIG_IGB_DCA=y
 CONFIG_IGBVF=m
 CONFIG_IXGB=m
 CONFIG_IXGBE=m
+CONFIG_IXGBE_HWMON=y
 CONFIG_IXGBE_DCA=y
 CONFIG_IXGBEVF=m
 CONFIG_NET_VENDOR_I825XX=y
-CONFIG_ELPLUS=m
-CONFIG_EL16=m
-CONFIG_ELMC=m
-CONFIG_ELMC_II=m
-CONFIG_APRICOT=m
-CONFIG_EEXPRESS=m
-CONFIG_EEXPRESS_PRO=m
-CONFIG_LP486E=m
-CONFIG_NI52=m
-CONFIG_ZNET=m
 CONFIG_IP1000=m
 CONFIG_JME=m
 CONFIG_NET_VENDOR_MARVELL=y
+CONFIG_MVMDIO=m
 CONFIG_SKGE=m
+# CONFIG_SKGE_DEBUG is not set
 CONFIG_SKGE_GENESIS=y
 CONFIG_SKY2=m
+# CONFIG_SKY2_DEBUG is not set
 CONFIG_NET_VENDOR_MELLANOX=y
 CONFIG_MLX4_EN=m
 CONFIG_MLX4_CORE=m
@@ -1877,61 +1956,47 @@ CONFIG_MYRI10GE=m
 CONFIG_MYRI10GE_DCA=y
 CONFIG_FEALNX=m
 CONFIG_NET_VENDOR_NATSEMI=y
-CONFIG_IBMLANA=m
 CONFIG_NATSEMI=m
 CONFIG_NS83820=m
 CONFIG_NET_VENDOR_8390=y
-CONFIG_EL2=m
-CONFIG_AC3200=m
 CONFIG_PCMCIA_AXNET=m
-CONFIG_E2100=m
-CONFIG_ES3210=m
-CONFIG_HPLAN_PLUS=m
-CONFIG_HPLAN=m
-CONFIG_LNE390=m
 CONFIG_NE2000=m
-CONFIG_NE2_MCA=m
 CONFIG_NE2K_PCI=m
-CONFIG_NE3210=m
 CONFIG_PCMCIA_PCNET=m
-CONFIG_ULTRAMCA=m
 CONFIG_ULTRA=m
-CONFIG_ULTRA32=m
 CONFIG_WD80x3=m
 CONFIG_NET_VENDOR_NVIDIA=y
 CONFIG_FORCEDETH=m
 CONFIG_NET_VENDOR_OKI=y
 CONFIG_PCH_GBE=m
 CONFIG_ETHOC=m
-CONFIG_NET_PACKET_ENGINE=y
-CONFIG_HAMACHI=m
-CONFIG_YELLOWFIN=m
+# CONFIG_NET_PACKET_ENGINE is not set
 CONFIG_NET_VENDOR_QLOGIC=y
 CONFIG_QLA3XXX=m
 CONFIG_QLCNIC=m
+CONFIG_QLCNIC_SRIOV=y
 CONFIG_QLGE=m
 CONFIG_NETXEN_NIC=m
-CONFIG_NET_VENDOR_RACAL=y
 CONFIG_NET_VENDOR_REALTEK=y
 CONFIG_ATP=m
 CONFIG_8139CP=m
 CONFIG_8139TOO=m
 # CONFIG_8139TOO_PIO is not set
-CONFIG_8139TOO_TUNE_TWISTER=y
+# CONFIG_8139TOO_TUNE_TWISTER is not set
 CONFIG_8139TOO_8129=y
 # CONFIG_8139_OLD_RX_RESET is not set
 CONFIG_R8169=m
 CONFIG_NET_VENDOR_RDC=y
 CONFIG_R6040=m
 CONFIG_NET_VENDOR_SEEQ=y
-CONFIG_SEEQ8005=m
 CONFIG_NET_VENDOR_SILAN=y
 CONFIG_SC92031=m
 CONFIG_NET_VENDOR_SIS=y
 CONFIG_SIS900=m
 CONFIG_SIS190=m
 CONFIG_SFC=m
-CONFIG_SFC_MTD=y
+CONFIG_SFC_MCDI_MON=y
+CONFIG_SFC_SRIOV=y
 CONFIG_NET_VENDOR_SMSC=y
 CONFIG_SMC9194=m
 CONFIG_PCMCIA_SMC91C92=m
@@ -1939,9 +2004,10 @@ CONFIG_EPIC100=m
 CONFIG_SMSC9420=m
 CONFIG_NET_VENDOR_STMICRO=y
 CONFIG_STMMAC_ETH=m
+CONFIG_STMMAC_PLATFORM=y
+CONFIG_STMMAC_PCI=y
+# CONFIG_STMMAC_DEBUG_FS is not set
 # CONFIG_STMMAC_DA is not set
-CONFIG_STMMAC_RING=y
-# CONFIG_STMMAC_CHAINED is not set
 CONFIG_NET_VENDOR_SUN=y
 CONFIG_HAPPYMEAL=m
 CONFIG_SUNGEM=m
@@ -1955,16 +2021,24 @@ CONFIG_NET_VENDOR_VIA=y
 CONFIG_VIA_RHINE=m
 CONFIG_VIA_RHINE_MMIO=y
 CONFIG_VIA_VELOCITY=m
+CONFIG_NET_VENDOR_WIZNET=y
+CONFIG_WIZNET_W5100=m
+CONFIG_WIZNET_W5300=m
+# CONFIG_WIZNET_BUS_DIRECT is not set
+# CONFIG_WIZNET_BUS_INDIRECT is not set
+CONFIG_WIZNET_BUS_ANY=y
 CONFIG_NET_VENDOR_XIRCOM=y
 CONFIG_PCMCIA_XIRC2PS=m
 # CONFIG_FDDI is not set
 # CONFIG_HIPPI is not set
-CONFIG_NET_SB1000=m
+# CONFIG_NET_SB1000 is not set
 CONFIG_PHYLIB=y
 
 #
 # MII PHY device drivers
 #
+CONFIG_AT803X_PHY=m
+CONFIG_AMD_PHY=m
 CONFIG_MARVELL_PHY=m
 CONFIG_DAVICOM_PHY=m
 CONFIG_QSEMI_PHY=m
@@ -1973,15 +2047,16 @@ CONFIG_CICADA_PHY=m
 CONFIG_VITESSE_PHY=m
 CONFIG_SMSC_PHY=m
 CONFIG_BROADCOM_PHY=m
+CONFIG_BCM87XX_PHY=m
 CONFIG_ICPLUS_PHY=m
 CONFIG_REALTEK_PHY=m
 CONFIG_NATIONAL_PHY=m
 CONFIG_STE10XP=m
 CONFIG_LSI_ET1011C_PHY=m
 CONFIG_MICREL_PHY=m
-# CONFIG_FIXED_PHY is not set
+CONFIG_FIXED_PHY=y
 CONFIG_MDIO_BITBANG=m
-CONFIG_MDIO_GPIO=m
+# CONFIG_MDIO_GPIO is not set
 # CONFIG_PLIP is not set
 CONFIG_PPP=m
 CONFIG_PPP_BSDCOMP=m
@@ -1995,12 +2070,8 @@ CONFIG_PPTP=m
 CONFIG_PPPOL2TP=m
 CONFIG_PPP_ASYNC=m
 CONFIG_PPP_SYNC_TTY=m
-CONFIG_SLIP=m
+# CONFIG_SLIP is not set
 CONFIG_SLHC=m
-CONFIG_SLIP_COMPRESSED=y
-CONFIG_SLIP_SMART=y
-CONFIG_SLIP_MODE_SLIP6=y
-# CONFIG_TR is not set
 
 #
 # USB Network Adapters
@@ -2009,11 +2080,14 @@ CONFIG_USB_CATC=m
 CONFIG_USB_KAWETH=m
 CONFIG_USB_PEGASUS=m
 CONFIG_USB_RTL8150=m
+CONFIG_USB_RTL8152=m
 CONFIG_USB_USBNET=m
 CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_AX88179_178A=m
 CONFIG_USB_NET_CDCETHER=m
 CONFIG_USB_NET_CDC_EEM=m
 CONFIG_USB_NET_CDC_NCM=m
+CONFIG_USB_NET_CDC_MBIM=m
 CONFIG_USB_NET_DM9601=m
 CONFIG_USB_NET_SMSC75XX=m
 CONFIG_USB_NET_SMSC95XX=m
@@ -2032,14 +2106,17 @@ CONFIG_USB_KC2190=y
 CONFIG_USB_NET_ZAURUS=m
 CONFIG_USB_NET_CX82310_ETH=m
 CONFIG_USB_NET_KALMIA=m
+CONFIG_USB_NET_QMI_WWAN=m
 CONFIG_USB_HSO=m
 CONFIG_USB_NET_INT51X1=m
-# CONFIG_USB_IPHETH is not set
+CONFIG_USB_IPHETH=m
 CONFIG_USB_SIERRA_NET=m
 CONFIG_USB_VL600=m
 CONFIG_WLAN=y
-CONFIG_PCMCIA_RAYCS=m
-# CONFIG_LIBERTAS_THINFIRM is not set
+# CONFIG_PCMCIA_RAYCS is not set
+CONFIG_LIBERTAS_THINFIRM=m
+# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set
+CONFIG_LIBERTAS_THINFIRM_USB=m
 CONFIG_AIRO=m
 CONFIG_ATMEL=m
 CONFIG_PCI_ATMEL=m
@@ -2050,73 +2127,175 @@ CONFIG_PCMCIA_WL3501=m
 # CONFIG_PRISM54 is not set
 CONFIG_USB_ZD1201=m
 CONFIG_USB_NET_RNDIS_WLAN=m
-# CONFIG_RTL8180 is not set
-# CONFIG_RTL8187 is not set
-# CONFIG_ADM8211 is not set
-# CONFIG_MAC80211_HWSIM is not set
-# CONFIG_MWL8K is not set
-# CONFIG_ATH_COMMON is not set
-# CONFIG_B43 is not set
-# CONFIG_B43LEGACY is not set
-# CONFIG_BRCMFMAC is not set
+CONFIG_RTL8180=m
+CONFIG_RTL8187=m
+CONFIG_RTL8187_LEDS=y
+CONFIG_ADM8211=m
+CONFIG_MAC80211_HWSIM=m
+CONFIG_MWL8K=m
+CONFIG_ATH_COMMON=m
+CONFIG_ATH_CARDS=m
+# CONFIG_ATH_DEBUG is not set
+CONFIG_ATH5K=m
+CONFIG_ATH5K_DEBUG=y
+# CONFIG_ATH5K_TRACER is not set
+CONFIG_ATH5K_PCI=y
+CONFIG_ATH9K_HW=m
+CONFIG_ATH9K_COMMON=m
+CONFIG_ATH9K_BTCOEX_SUPPORT=y
+CONFIG_ATH9K=m
+CONFIG_ATH9K_PCI=y
+CONFIG_ATH9K_AHB=y
+# CONFIG_ATH9K_DEBUGFS is not set
+# CONFIG_ATH9K_LEGACY_RATE_CONTROL is not set
+CONFIG_ATH9K_HTC=m
+# CONFIG_ATH9K_HTC_DEBUGFS is not set
+CONFIG_CARL9170=m
+CONFIG_CARL9170_LEDS=y
+CONFIG_CARL9170_WPC=y
+# CONFIG_CARL9170_HWRNG is not set
+# CONFIG_ATH6KL is not set
+CONFIG_AR5523=m
+CONFIG_WIL6210=m
+CONFIG_WIL6210_ISR_COR=y
+CONFIG_B43=m
+CONFIG_B43_SSB=y
+CONFIG_B43_PCI_AUTOSELECT=y
+CONFIG_B43_PCICORE_AUTOSELECT=y
+# CONFIG_B43_PCMCIA is not set
+CONFIG_B43_SDIO=y
+CONFIG_B43_PIO=y
+CONFIG_B43_PHY_N=y
+CONFIG_B43_PHY_LP=y
+CONFIG_B43_LEDS=y
+CONFIG_B43_HWRNG=y
+# CONFIG_B43_DEBUG is not set
+CONFIG_B43LEGACY=m
+CONFIG_B43LEGACY_PCI_AUTOSELECT=y
+CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y
+CONFIG_B43LEGACY_LEDS=y
+CONFIG_B43LEGACY_HWRNG=y
+# CONFIG_B43LEGACY_DEBUG is not set
+CONFIG_B43LEGACY_DMA=y
+CONFIG_B43LEGACY_PIO=y
+CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
+# CONFIG_B43LEGACY_DMA_MODE is not set
+# CONFIG_B43LEGACY_PIO_MODE is not set
+CONFIG_BRCMUTIL=m
+CONFIG_BRCMFMAC=m
+CONFIG_BRCMFMAC_SDIO=y
+# CONFIG_BRCMFMAC_USB is not set
+# CONFIG_BRCM_TRACING is not set
+# CONFIG_BRCMDBG is not set
 CONFIG_HOSTAP=m
 CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
+CONFIG_HOSTAP_FIRMWARE_NVRAM=y
 CONFIG_HOSTAP_PLX=m
 CONFIG_HOSTAP_PCI=m
 CONFIG_HOSTAP_CS=m
-# CONFIG_IPW2100 is not set
-# CONFIG_IPW2200 is not set
-# CONFIG_IWLWIFI is not set
-# CONFIG_IWL4965 is not set
-# CONFIG_IWL3945 is not set
-# CONFIG_IWM is not set
-# CONFIG_LIBERTAS is not set
-# CONFIG_HERMES is not set
-# CONFIG_P54_COMMON is not set
-# CONFIG_RT2X00 is not set
-# CONFIG_RTL8192CE is not set
-# CONFIG_RTL8192SE is not set
-# CONFIG_RTL8192DE is not set
-# CONFIG_RTL8192CU is not set
-# CONFIG_WL1251 is not set
-# CONFIG_WL12XX_MENU is not set
-# CONFIG_ZD1211RW is not set
-# CONFIG_MWIFIEX is not set
+CONFIG_IPW2100=m
+CONFIG_IPW2100_MONITOR=y
+# CONFIG_IPW2100_DEBUG is not set
+CONFIG_IPW2200=m
+CONFIG_IPW2200_MONITOR=y
+CONFIG_IPW2200_RADIOTAP=y
+CONFIG_IPW2200_PROMISCUOUS=y
+CONFIG_IPW2200_QOS=y
+# CONFIG_IPW2200_DEBUG is not set
+CONFIG_LIBIPW=m
+# CONFIG_LIBIPW_DEBUG is not set
+CONFIG_IWLWIFI=m
+CONFIG_IWLDVM=m
+CONFIG_IWLMVM=m
+CONFIG_IWLWIFI_OPMODE_MODULAR=y
+
+#
+# Debugging Options
+#
+# CONFIG_IWLWIFI_DEBUG is not set
+# CONFIG_IWLWIFI_DEVICE_TRACING is not set
+CONFIG_IWLWIFI_P2P=y
+CONFIG_IWLEGACY=m
+CONFIG_IWL4965=m
+CONFIG_IWL3945=m
+
+#
+# iwl3945 / iwl4965 Debugging Options
+#
+# CONFIG_IWLEGACY_DEBUG is not set
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
+CONFIG_LIBERTAS_CS=m
+CONFIG_LIBERTAS_SDIO=m
+# CONFIG_LIBERTAS_DEBUG is not set
+CONFIG_LIBERTAS_MESH=y
+CONFIG_HERMES=m
+# CONFIG_HERMES_PRISM is not set
+CONFIG_HERMES_CACHE_FW_ON_INIT=y
+CONFIG_PLX_HERMES=m
+CONFIG_TMD_HERMES=m
+CONFIG_NORTEL_HERMES=m
+CONFIG_PCMCIA_HERMES=m
+CONFIG_PCMCIA_SPECTRUM=m
+CONFIG_ORINOCO_USB=m
+CONFIG_P54_COMMON=m
+CONFIG_P54_USB=m
+CONFIG_P54_PCI=m
+CONFIG_P54_LEDS=y
+CONFIG_RT2X00=m
+CONFIG_RT2400PCI=m
+CONFIG_RT2500PCI=m
+CONFIG_RT61PCI=m
+CONFIG_RT2800PCI=m
+CONFIG_RT2800PCI_RT33XX=y
+CONFIG_RT2800PCI_RT35XX=y
+CONFIG_RT2800PCI_RT53XX=y
+CONFIG_RT2800PCI_RT3290=y
+CONFIG_RT2500USB=m
+CONFIG_RT73USB=m
+CONFIG_RT2800USB=m
+CONFIG_RT2800USB_RT33XX=y
+CONFIG_RT2800USB_RT35XX=y
+CONFIG_RT2800USB_RT53XX=y
+CONFIG_RT2800USB_RT55XX=y
+CONFIG_RT2800USB_UNKNOWN=y
+CONFIG_RT2800_LIB=m
+CONFIG_RT2X00_LIB_MMIO=m
+CONFIG_RT2X00_LIB_PCI=m
+CONFIG_RT2X00_LIB_USB=m
+CONFIG_RT2X00_LIB=m
+CONFIG_RT2X00_LIB_FIRMWARE=y
+CONFIG_RT2X00_LIB_CRYPTO=y
+CONFIG_RT2X00_LIB_LEDS=y
+# CONFIG_RT2X00_DEBUG is not set
+CONFIG_RTLWIFI=m
+# CONFIG_RTLWIFI_DEBUG is not set
+CONFIG_RTL8192CE=m
+CONFIG_RTL8192SE=m
+CONFIG_RTL8192DE=m
+CONFIG_RTL8723AE=m
+CONFIG_RTL8188EE=m
+CONFIG_RTL8192CU=m
+CONFIG_RTL8192C_COMMON=m
+CONFIG_WL_TI=y
+CONFIG_WL1251=m
+CONFIG_WL1251_SDIO=m
+CONFIG_WL12XX=m
+CONFIG_WL18XX=m
+CONFIG_WLCORE=m
+CONFIG_WLCORE_SDIO=m
+CONFIG_WILINK_PLATFORM_DATA=y
+CONFIG_ZD1211RW=m
+# CONFIG_ZD1211RW_DEBUG is not set
+CONFIG_MWIFIEX=m
+CONFIG_MWIFIEX_SDIO=m
+CONFIG_MWIFIEX_PCIE=m
+CONFIG_MWIFIEX_USB=m
 
 #
 # Enable WiMAX (Networking options) to see the WiMAX drivers
 #
-CONFIG_WAN=y
-CONFIG_HOSTESS_SV11=m
-CONFIG_COSA=m
-CONFIG_LANMEDIA=m
-CONFIG_SEALEVEL_4021=m
-CONFIG_HDLC=m
-CONFIG_HDLC_RAW=m
-CONFIG_HDLC_RAW_ETH=m
-CONFIG_HDLC_CISCO=m
-CONFIG_HDLC_FR=m
-CONFIG_HDLC_PPP=m
-
-#
-# X.25/LAPB support is disabled
-#
-CONFIG_PCI200SYN=m
-CONFIG_WANXL=m
-# CONFIG_WANXL_BUILD_FIRMWARE is not set
-CONFIG_PC300TOO=m
-CONFIG_N2=m
-CONFIG_C101=m
-CONFIG_FARSYNC=m
-CONFIG_DSCC4=m
-CONFIG_DSCC4_PCISYNC=y
-CONFIG_DSCC4_PCI_RST=y
-CONFIG_DLCI=m
-CONFIG_DLCI_MAX=8
-CONFIG_SDLA=m
-CONFIG_SBNI=m
-CONFIG_SBNI_MULTILINE=y
+# CONFIG_WAN is not set
 CONFIG_VMXNET3=m
 CONFIG_ISDN=y
 CONFIG_ISDN_I4L=m
@@ -2147,9 +2326,9 @@ CONFIG_ISDN_DRV_HISAX=m
 #
 CONFIG_HISAX_EURO=y
 CONFIG_DE_AOC=y
-# CONFIG_HISAX_NO_SENDCOMPLETE is not set
-# CONFIG_HISAX_NO_LLC is not set
-# CONFIG_HISAX_NO_KEYPAD is not set
+CONFIG_HISAX_NO_SENDCOMPLETE=y
+CONFIG_HISAX_NO_LLC=y
+CONFIG_HISAX_NO_KEYPAD=y
 CONFIG_HISAX_1TR6=y
 CONFIG_HISAX_NI1=y
 CONFIG_HISAX_MAX_CARDS=8
@@ -2157,27 +2336,27 @@ CONFIG_HISAX_MAX_CARDS=8
 #
 # HiSax supported cards
 #
-CONFIG_HISAX_16_0=y
+# CONFIG_HISAX_16_0 is not set
 CONFIG_HISAX_16_3=y
 CONFIG_HISAX_TELESPCI=y
 CONFIG_HISAX_S0BOX=y
-CONFIG_HISAX_AVM_A1=y
+# CONFIG_HISAX_AVM_A1 is not set
 CONFIG_HISAX_FRITZPCI=y
 CONFIG_HISAX_AVM_A1_PCMCIA=y
 CONFIG_HISAX_ELSA=y
-CONFIG_HISAX_IX1MICROR2=y
+# CONFIG_HISAX_IX1MICROR2 is not set
 CONFIG_HISAX_DIEHLDIVA=y
-CONFIG_HISAX_ASUSCOM=y
-CONFIG_HISAX_TELEINT=y
-CONFIG_HISAX_HFCS=y
+# CONFIG_HISAX_ASUSCOM is not set
+# CONFIG_HISAX_TELEINT is not set
+# CONFIG_HISAX_HFCS is not set
 CONFIG_HISAX_SEDLBAUER=y
-CONFIG_HISAX_SPORTSTER=y
-CONFIG_HISAX_MIC=y
+# CONFIG_HISAX_SPORTSTER is not set
+# CONFIG_HISAX_MIC is not set
 CONFIG_HISAX_NETJET=y
 CONFIG_HISAX_NETJET_U=y
 CONFIG_HISAX_NICCY=y
-CONFIG_HISAX_ISURF=y
-CONFIG_HISAX_HSTSAPHIR=y
+# CONFIG_HISAX_ISURF is not set
+# CONFIG_HISAX_HSTSAPHIR is not set
 CONFIG_HISAX_BKM_A4T=y
 CONFIG_HISAX_SCT_QUADRO=y
 CONFIG_HISAX_GAZEL=y
@@ -2185,15 +2364,15 @@ CONFIG_HISAX_HFC_PCI=y
 CONFIG_HISAX_W6692=y
 CONFIG_HISAX_HFC_SX=y
 CONFIG_HISAX_ENTERNOW_PCI=y
-CONFIG_HISAX_DEBUG=y
+# CONFIG_HISAX_DEBUG is not set
 
 #
 # HiSax PCMCIA card service modules
 #
-CONFIG_HISAX_SEDLBAUER_CS=m
-CONFIG_HISAX_ELSA_CS=m
-CONFIG_HISAX_AVM_A1_CS=m
-CONFIG_HISAX_TELES_CS=m
+# CONFIG_HISAX_SEDLBAUER_CS is not set
+# CONFIG_HISAX_ELSA_CS is not set
+# CONFIG_HISAX_AVM_A1_CS is not set
+# CONFIG_HISAX_TELES_CS is not set
 
 #
 # HiSax sub driver modules
@@ -2206,10 +2385,10 @@ CONFIG_HISAX_FRITZ_PCIPNP=m
 #
 # Active cards
 #
-CONFIG_ISDN_DRV_ICN=m
-CONFIG_ISDN_DRV_PCBIT=m
-CONFIG_ISDN_DRV_SC=m
-CONFIG_ISDN_DRV_ACT2000=m
+# CONFIG_ISDN_DRV_ICN is not set
+# CONFIG_ISDN_DRV_PCBIT is not set
+# CONFIG_ISDN_DRV_SC is not set
+# CONFIG_ISDN_DRV_ACT2000 is not set
 CONFIG_ISDN_CAPI=m
 CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
 CONFIG_CAPI_TRACE=y
@@ -2221,12 +2400,11 @@ CONFIG_ISDN_CAPI_CAPIDRV=m
 # CAPI hardware drivers
 #
 CONFIG_CAPI_AVM=y
-CONFIG_ISDN_DRV_AVMB1_B1ISA=m
+# CONFIG_ISDN_DRV_AVMB1_B1ISA is not set
 CONFIG_ISDN_DRV_AVMB1_B1PCI=m
 CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
-CONFIG_ISDN_DRV_AVMB1_T1ISA=m
-CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
-CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
+# CONFIG_ISDN_DRV_AVMB1_T1ISA is not set
+# CONFIG_ISDN_DRV_AVMB1_B1PCMCIA is not set
 CONFIG_ISDN_DRV_AVMB1_T1PCI=m
 CONFIG_ISDN_DRV_AVMB1_C4=m
 CONFIG_CAPI_EICON=y
@@ -2264,15 +2442,15 @@ CONFIG_MISDN_NETJET=m
 CONFIG_MISDN_IPAC=m
 CONFIG_MISDN_ISAR=m
 CONFIG_ISDN_HDLC=m
-# CONFIG_PHONE is not set
 
 #
 # Input device support
 #
 CONFIG_INPUT=y
-CONFIG_INPUT_FF_MEMLESS=m
+# CONFIG_INPUT_FF_MEMLESS is not set
 CONFIG_INPUT_POLLDEV=m
 CONFIG_INPUT_SPARSEKMAP=m
+CONFIG_INPUT_MATRIXKMAP=m
 
 #
 # Userland interfaces
@@ -2282,57 +2460,83 @@ CONFIG_INPUT_MOUSEDEV=y
 CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
 CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
 # CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_EVDEV is not set
+CONFIG_INPUT_EVDEV=y
 # CONFIG_INPUT_EVBUG is not set
 
 #
 # Input Device Drivers
 #
 CONFIG_INPUT_KEYBOARD=y
-CONFIG_KEYBOARD_ADP5588=m
-CONFIG_KEYBOARD_ADP5589=m
+# CONFIG_KEYBOARD_ADP5588 is not set
+# CONFIG_KEYBOARD_ADP5589 is not set
 CONFIG_KEYBOARD_ATKBD=y
-CONFIG_KEYBOARD_QT1070=m
-CONFIG_KEYBOARD_QT2160=m
-CONFIG_KEYBOARD_LKKBD=m
+# CONFIG_KEYBOARD_QT1070 is not set
+# CONFIG_KEYBOARD_QT2160 is not set
+# CONFIG_KEYBOARD_LKKBD is not set
 CONFIG_KEYBOARD_GPIO=m
 CONFIG_KEYBOARD_GPIO_POLLED=m
-CONFIG_KEYBOARD_TCA6416=m
-CONFIG_KEYBOARD_MATRIX=m
-CONFIG_KEYBOARD_LM8323=m
-CONFIG_KEYBOARD_MAX7359=m
-CONFIG_KEYBOARD_MCS=m
-CONFIG_KEYBOARD_MPR121=m
-CONFIG_KEYBOARD_NEWTON=m
-CONFIG_KEYBOARD_OPENCORES=m
-CONFIG_KEYBOARD_STOWAWAY=m
-CONFIG_KEYBOARD_SUNKBD=m
-CONFIG_KEYBOARD_XTKBD=m
-# CONFIG_INPUT_MOUSE is not set
+# CONFIG_KEYBOARD_TCA6416 is not set
+# CONFIG_KEYBOARD_TCA8418 is not set
+# CONFIG_KEYBOARD_MATRIX is not set
+# CONFIG_KEYBOARD_LM8323 is not set
+CONFIG_KEYBOARD_LM8333=m
+# CONFIG_KEYBOARD_MAX7359 is not set
+# CONFIG_KEYBOARD_MCS is not set
+# CONFIG_KEYBOARD_MPR121 is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_OPENCORES is not set
+# CONFIG_KEYBOARD_SAMSUNG is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=m
+CONFIG_MOUSE_PS2_ALPS=y
+CONFIG_MOUSE_PS2_LOGIPS2PP=y
+CONFIG_MOUSE_PS2_SYNAPTICS=y
+CONFIG_MOUSE_PS2_CYPRESS=y
+CONFIG_MOUSE_PS2_LIFEBOOK=y
+CONFIG_MOUSE_PS2_TRACKPOINT=y
+CONFIG_MOUSE_PS2_ELANTECH=y
+CONFIG_MOUSE_PS2_SENTELIC=y
+CONFIG_MOUSE_PS2_TOUCHKIT=y
+CONFIG_MOUSE_SERIAL=m
+CONFIG_MOUSE_APPLETOUCH=m
+CONFIG_MOUSE_BCM5974=m
+CONFIG_MOUSE_CYAPA=m
+# CONFIG_MOUSE_INPORT is not set
+# CONFIG_MOUSE_LOGIBM is not set
+# CONFIG_MOUSE_PC110PAD is not set
+CONFIG_MOUSE_VSXXXAA=m
+# CONFIG_MOUSE_GPIO is not set
+CONFIG_MOUSE_SYNAPTICS_I2C=m
+CONFIG_MOUSE_SYNAPTICS_USB=m
 # CONFIG_INPUT_JOYSTICK is not set
 # CONFIG_INPUT_TABLET is not set
 # CONFIG_INPUT_TOUCHSCREEN is not set
 CONFIG_INPUT_MISC=y
-CONFIG_INPUT_AD714X=m
-CONFIG_INPUT_AD714X_I2C=m
-CONFIG_INPUT_BMA150=m
+# CONFIG_INPUT_AD714X is not set
+# CONFIG_INPUT_BMA150 is not set
 CONFIG_INPUT_PCSPKR=m
 # CONFIG_INPUT_MMA8450 is not set
 # CONFIG_INPUT_MPU3050 is not set
 CONFIG_INPUT_APANEL=m
+# CONFIG_INPUT_GP2A is not set
+# CONFIG_INPUT_GPIO_TILT_POLLED is not set
 # CONFIG_INPUT_WISTRON_BTNS is not set
-# CONFIG_INPUT_ATLAS_BTNS is not set
+CONFIG_INPUT_ATLAS_BTNS=m
 CONFIG_INPUT_ATI_REMOTE2=m
 CONFIG_INPUT_KEYSPAN_REMOTE=m
 # CONFIG_INPUT_KXTJ9 is not set
 CONFIG_INPUT_POWERMATE=m
 CONFIG_INPUT_YEALINK=m
 CONFIG_INPUT_CM109=m
-# CONFIG_INPUT_UINPUT is not set
-CONFIG_INPUT_PCF50633_PMU=m
-CONFIG_INPUT_PCF8574=m
+CONFIG_INPUT_RETU_PWRBUTTON=m
+CONFIG_INPUT_UINPUT=m
+# CONFIG_INPUT_PCF8574 is not set
 CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
 # CONFIG_INPUT_ADXL34X is not set
+# CONFIG_INPUT_IMS_PCU is not set
 # CONFIG_INPUT_CMA3000 is not set
 
 #
@@ -2345,123 +2549,134 @@ CONFIG_SERIO_SERPORT=y
 # CONFIG_SERIO_PARKBD is not set
 # CONFIG_SERIO_PCIPS2 is not set
 CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
+CONFIG_SERIO_RAW=m
 CONFIG_SERIO_ALTERA_PS2=m
-CONFIG_SERIO_PS2MULT=m
+# CONFIG_SERIO_PS2MULT is not set
+CONFIG_SERIO_ARC_PS2=m
 # CONFIG_GAMEPORT is not set
 
 #
 # Character devices
 #
+CONFIG_TTY=y
 CONFIG_VT=y
 CONFIG_CONSOLE_TRANSLATIONS=y
 CONFIG_VT_CONSOLE=y
 CONFIG_VT_CONSOLE_SLEEP=y
 CONFIG_HW_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
+CONFIG_VT_HW_CONSOLE_BINDING=y
 CONFIG_UNIX98_PTYS=y
-# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
+CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
 # CONFIG_LEGACY_PTYS is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
+CONFIG_SERIAL_NONSTANDARD=y
+CONFIG_ROCKETPORT=m
+CONFIG_CYCLADES=m
+# CONFIG_CYZ_INTR is not set
+# CONFIG_MOXA_INTELLIO is not set
+# CONFIG_MOXA_SMARTIO is not set
+CONFIG_SYNCLINK=m
+CONFIG_SYNCLINKMP=m
+CONFIG_SYNCLINK_GT=m
 CONFIG_NOZOMI=m
+# CONFIG_ISI is not set
+CONFIG_N_HDLC=m
 CONFIG_N_GSM=m
 # CONFIG_TRACE_SINK is not set
-CONFIG_DEVKMEM=y
+# CONFIG_DEVKMEM is not set
+# CONFIG_STALDRV is not set
 
 #
 # Serial drivers
 #
 CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
+CONFIG_SERIAL_8250_PNP=y
 CONFIG_SERIAL_8250_CONSOLE=y
 CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_SERIAL_8250_DMA=y
 CONFIG_SERIAL_8250_PCI=y
-CONFIG_SERIAL_8250_PNP=y
-CONFIG_SERIAL_8250_CS=m
+# CONFIG_SERIAL_8250_CS is not set
 CONFIG_SERIAL_8250_NR_UARTS=4
 CONFIG_SERIAL_8250_RUNTIME_UARTS=4
 CONFIG_SERIAL_8250_EXTENDED=y
 CONFIG_SERIAL_8250_MANY_PORTS=y
-CONFIG_SERIAL_8250_FOURPORT=m
-CONFIG_SERIAL_8250_ACCENT=m
-CONFIG_SERIAL_8250_BOCA=m
-CONFIG_SERIAL_8250_EXAR_ST16C554=m
-CONFIG_SERIAL_8250_HUB6=m
+# CONFIG_SERIAL_8250_FOURPORT is not set
+# CONFIG_SERIAL_8250_ACCENT is not set
+# CONFIG_SERIAL_8250_BOCA is not set
+# CONFIG_SERIAL_8250_EXAR_ST16C554 is not set
+# CONFIG_SERIAL_8250_HUB6 is not set
 CONFIG_SERIAL_8250_SHARE_IRQ=y
-CONFIG_SERIAL_8250_DETECT_IRQ=y
+# CONFIG_SERIAL_8250_DETECT_IRQ is not set
 CONFIG_SERIAL_8250_RSA=y
-# CONFIG_SERIAL_8250_MCA is not set
+CONFIG_SERIAL_8250_DW=m
 
 #
 # Non-8250 serial port support
 #
-CONFIG_SERIAL_MFD_HSU=m
-CONFIG_SERIAL_UARTLITE=m
+# CONFIG_SERIAL_MFD_HSU is not set
 CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
-# CONFIG_SERIAL_JSM is not set
-CONFIG_SERIAL_TIMBERDALE=m
-CONFIG_SERIAL_ALTERA_JTAGUART=m
-CONFIG_SERIAL_ALTERA_UART=m
-CONFIG_SERIAL_ALTERA_UART_MAXPORTS=4
-CONFIG_SERIAL_ALTERA_UART_BAUDRATE=115200
-CONFIG_SERIAL_PCH_UART=m
-CONFIG_SERIAL_XILINX_PS_UART=m
+CONFIG_SERIAL_JSM=m
+CONFIG_SERIAL_SCCNXP=m
+# CONFIG_SERIAL_TIMBERDALE is not set
+# CONFIG_SERIAL_ALTERA_JTAGUART is not set
+# CONFIG_SERIAL_ALTERA_UART is not set
+# CONFIG_SERIAL_PCH_UART is not set
+CONFIG_SERIAL_ARC=m
+CONFIG_SERIAL_ARC_NR_PORTS=1
+CONFIG_SERIAL_RP2=m
+CONFIG_SERIAL_RP2_NR_UARTS=32
+# CONFIG_TTY_PRINTK is not set
 CONFIG_PRINTER=m
-# CONFIG_LP_CONSOLE is not set
+CONFIG_LP_CONSOLE=y
 CONFIG_PPDEV=m
 CONFIG_HVC_DRIVER=y
 CONFIG_VIRTIO_CONSOLE=y
 CONFIG_IPMI_HANDLER=m
-CONFIG_IPMI_PANIC_EVENT=y
-# CONFIG_IPMI_PANIC_STRING is not set
+# CONFIG_IPMI_PANIC_EVENT is not set
 CONFIG_IPMI_DEVICE_INTERFACE=m
 CONFIG_IPMI_SI=m
 CONFIG_IPMI_WATCHDOG=m
 CONFIG_IPMI_POWEROFF=m
-CONFIG_HW_RANDOM=m
+CONFIG_HW_RANDOM=y
 CONFIG_HW_RANDOM_TIMERIOMEM=m
 CONFIG_HW_RANDOM_INTEL=m
 CONFIG_HW_RANDOM_AMD=m
+CONFIG_HW_RANDOM_ATMEL=m
 CONFIG_HW_RANDOM_GEODE=m
 CONFIG_HW_RANDOM_VIA=m
 CONFIG_HW_RANDOM_VIRTIO=m
-CONFIG_NVRAM=m
+CONFIG_HW_RANDOM_EXYNOS=m
+CONFIG_NVRAM=y
 # CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
+CONFIG_R3964=m
 # CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
+CONFIG_SONYPI=m
 
 #
 # PCMCIA character devices
 #
-CONFIG_SYNCLINK_CS=m
+# CONFIG_SYNCLINK_CS is not set
 # CONFIG_CARDMAN_4000 is not set
 # CONFIG_CARDMAN_4040 is not set
-CONFIG_IPWIRELESS=m
+# CONFIG_IPWIRELESS is not set
 CONFIG_MWAVE=m
-CONFIG_SCx200_GPIO=m
+# CONFIG_SCx200_GPIO is not set
 CONFIG_PC8736x_GPIO=m
 CONFIG_NSC_GPIO=m
-# CONFIG_RAW_DRIVER is not set
+CONFIG_RAW_DRIVER=y
+CONFIG_MAX_RAW_DEVS=8192
 CONFIG_HPET=y
-CONFIG_HPET_MMAP=y
+# CONFIG_HPET_MMAP is not set
 CONFIG_HANGCHECK_TIMER=m
 # CONFIG_TCG_TPM is not set
 # CONFIG_TELCLOCK is not set
 CONFIG_DEVPORT=y
-# CONFIG_RAMOOPS is not set
 CONFIG_I2C=m
 CONFIG_I2C_BOARDINFO=y
 CONFIG_I2C_COMPAT=y
 CONFIG_I2C_CHARDEV=m
-CONFIG_I2C_MUX=m
-
-#
-# Multiplexer I2C Chip support
-#
-CONFIG_I2C_MUX_GPIO=m
-CONFIG_I2C_MUX_PCA9541=m
-CONFIG_I2C_MUX_PCA954x=m
+# CONFIG_I2C_MUX is not set
 CONFIG_I2C_HELPER_AUTO=y
 CONFIG_I2C_SMBUS=m
 CONFIG_I2C_ALGOBIT=m
@@ -2482,6 +2697,7 @@ CONFIG_I2C_AMD756_S4882=m
 CONFIG_I2C_AMD8111=m
 CONFIG_I2C_I801=m
 CONFIG_I2C_ISCH=m
+CONFIG_I2C_ISMT=m
 CONFIG_I2C_PIIX4=m
 CONFIG_I2C_NFORCE2=m
 CONFIG_I2C_NFORCE2_S4985=m
@@ -2499,16 +2715,18 @@ CONFIG_I2C_SCMI=m
 #
 # I2C system bus drivers (mostly embedded / system-on-chip)
 #
+CONFIG_I2C_CBUS_GPIO=m
 CONFIG_I2C_DESIGNWARE_CORE=m
-CONFIG_I2C_DESIGNWARE_PCI=m
-CONFIG_I2C_GPIO=m
-CONFIG_I2C_INTEL_MID=m
-CONFIG_I2C_OCORES=m
+CONFIG_I2C_DESIGNWARE_PLATFORM=m
+# CONFIG_I2C_DESIGNWARE_PCI is not set
+# CONFIG_I2C_EG20T is not set
+# CONFIG_I2C_GPIO is not set
+# CONFIG_I2C_INTEL_MID is not set
+# CONFIG_I2C_OCORES is not set
 CONFIG_I2C_PCA_PLATFORM=m
 # CONFIG_I2C_PXA_PCI is not set
 CONFIG_I2C_SIMTEC=m
-CONFIG_I2C_XILINX=m
-CONFIG_I2C_EG20T=m
+# CONFIG_I2C_XILINX is not set
 
 #
 # External I2C/SMBus adapter drivers
@@ -2516,21 +2734,33 @@ CONFIG_I2C_EG20T=m
 CONFIG_I2C_DIOLAN_U2C=m
 CONFIG_I2C_PARPORT=m
 CONFIG_I2C_PARPORT_LIGHT=m
-CONFIG_I2C_TAOS_EVM=m
+# CONFIG_I2C_TAOS_EVM is not set
 CONFIG_I2C_TINY_USB=m
+CONFIG_I2C_VIPERBOARD=m
 
 #
 # Other I2C/SMBus bus drivers
 #
-CONFIG_I2C_PCA_ISA=m
-CONFIG_I2C_STUB=m
-# CONFIG_SCx200_I2C is not set
+# CONFIG_I2C_PCA_ISA is not set
 CONFIG_SCx200_ACB=m
+# CONFIG_I2C_STUB is not set
 # CONFIG_I2C_DEBUG_CORE is not set
 # CONFIG_I2C_DEBUG_ALGO is not set
 # CONFIG_I2C_DEBUG_BUS is not set
 # CONFIG_SPI is not set
 
+#
+# Qualcomm MSM SSBI bus support
+#
+# CONFIG_SSBI is not set
+CONFIG_HSI=m
+CONFIG_HSI_BOARDINFO=y
+
+#
+# HSI clients
+#
+CONFIG_HSI_CHAR=m
+
 #
 # PPS support
 #
@@ -2553,67 +2783,76 @@ CONFIG_PPS=m
 # PTP clock support
 #
 CONFIG_PTP_1588_CLOCK=m
-CONFIG_DP83640_PHY=m
+
+#
+# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.
+#
+CONFIG_PTP_1588_CLOCK_PCH=m
 CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
+CONFIG_GPIO_DEVRES=y
 CONFIG_GPIOLIB=y
+CONFIG_GPIO_ACPI=y
 # CONFIG_DEBUG_GPIO is not set
 CONFIG_GPIO_SYSFS=y
-CONFIG_GPIO_GENERIC=m
-CONFIG_GPIO_MAX730X=m
 
 #
 # Memory mapped GPIO drivers:
 #
-CONFIG_GPIO_GENERIC_PLATFORM=m
-CONFIG_GPIO_IT8761E=m
+# CONFIG_GPIO_GENERIC_PLATFORM is not set
+# CONFIG_GPIO_IT8761E is not set
+CONFIG_GPIO_TS5500=m
 CONFIG_GPIO_SCH=m
-CONFIG_GPIO_VX855=m
+CONFIG_GPIO_ICH=m
+# CONFIG_GPIO_VX855 is not set
+# CONFIG_GPIO_LYNXPOINT is not set
 
 #
 # I2C GPIO expanders:
 #
-CONFIG_GPIO_MAX7300=m
-CONFIG_GPIO_MAX732X=m
-CONFIG_GPIO_PCA953X=m
-CONFIG_GPIO_PCF857X=m
-CONFIG_GPIO_ADP5588=m
+# CONFIG_GPIO_MAX7300 is not set
+# CONFIG_GPIO_MAX732X is not set
+# CONFIG_GPIO_PCA953X is not set
+# CONFIG_GPIO_PCF857X is not set
+# CONFIG_GPIO_ADP5588 is not set
 
 #
 # PCI GPIO expanders:
 #
-CONFIG_GPIO_CS5535=m
-# CONFIG_GPIO_BT8XX is not set
+# CONFIG_GPIO_CS5535 is not set
+# CONFIG_GPIO_AMD8111 is not set
 # CONFIG_GPIO_LANGWELL is not set
-CONFIG_GPIO_PCH=m
-CONFIG_GPIO_ML_IOH=m
-# CONFIG_GPIO_TIMBERDALE is not set
-CONFIG_GPIO_RDC321X=m
+# CONFIG_GPIO_PCH is not set
+# CONFIG_GPIO_ML_IOH is not set
+# CONFIG_GPIO_RDC321X is not set
 
 #
 # SPI GPIO expanders:
 #
-CONFIG_GPIO_MCP23S08=m
+# CONFIG_GPIO_MCP23S08 is not set
 
 #
 # AC97 GPIO expanders:
 #
-# CONFIG_GPIO_UCB1400 is not set
 
 #
 # MODULbus GPIO expanders:
 #
-CONFIG_GPIO_JANZ_TTL=m
+
+#
+# USB GPIO expanders:
+#
+CONFIG_GPIO_VIPERBOARD=m
 CONFIG_W1=m
 CONFIG_W1_CON=y
 
 #
 # 1-wire Bus Masters
 #
-CONFIG_W1_MASTER_MATROX=m
+# CONFIG_W1_MASTER_MATROX is not set
 CONFIG_W1_MASTER_DS2490=m
 CONFIG_W1_MASTER_DS2482=m
 CONFIG_W1_MASTER_DS1WM=m
-CONFIG_W1_MASTER_GPIO=m
+# CONFIG_W1_MASTER_GPIO is not set
 
 #
 # 1-wire Slaves
@@ -2621,29 +2860,39 @@ CONFIG_W1_MASTER_GPIO=m
 CONFIG_W1_SLAVE_THERM=m
 CONFIG_W1_SLAVE_SMEM=m
 CONFIG_W1_SLAVE_DS2408=m
+CONFIG_W1_SLAVE_DS2408_READBACK=y
+CONFIG_W1_SLAVE_DS2413=m
 CONFIG_W1_SLAVE_DS2423=m
 CONFIG_W1_SLAVE_DS2431=m
 CONFIG_W1_SLAVE_DS2433=m
 CONFIG_W1_SLAVE_DS2433_CRC=y
 CONFIG_W1_SLAVE_DS2760=m
 CONFIG_W1_SLAVE_DS2780=m
+CONFIG_W1_SLAVE_DS2781=m
+CONFIG_W1_SLAVE_DS28E04=m
 CONFIG_W1_SLAVE_BQ27000=m
 CONFIG_POWER_SUPPLY=y
 # CONFIG_POWER_SUPPLY_DEBUG is not set
 # CONFIG_PDA_POWER is not set
+CONFIG_GENERIC_ADC_BATTERY=m
 # CONFIG_TEST_POWER is not set
 # CONFIG_BATTERY_DS2760 is not set
 # CONFIG_BATTERY_DS2780 is not set
+# CONFIG_BATTERY_DS2781 is not set
 # CONFIG_BATTERY_DS2782 is not set
-# CONFIG_BATTERY_BQ20Z75 is not set
+# CONFIG_BATTERY_SBS is not set
 # CONFIG_BATTERY_BQ27x00 is not set
 # CONFIG_BATTERY_MAX17040 is not set
 # CONFIG_BATTERY_MAX17042 is not set
-# CONFIG_CHARGER_PCF50633 is not set
-# CONFIG_CHARGER_ISP1704 is not set
 # CONFIG_CHARGER_MAX8903 is not set
+# CONFIG_CHARGER_LP8727 is not set
 # CONFIG_CHARGER_GPIO is not set
-CONFIG_HWMON=m
+# CONFIG_CHARGER_BQ2415X is not set
+# CONFIG_CHARGER_SMB347 is not set
+# CONFIG_BATTERY_GOLDFISH is not set
+CONFIG_POWER_RESET=y
+CONFIG_POWER_AVS=y
+CONFIG_HWMON=y
 CONFIG_HWMON_VID=m
 # CONFIG_HWMON_DEBUG_CHIP is not set
 
@@ -2660,6 +2909,8 @@ CONFIG_SENSORS_ADM1026=m
 CONFIG_SENSORS_ADM1029=m
 CONFIG_SENSORS_ADM1031=m
 CONFIG_SENSORS_ADM9240=m
+CONFIG_SENSORS_ADT7X10=m
+CONFIG_SENSORS_ADT7410=m
 CONFIG_SENSORS_ADT7411=m
 CONFIG_SENSORS_ADT7462=m
 CONFIG_SENSORS_ADT7470=m
@@ -2680,12 +2931,14 @@ CONFIG_SENSORS_FSCHMD=m
 CONFIG_SENSORS_G760A=m
 CONFIG_SENSORS_GL518SM=m
 CONFIG_SENSORS_GL520SM=m
-CONFIG_SENSORS_GPIO_FAN=m
+# CONFIG_SENSORS_GPIO_FAN is not set
+CONFIG_SENSORS_HIH6130=m
 CONFIG_SENSORS_CORETEMP=m
 CONFIG_SENSORS_IBMAEM=m
 CONFIG_SENSORS_IBMPEX=m
+# CONFIG_SENSORS_IIO_HWMON is not set
 CONFIG_SENSORS_IT87=m
-CONFIG_SENSORS_JC42=m
+# CONFIG_SENSORS_JC42 is not set
 CONFIG_SENSORS_LINEAGE=m
 CONFIG_SENSORS_LM63=m
 CONFIG_SENSORS_LM73=m
@@ -2703,14 +2956,19 @@ CONFIG_SENSORS_LTC4151=m
 CONFIG_SENSORS_LTC4215=m
 CONFIG_SENSORS_LTC4245=m
 CONFIG_SENSORS_LTC4261=m
+CONFIG_SENSORS_LM95234=m
 CONFIG_SENSORS_LM95241=m
 CONFIG_SENSORS_LM95245=m
 CONFIG_SENSORS_MAX16065=m
 CONFIG_SENSORS_MAX1619=m
 CONFIG_SENSORS_MAX1668=m
+CONFIG_SENSORS_MAX197=m
 CONFIG_SENSORS_MAX6639=m
 CONFIG_SENSORS_MAX6642=m
 CONFIG_SENSORS_MAX6650=m
+CONFIG_SENSORS_MAX6697=m
+CONFIG_SENSORS_MCP3021=m
+CONFIG_SENSORS_NCT6775=m
 CONFIG_SENSORS_NTC_THERMISTOR=m
 CONFIG_SENSORS_PC87360=m
 CONFIG_SENSORS_PC87427=m
@@ -2719,20 +2977,20 @@ CONFIG_PMBUS=m
 CONFIG_SENSORS_PMBUS=m
 CONFIG_SENSORS_ADM1275=m
 CONFIG_SENSORS_LM25066=m
-CONFIG_SENSORS_LTC2978=m
+# CONFIG_SENSORS_LTC2978 is not set
 CONFIG_SENSORS_MAX16064=m
 CONFIG_SENSORS_MAX34440=m
 CONFIG_SENSORS_MAX8688=m
 CONFIG_SENSORS_UCD9000=m
 CONFIG_SENSORS_UCD9200=m
-CONFIG_SENSORS_ZL6100=m
+# CONFIG_SENSORS_ZL6100 is not set
 CONFIG_SENSORS_SHT15=m
 CONFIG_SENSORS_SHT21=m
 CONFIG_SENSORS_SIS5595=m
-CONFIG_SENSORS_SMM665=m
+# CONFIG_SENSORS_SMM665 is not set
 CONFIG_SENSORS_DME1737=m
 CONFIG_SENSORS_EMC1403=m
-CONFIG_SENSORS_EMC2103=m
+# CONFIG_SENSORS_EMC2103 is not set
 CONFIG_SENSORS_EMC6W201=m
 CONFIG_SENSORS_SMSC47M1=m
 CONFIG_SENSORS_SMSC47M192=m
@@ -2743,6 +3001,8 @@ CONFIG_SENSORS_SCH5636=m
 CONFIG_SENSORS_ADS1015=m
 CONFIG_SENSORS_ADS7828=m
 CONFIG_SENSORS_AMC6821=m
+CONFIG_SENSORS_INA209=m
+CONFIG_SENSORS_INA2XX=m
 CONFIG_SENSORS_THMC50=m
 CONFIG_SENSORS_TMP102=m
 CONFIG_SENSORS_TMP401=m
@@ -2769,51 +3029,64 @@ CONFIG_SENSORS_APPLESMC=m
 CONFIG_SENSORS_ACPI_POWER=m
 CONFIG_SENSORS_ATK0110=m
 CONFIG_THERMAL=y
+CONFIG_THERMAL_HWMON=y
+CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
+# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set
+# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
+CONFIG_THERMAL_GOV_FAIR_SHARE=y
+CONFIG_THERMAL_GOV_STEP_WISE=y
+CONFIG_THERMAL_GOV_USER_SPACE=y
+CONFIG_CPU_THERMAL=y
+CONFIG_THERMAL_EMULATION=y
+CONFIG_INTEL_POWERCLAMP=m
 CONFIG_WATCHDOG=y
 CONFIG_WATCHDOG_CORE=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
+CONFIG_WATCHDOG_NOWAYOUT=y
 
 #
 # Watchdog Device Drivers
 #
 CONFIG_SOFT_WATCHDOG=m
-CONFIG_ACQUIRE_WDT=m
-CONFIG_ADVANTECH_WDT=m
+CONFIG_RETU_WATCHDOG=m
+# CONFIG_ACQUIRE_WDT is not set
+# CONFIG_ADVANTECH_WDT is not set
 CONFIG_ALIM1535_WDT=m
 CONFIG_ALIM7101_WDT=m
 CONFIG_F71808E_WDT=m
 CONFIG_SP5100_TCO=m
 CONFIG_GEODE_WDT=m
-CONFIG_SC520_WDT=m
+# CONFIG_SC520_WDT is not set
 CONFIG_SBC_FITPC2_WATCHDOG=m
-CONFIG_EUROTECH_WDT=m
+# CONFIG_EUROTECH_WDT is not set
 CONFIG_IB700_WDT=m
 CONFIG_IBMASR=m
-CONFIG_WAFER_WDT=m
+# CONFIG_WAFER_WDT is not set
 CONFIG_I6300ESB_WDT=m
+CONFIG_IE6XX_WDT=m
 CONFIG_ITCO_WDT=m
 # CONFIG_ITCO_VENDOR_SUPPORT is not set
 CONFIG_IT8712F_WDT=m
 CONFIG_IT87_WDT=m
 CONFIG_HP_WATCHDOG=m
 CONFIG_HPWDT_NMI_DECODING=y
-CONFIG_SC1200_WDT=m
-CONFIG_SCx200_WDT=m
-CONFIG_PC87413_WDT=m
+# CONFIG_SC1200_WDT is not set
+# CONFIG_SCx200_WDT is not set
+# CONFIG_PC87413_WDT is not set
 CONFIG_NV_TCO=m
-CONFIG_60XX_WDT=m
-CONFIG_SBC8360_WDT=m
-CONFIG_SBC7240_WDT=m
-CONFIG_CPU5_WDT=m
+# CONFIG_60XX_WDT is not set
+# CONFIG_SBC8360_WDT is not set
+# CONFIG_SBC7240_WDT is not set
+# CONFIG_CPU5_WDT is not set
 CONFIG_SMSC_SCH311X_WDT=m
-CONFIG_SMSC37B787_WDT=m
+# CONFIG_SMSC37B787_WDT is not set
+CONFIG_VIA_WDT=m
 CONFIG_W83627HF_WDT=m
 CONFIG_W83697HF_WDT=m
 CONFIG_W83697UG_WDT=m
 CONFIG_W83877F_WDT=m
 CONFIG_W83977F_WDT=m
 CONFIG_MACHZ_WDT=m
-CONFIG_SBC_EPX_C3_WATCHDOG=m
+# CONFIG_SBC_EPX_C3_WATCHDOG is not set
 
 #
 # ISA-based Watchdog Cards
@@ -2839,397 +3112,629 @@ CONFIG_SSB_POSSIBLE=y
 #
 CONFIG_SSB=m
 CONFIG_SSB_SPROM=y
+CONFIG_SSB_BLOCKIO=y
 CONFIG_SSB_PCIHOST_POSSIBLE=y
 CONFIG_SSB_PCIHOST=y
-# CONFIG_SSB_B43_PCI_BRIDGE is not set
+CONFIG_SSB_B43_PCI_BRIDGE=y
 CONFIG_SSB_PCMCIAHOST_POSSIBLE=y
 CONFIG_SSB_PCMCIAHOST=y
 CONFIG_SSB_SDIOHOST_POSSIBLE=y
 CONFIG_SSB_SDIOHOST=y
-# CONFIG_SSB_DEBUG is not set
+CONFIG_SSB_SILENT=y
 CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
 CONFIG_SSB_DRIVER_PCICORE=y
+CONFIG_SSB_DRIVER_GPIO=y
 CONFIG_BCMA_POSSIBLE=y
 
 #
 # Broadcom specific AMBA
 #
-CONFIG_BCMA=m
-CONFIG_BCMA_HOST_PCI_POSSIBLE=y
-# CONFIG_BCMA_HOST_PCI is not set
-# CONFIG_BCMA_DEBUG is not set
+# CONFIG_BCMA is not set
 
 #
 # Multifunction device drivers
 #
 CONFIG_MFD_CORE=m
-CONFIG_MFD_SM501=m
-# CONFIG_MFD_SM501_GPIO is not set
-CONFIG_HTC_PASIC3=m
-CONFIG_UCB1400_CORE=m
-CONFIG_TPS6105X=m
-CONFIG_TPS65010=m
-CONFIG_TPS6507X=m
-# CONFIG_MFD_TMIO is not set
-CONFIG_MFD_WM8400=m
-CONFIG_MFD_PCF50633=m
-CONFIG_PCF50633_ADC=m
-CONFIG_PCF50633_GPIO=m
-# CONFIG_ABX500_CORE is not set
 CONFIG_MFD_CS5535=m
-CONFIG_MFD_TIMBERDALE=m
+# CONFIG_MFD_CROS_EC is not set
+# CONFIG_MFD_MC13XXX_I2C is not set
+# CONFIG_HTC_PASIC3 is not set
+CONFIG_LPC_ICH=m
 CONFIG_LPC_SCH=m
-CONFIG_MFD_RDC321X=m
-CONFIG_MFD_JANZ_CMODIO=m
-CONFIG_MFD_VX855=m
+# CONFIG_MFD_JANZ_CMODIO is not set
+CONFIG_MFD_VIPERBOARD=m
+CONFIG_MFD_RETU=m
+# CONFIG_MFD_PCF50633 is not set
+# CONFIG_UCB1400_CORE is not set
+# CONFIG_MFD_RDC321X is not set
+CONFIG_MFD_RTSX_PCI=m
+# CONFIG_MFD_SI476X_CORE is not set
+CONFIG_MFD_SM501=m
+CONFIG_MFD_SM501_GPIO=y
+# CONFIG_ABX500_CORE is not set
+# CONFIG_MFD_SYSCON is not set
+# CONFIG_MFD_TI_AM335X_TSCADC is not set
+# CONFIG_TPS6105X is not set
+# CONFIG_TPS65010 is not set
+# CONFIG_TPS6507X is not set
+# CONFIG_MFD_TPS65217 is not set
+# CONFIG_MFD_TPS65912 is not set
 CONFIG_MFD_WL1273_CORE=m
-CONFIG_REGULATOR=y
-# CONFIG_REGULATOR_DEBUG is not set
-# CONFIG_REGULATOR_DUMMY is not set
-CONFIG_REGULATOR_FIXED_VOLTAGE=m
-# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
-# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
-CONFIG_REGULATOR_GPIO=m
-# CONFIG_REGULATOR_BQ24022 is not set
-# CONFIG_REGULATOR_MAX1586 is not set
-# CONFIG_REGULATOR_MAX8649 is not set
-# CONFIG_REGULATOR_MAX8660 is not set
-# CONFIG_REGULATOR_MAX8952 is not set
-# CONFIG_REGULATOR_WM8400 is not set
-# CONFIG_REGULATOR_PCF50633 is not set
-# CONFIG_REGULATOR_LP3971 is not set
-# CONFIG_REGULATOR_LP3972 is not set
-# CONFIG_REGULATOR_TPS6105X is not set
-# CONFIG_REGULATOR_TPS65023 is not set
-# CONFIG_REGULATOR_TPS6507X is not set
-# CONFIG_REGULATOR_ISL6271A is not set
-# CONFIG_REGULATOR_AD5398 is not set
+CONFIG_MFD_LM3533=m
+# CONFIG_MFD_TIMBERDALE is not set
+# CONFIG_MFD_TMIO is not set
+CONFIG_MFD_VX855=m
+# CONFIG_MFD_ARIZONA_I2C is not set
+# CONFIG_REGULATOR is not set
 CONFIG_MEDIA_SUPPORT=m
 
 #
 # Multimedia core support
 #
+CONFIG_MEDIA_CAMERA_SUPPORT=y
+CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
+CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
+# CONFIG_MEDIA_RADIO_SUPPORT is not set
+CONFIG_MEDIA_RC_SUPPORT=y
 CONFIG_MEDIA_CONTROLLER=y
 CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L2_COMMON=m
 CONFIG_VIDEO_V4L2_SUBDEV_API=y
+CONFIG_VIDEO_V4L2=m
+# CONFIG_VIDEO_ADV_DEBUG is not set
+# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
+CONFIG_VIDEO_TUNER=m
+CONFIG_V4L2_MEM2MEM_DEV=m
+CONFIG_VIDEOBUF_GEN=m
+CONFIG_VIDEOBUF_DMA_SG=m
+CONFIG_VIDEOBUF_VMALLOC=m
+CONFIG_VIDEOBUF_DMA_CONTIG=m
+CONFIG_VIDEOBUF_DVB=m
+CONFIG_VIDEOBUF2_CORE=m
+CONFIG_VIDEOBUF2_MEMOPS=m
+CONFIG_VIDEOBUF2_DMA_CONTIG=m
+CONFIG_VIDEOBUF2_VMALLOC=m
+CONFIG_VIDEO_V4L2_INT_DEVICE=m
 CONFIG_DVB_CORE=m
 CONFIG_DVB_NET=y
-CONFIG_VIDEO_MEDIA=m
+CONFIG_TTPCI_EEPROM=m
+CONFIG_DVB_MAX_ADAPTERS=8
+CONFIG_DVB_DYNAMIC_MINORS=y
 
 #
-# Multimedia drivers
+# Media drivers
 #
 CONFIG_RC_CORE=m
-CONFIG_LIRC=m
 CONFIG_RC_MAP=m
-# CONFIG_IR_NEC_DECODER is not set
-# CONFIG_IR_RC5_DECODER is not set
-# CONFIG_IR_RC6_DECODER is not set
-# CONFIG_IR_JVC_DECODER is not set
-# CONFIG_IR_SONY_DECODER is not set
-# CONFIG_IR_RC5_SZ_DECODER is not set
-# CONFIG_IR_MCE_KBD_DECODER is not set
-# CONFIG_IR_LIRC_CODEC is not set
-# CONFIG_RC_ATI_REMOTE is not set
-# CONFIG_IR_ENE is not set
-# CONFIG_IR_IMON is not set
-# CONFIG_IR_MCEUSB is not set
-# CONFIG_IR_ITE_CIR is not set
-# CONFIG_IR_FINTEK is not set
-# CONFIG_IR_NUVOTON is not set
-# CONFIG_IR_REDRAT3 is not set
-# CONFIG_IR_STREAMZAP is not set
-# CONFIG_IR_WINBOND_CIR is not set
-# CONFIG_RC_LOOPBACK is not set
-CONFIG_MEDIA_ATTACH=y
-CONFIG_MEDIA_TUNER=m
-# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
-CONFIG_MEDIA_TUNER_SIMPLE=m
-CONFIG_MEDIA_TUNER_TDA8290=m
-CONFIG_MEDIA_TUNER_TDA827X=m
-CONFIG_MEDIA_TUNER_TDA18271=m
-CONFIG_MEDIA_TUNER_TDA9887=m
-CONFIG_MEDIA_TUNER_TEA5761=m
-CONFIG_MEDIA_TUNER_TEA5767=m
-CONFIG_MEDIA_TUNER_MT20XX=m
-CONFIG_MEDIA_TUNER_XC2028=m
-CONFIG_MEDIA_TUNER_XC5000=m
-CONFIG_MEDIA_TUNER_XC4000=m
-CONFIG_MEDIA_TUNER_MC44S803=m
-CONFIG_VIDEO_V4L2=m
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
-# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set
-CONFIG_VIDEO_IR_I2C=m
-
-#
-# Encoders, decoders, sensors and other helper chips
-#
-
-#
-# Audio decoders, processors and mixers
-#
-# CONFIG_VIDEO_TVAUDIO is not set
-# CONFIG_VIDEO_TDA7432 is not set
-# CONFIG_VIDEO_TDA9840 is not set
-# CONFIG_VIDEO_TEA6415C is not set
-# CONFIG_VIDEO_TEA6420 is not set
-# CONFIG_VIDEO_MSP3400 is not set
-# CONFIG_VIDEO_CS5345 is not set
-# CONFIG_VIDEO_CS53L32A is not set
-# CONFIG_VIDEO_TLV320AIC23B is not set
-# CONFIG_VIDEO_WM8775 is not set
-# CONFIG_VIDEO_WM8739 is not set
-# CONFIG_VIDEO_VP27SMPX is not set
-
-#
-# RDS decoders
-#
-# CONFIG_VIDEO_SAA6588 is not set
-
-#
-# Video decoders
-#
-# CONFIG_VIDEO_ADV7180 is not set
-# CONFIG_VIDEO_BT819 is not set
-# CONFIG_VIDEO_BT856 is not set
-# CONFIG_VIDEO_BT866 is not set
-# CONFIG_VIDEO_KS0127 is not set
-# CONFIG_VIDEO_SAA7110 is not set
-# CONFIG_VIDEO_SAA711X is not set
-# CONFIG_VIDEO_SAA7191 is not set
-# CONFIG_VIDEO_TVP514X is not set
-# CONFIG_VIDEO_TVP5150 is not set
-# CONFIG_VIDEO_TVP7002 is not set
-# CONFIG_VIDEO_VPX3220 is not set
-
-#
-# Video and audio decoders
-#
-# CONFIG_VIDEO_SAA717X is not set
-# CONFIG_VIDEO_CX25840 is not set
-
-#
-# MPEG video encoders
-#
-# CONFIG_VIDEO_CX2341X is not set
-
-#
-# Video encoders
-#
-# CONFIG_VIDEO_SAA7127 is not set
-# CONFIG_VIDEO_SAA7185 is not set
-# CONFIG_VIDEO_ADV7170 is not set
-# CONFIG_VIDEO_ADV7175 is not set
-# CONFIG_VIDEO_ADV7343 is not set
-# CONFIG_VIDEO_AK881X is not set
+CONFIG_RC_DECODERS=y
+CONFIG_LIRC=m
+CONFIG_IR_LIRC_CODEC=m
+CONFIG_IR_NEC_DECODER=m
+CONFIG_IR_RC5_DECODER=m
+CONFIG_IR_RC6_DECODER=m
+CONFIG_IR_JVC_DECODER=m
+CONFIG_IR_SONY_DECODER=m
+CONFIG_IR_RC5_SZ_DECODER=m
+CONFIG_IR_SANYO_DECODER=m
+CONFIG_IR_MCE_KBD_DECODER=m
+CONFIG_RC_DEVICES=y
+CONFIG_RC_ATI_REMOTE=m
+CONFIG_IR_ENE=m
+CONFIG_IR_IMON=m
+CONFIG_IR_MCEUSB=m
+CONFIG_IR_ITE_CIR=m
+CONFIG_IR_FINTEK=m
+CONFIG_IR_NUVOTON=m
+CONFIG_IR_REDRAT3=m
+CONFIG_IR_STREAMZAP=m
+CONFIG_IR_WINBOND_CIR=m
+CONFIG_IR_IGUANA=m
+CONFIG_IR_TTUSBIR=m
+CONFIG_RC_LOOPBACK=m
+CONFIG_IR_GPIO_CIR=m
+CONFIG_MEDIA_USB_SUPPORT=y
+
+#
+# Webcam devices
+#
+CONFIG_USB_VIDEO_CLASS=m
+CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
+CONFIG_USB_GSPCA=m
+CONFIG_USB_M5602=m
+CONFIG_USB_STV06XX=m
+CONFIG_USB_GL860=m
+CONFIG_USB_GSPCA_BENQ=m
+CONFIG_USB_GSPCA_CONEX=m
+CONFIG_USB_GSPCA_CPIA1=m
+CONFIG_USB_GSPCA_ETOMS=m
+CONFIG_USB_GSPCA_FINEPIX=m
+CONFIG_USB_GSPCA_JEILINJ=m
+CONFIG_USB_GSPCA_JL2005BCD=m
+CONFIG_USB_GSPCA_KINECT=m
+CONFIG_USB_GSPCA_KONICA=m
+CONFIG_USB_GSPCA_MARS=m
+CONFIG_USB_GSPCA_MR97310A=m
+CONFIG_USB_GSPCA_NW80X=m
+CONFIG_USB_GSPCA_OV519=m
+CONFIG_USB_GSPCA_OV534=m
+CONFIG_USB_GSPCA_OV534_9=m
+CONFIG_USB_GSPCA_PAC207=m
+CONFIG_USB_GSPCA_PAC7302=m
+CONFIG_USB_GSPCA_PAC7311=m
+CONFIG_USB_GSPCA_SE401=m
+CONFIG_USB_GSPCA_SN9C2028=m
+CONFIG_USB_GSPCA_SN9C20X=m
+CONFIG_USB_GSPCA_SONIXB=m
+CONFIG_USB_GSPCA_SONIXJ=m
+CONFIG_USB_GSPCA_SPCA500=m
+CONFIG_USB_GSPCA_SPCA501=m
+CONFIG_USB_GSPCA_SPCA505=m
+CONFIG_USB_GSPCA_SPCA506=m
+CONFIG_USB_GSPCA_SPCA508=m
+CONFIG_USB_GSPCA_SPCA561=m
+CONFIG_USB_GSPCA_SPCA1528=m
+CONFIG_USB_GSPCA_SQ905=m
+CONFIG_USB_GSPCA_SQ905C=m
+CONFIG_USB_GSPCA_SQ930X=m
+CONFIG_USB_GSPCA_STK014=m
+CONFIG_USB_GSPCA_STV0680=m
+CONFIG_USB_GSPCA_SUNPLUS=m
+CONFIG_USB_GSPCA_T613=m
+CONFIG_USB_GSPCA_TOPRO=m
+CONFIG_USB_GSPCA_TV8532=m
+CONFIG_USB_GSPCA_VC032X=m
+CONFIG_USB_GSPCA_VICAM=m
+CONFIG_USB_GSPCA_XIRLINK_CIT=m
+CONFIG_USB_GSPCA_ZC3XX=m
+CONFIG_USB_PWC=m
+# CONFIG_USB_PWC_DEBUG is not set
+CONFIG_USB_PWC_INPUT_EVDEV=y
+CONFIG_VIDEO_CPIA2=m
+CONFIG_USB_ZR364XX=m
+CONFIG_USB_STKWEBCAM=m
+CONFIG_USB_S2255=m
+CONFIG_USB_SN9C102=m
+
+#
+# Analog TV USB devices
+#
+CONFIG_VIDEO_PVRUSB2=m
+CONFIG_VIDEO_PVRUSB2_SYSFS=y
+CONFIG_VIDEO_PVRUSB2_DVB=y
+# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
+CONFIG_VIDEO_HDPVR=m
+CONFIG_VIDEO_TLG2300=m
+CONFIG_VIDEO_USBVISION=m
+CONFIG_VIDEO_STK1160=m
+CONFIG_VIDEO_STK1160_AC97=y
+
+#
+# Analog/digital TV USB devices
+#
+CONFIG_VIDEO_AU0828=m
+CONFIG_VIDEO_AU0828_V4L2=y
+CONFIG_VIDEO_CX231XX=m
+CONFIG_VIDEO_CX231XX_RC=y
+CONFIG_VIDEO_CX231XX_ALSA=m
+CONFIG_VIDEO_CX231XX_DVB=m
+CONFIG_VIDEO_TM6000=m
+CONFIG_VIDEO_TM6000_ALSA=m
+CONFIG_VIDEO_TM6000_DVB=m
+
+#
+# Digital TV USB devices
+#
+CONFIG_DVB_USB=m
+# CONFIG_DVB_USB_DEBUG is not set
+CONFIG_DVB_USB_A800=m
+CONFIG_DVB_USB_DIBUSB_MB=m
+CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y
+CONFIG_DVB_USB_DIBUSB_MC=m
+CONFIG_DVB_USB_DIB0700=m
+CONFIG_DVB_USB_UMT_010=m
+CONFIG_DVB_USB_CXUSB=m
+CONFIG_DVB_USB_M920X=m
+CONFIG_DVB_USB_DIGITV=m
+CONFIG_DVB_USB_VP7045=m
+CONFIG_DVB_USB_VP702X=m
+CONFIG_DVB_USB_GP8PSK=m
+CONFIG_DVB_USB_NOVA_T_USB2=m
+CONFIG_DVB_USB_TTUSB2=m
+CONFIG_DVB_USB_DTT200U=m
+CONFIG_DVB_USB_OPERA1=m
+CONFIG_DVB_USB_AF9005=m
+CONFIG_DVB_USB_AF9005_REMOTE=m
+CONFIG_DVB_USB_PCTV452E=m
+CONFIG_DVB_USB_DW2102=m
+CONFIG_DVB_USB_CINERGY_T2=m
+CONFIG_DVB_USB_DTV5100=m
+CONFIG_DVB_USB_FRIIO=m
+CONFIG_DVB_USB_AZ6027=m
+CONFIG_DVB_USB_TECHNISAT_USB2=m
+CONFIG_DVB_USB_V2=m
+CONFIG_DVB_USB_AF9015=m
+CONFIG_DVB_USB_AF9035=m
+CONFIG_DVB_USB_ANYSEE=m
+CONFIG_DVB_USB_AU6610=m
+CONFIG_DVB_USB_AZ6007=m
+CONFIG_DVB_USB_CE6230=m
+CONFIG_DVB_USB_EC168=m
+CONFIG_DVB_USB_GL861=m
+CONFIG_DVB_USB_IT913X=m
+CONFIG_DVB_USB_LME2510=m
+CONFIG_DVB_USB_MXL111SF=m
+CONFIG_DVB_USB_RTL28XXU=m
+CONFIG_DVB_USB_DVBSKY=m
+CONFIG_DVB_TTUSB_BUDGET=m
+CONFIG_DVB_TTUSB_DEC=m
+CONFIG_SMS_USB_DRV=m
+CONFIG_DVB_B2C2_FLEXCOP_USB=m
+# CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set
+
+#
+# Webcam, TV (analog/digital) USB devices
+#
+CONFIG_VIDEO_EM28XX=m
+CONFIG_VIDEO_EM28XX_ALSA=m
+CONFIG_VIDEO_EM28XX_DVB=m
+CONFIG_VIDEO_EM28XX_RC=m
+CONFIG_MEDIA_PCI_SUPPORT=y
+
+#
+# Media capture support
+#
+CONFIG_VIDEO_MEYE=m
+
+#
+# Media capture/analog TV support
+#
+CONFIG_VIDEO_IVTV=m
+CONFIG_VIDEO_IVTV_ALSA=m
+CONFIG_VIDEO_FB_IVTV=m
+CONFIG_VIDEO_ZORAN=m
+CONFIG_VIDEO_ZORAN_DC30=m
+CONFIG_VIDEO_ZORAN_ZR36060=m
+CONFIG_VIDEO_ZORAN_BUZ=m
+CONFIG_VIDEO_ZORAN_DC10=m
+CONFIG_VIDEO_ZORAN_LML33=m
+CONFIG_VIDEO_ZORAN_LML33R10=m
+CONFIG_VIDEO_ZORAN_AVS6EYES=m
+CONFIG_VIDEO_HEXIUM_GEMINI=m
+CONFIG_VIDEO_HEXIUM_ORION=m
+CONFIG_VIDEO_MXB=m
+
+#
+# Media capture/analog/hybrid TV support
+#
+CONFIG_VIDEO_CX18=m
+CONFIG_VIDEO_CX18_ALSA=m
+CONFIG_VIDEO_CX23885=m
+CONFIG_MEDIA_ALTERA_CI=m
+CONFIG_VIDEO_CX25821=m
+CONFIG_VIDEO_CX25821_ALSA=m
+CONFIG_VIDEO_CX88=m
+CONFIG_VIDEO_CX88_ALSA=m
+CONFIG_VIDEO_CX88_BLACKBIRD=m
+CONFIG_VIDEO_CX88_DVB=m
+CONFIG_VIDEO_CX88_VP3054=m
+CONFIG_VIDEO_CX88_MPEG=m
+CONFIG_VIDEO_BT848=m
+CONFIG_DVB_BT8XX=m
+CONFIG_VIDEO_SAA7134=m
+CONFIG_VIDEO_SAA7134_ALSA=m
+CONFIG_VIDEO_SAA7134_RC=y
+CONFIG_VIDEO_SAA7134_DVB=m
+CONFIG_VIDEO_SAA7164=m
+
+#
+# Media digital TV PCI Adapters
+#
+CONFIG_DVB_AV7110=m
+CONFIG_DVB_AV7110_OSD=y
+CONFIG_DVB_BUDGET_CORE=m
+CONFIG_DVB_BUDGET=m
+CONFIG_DVB_BUDGET_CI=m
+CONFIG_DVB_BUDGET_AV=m
+CONFIG_DVB_BUDGET_PATCH=m
+CONFIG_DVB_B2C2_FLEXCOP_PCI=m
+# CONFIG_DVB_B2C2_FLEXCOP_PCI_DEBUG is not set
+CONFIG_DVB_PLUTO2=m
+CONFIG_DVB_DM1105=m
+CONFIG_DVB_PT1=m
+CONFIG_MANTIS_CORE=m
+CONFIG_DVB_MANTIS=m
+CONFIG_DVB_HOPPER=m
+CONFIG_DVB_NGENE=m
+CONFIG_DVB_DDBRIDGE=m
+CONFIG_V4L_PLATFORM_DRIVERS=y
+CONFIG_VIDEO_CAFE_CCIC=m
+# CONFIG_VIDEO_VIA_CAMERA is not set
+CONFIG_VIDEO_TIMBERDALE=m
+CONFIG_SOC_CAMERA=m
+CONFIG_SOC_CAMERA_PLATFORM=m
+CONFIG_VIDEO_SH_MOBILE_CSI2=m
+CONFIG_VIDEO_SH_MOBILE_CEU=m
+CONFIG_V4L_MEM2MEM_DRIVERS=y
+CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m
+CONFIG_VIDEO_SH_VEU=m
+# CONFIG_V4L_TEST_DRIVERS is not set
 
 #
-# Camera sensor devices
+# Supported MMC/SDIO adapters
 #
-# CONFIG_VIDEO_OV7670 is not set
-# CONFIG_VIDEO_MT9P031 is not set
-# CONFIG_VIDEO_MT9T001 is not set
-# CONFIG_VIDEO_MT9V011 is not set
-# CONFIG_VIDEO_MT9V032 is not set
-# CONFIG_VIDEO_TCM825X is not set
-# CONFIG_VIDEO_SR030PC30 is not set
-# CONFIG_VIDEO_NOON010PC30 is not set
-# CONFIG_VIDEO_M5MOLS is not set
-# CONFIG_VIDEO_S5K6AA is not set
+# CONFIG_SMS_SDIO_DRV is not set
+# CONFIG_MEDIA_PARPORT_SUPPORT is not set
 
 #
-# Flash devices
-#
-# CONFIG_VIDEO_ADP1653 is not set
-
-#
-# Video improvement chips
+# Supported FireWire (IEEE 1394) Adapters
 #
-# CONFIG_VIDEO_UPD64031A is not set
-# CONFIG_VIDEO_UPD64083 is not set
+CONFIG_DVB_FIREDTV=m
+CONFIG_DVB_FIREDTV_INPUT=y
+CONFIG_MEDIA_COMMON_OPTIONS=y
 
 #
-# Miscelaneous helper chips
+# common driver options
 #
-# CONFIG_VIDEO_THS7303 is not set
-# CONFIG_VIDEO_M52790 is not set
-# CONFIG_VIDEO_VIVI is not set
-# CONFIG_VIDEO_BT848 is not set
-# CONFIG_VIDEO_PMS is not set
-# CONFIG_VIDEO_BWQCAM is not set
-# CONFIG_VIDEO_CQCAM is not set
-# CONFIG_VIDEO_W9966 is not set
-# CONFIG_VIDEO_CPIA2 is not set
-# CONFIG_VIDEO_ZORAN is not set
-# CONFIG_VIDEO_MEYE is not set
-# CONFIG_VIDEO_SAA7134 is not set
-# CONFIG_VIDEO_MXB is not set
-# CONFIG_VIDEO_HEXIUM_ORION is not set
-# CONFIG_VIDEO_HEXIUM_GEMINI is not set
-# CONFIG_VIDEO_TIMBERDALE is not set
-# CONFIG_VIDEO_CX88 is not set
-# CONFIG_VIDEO_CX23885 is not set
-# CONFIG_VIDEO_CX25821 is not set
-# CONFIG_VIDEO_AU0828 is not set
-# CONFIG_VIDEO_IVTV is not set
-# CONFIG_VIDEO_CX18 is not set
-# CONFIG_VIDEO_SAA7164 is not set
-# CONFIG_VIDEO_CAFE_CCIC is not set
-# CONFIG_VIDEO_VIA_CAMERA is not set
-# CONFIG_SOC_CAMERA is not set
-CONFIG_V4L_USB_DRIVERS=y
-# CONFIG_USB_VIDEO_CLASS is not set
-CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
-# CONFIG_USB_GSPCA is not set
-# CONFIG_VIDEO_PVRUSB2 is not set
-# CONFIG_VIDEO_HDPVR is not set
-# CONFIG_VIDEO_EM28XX is not set
-# CONFIG_VIDEO_TLG2300 is not set
-# CONFIG_VIDEO_CX231XX is not set
-# CONFIG_VIDEO_TM6000 is not set
-# CONFIG_VIDEO_USBVISION is not set
-# CONFIG_USB_ET61X251 is not set
-# CONFIG_USB_SN9C102 is not set
-# CONFIG_USB_PWC is not set
-# CONFIG_USB_ZR364XX is not set
-# CONFIG_USB_STKWEBCAM is not set
-# CONFIG_USB_S2255 is not set
-# CONFIG_V4L_MEM2MEM_DRIVERS is not set
-CONFIG_RADIO_ADAPTERS=y
-# CONFIG_RADIO_CADET is not set
-# CONFIG_RADIO_RTRACK is not set
-# CONFIG_RADIO_RTRACK2 is not set
-# CONFIG_RADIO_AZTECH is not set
-# CONFIG_RADIO_GEMTEK is not set
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_RADIO_MIROPCM20 is not set
-# CONFIG_RADIO_SF16FMI is not set
-# CONFIG_RADIO_SF16FMR2 is not set
-# CONFIG_RADIO_TERRATEC is not set
-# CONFIG_RADIO_TRUST is not set
-# CONFIG_RADIO_TYPHOON is not set
-# CONFIG_RADIO_ZOLTRIX is not set
-# CONFIG_I2C_SI4713 is not set
-# CONFIG_RADIO_SI4713 is not set
-# CONFIG_USB_DSBR is not set
-# CONFIG_RADIO_SI470X is not set
-# CONFIG_USB_MR800 is not set
-# CONFIG_RADIO_TEA5764 is not set
-# CONFIG_RADIO_SAA7706H is not set
-# CONFIG_RADIO_TEF6862 is not set
-# CONFIG_RADIO_TIMBERDALE is not set
-# CONFIG_RADIO_WL1273 is not set
-
-#
-# Texas Instruments WL128x FM driver (ST based)
-#
-# CONFIG_RADIO_WL128X is not set
-CONFIG_DVB_MAX_ADAPTERS=8
-# CONFIG_DVB_DYNAMIC_MINORS is not set
-CONFIG_DVB_CAPTURE_DRIVERS=y
+CONFIG_VIDEO_CX2341X=m
+CONFIG_VIDEO_BTCX=m
+CONFIG_VIDEO_TVEEPROM=m
+CONFIG_CYPRESS_FIRMWARE=m
+CONFIG_DVB_B2C2_FLEXCOP=m
+CONFIG_VIDEO_SAA7146=m
+CONFIG_VIDEO_SAA7146_VV=m
+CONFIG_SMS_SIANO_MDTV=m
+CONFIG_SMS_SIANO_RC=y
+# CONFIG_SMS_SIANO_DEBUGFS is not set
 
 #
-# Supported SAA7146 based PCI Adapters
+# Media ancillary drivers (tuners, sensors, i2c, frontends)
 #
-# CONFIG_TTPCI_EEPROM is not set
-# CONFIG_DVB_AV7110 is not set
-# CONFIG_DVB_BUDGET_CORE is not set
+CONFIG_MEDIA_SUBDRV_AUTOSELECT=y
+CONFIG_MEDIA_ATTACH=y
+CONFIG_VIDEO_IR_I2C=m
 
 #
-# Supported USB Adapters
+# Audio decoders, processors and mixers
 #
-# CONFIG_DVB_USB is not set
-# CONFIG_DVB_TTUSB_BUDGET is not set
-# CONFIG_DVB_TTUSB_DEC is not set
-# CONFIG_SMS_SIANO_MDTV is not set
+CONFIG_VIDEO_TVAUDIO=m
+CONFIG_VIDEO_TDA7432=m
+CONFIG_VIDEO_TDA9840=m
+CONFIG_VIDEO_TEA6415C=m
+CONFIG_VIDEO_TEA6420=m
+CONFIG_VIDEO_MSP3400=m
+CONFIG_VIDEO_CS5345=m
+CONFIG_VIDEO_CS53L32A=m
+CONFIG_VIDEO_WM8775=m
+CONFIG_VIDEO_WM8739=m
+CONFIG_VIDEO_VP27SMPX=m
 
 #
-# Supported FlexCopII (B2C2) Adapters
+# RDS decoders
 #
-# CONFIG_DVB_B2C2_FLEXCOP is not set
+CONFIG_VIDEO_SAA6588=m
 
 #
-# Supported BT878 Adapters
+# Video decoders
 #
+CONFIG_VIDEO_ADV7180=m
+CONFIG_VIDEO_BT819=m
+CONFIG_VIDEO_BT856=m
+CONFIG_VIDEO_BT866=m
+CONFIG_VIDEO_KS0127=m
+CONFIG_VIDEO_SAA7110=m
+CONFIG_VIDEO_SAA711X=m
+CONFIG_VIDEO_TVP5150=m
+CONFIG_VIDEO_VPX3220=m
 
 #
-# Supported Pluto2 Adapters
+# Video and audio decoders
 #
-# CONFIG_DVB_PLUTO2 is not set
+CONFIG_VIDEO_SAA717X=m
+CONFIG_VIDEO_CX25840=m
 
 #
-# Supported SDMC DM1105 Adapters
+# Video encoders
 #
-# CONFIG_DVB_DM1105 is not set
+CONFIG_VIDEO_SAA7127=m
+CONFIG_VIDEO_SAA7185=m
+CONFIG_VIDEO_ADV7170=m
+CONFIG_VIDEO_ADV7175=m
 
 #
-# Supported FireWire (IEEE 1394) Adapters
+# Camera sensor devices
 #
-# CONFIG_DVB_FIREDTV is not set
+CONFIG_VIDEO_OV7670=m
+CONFIG_VIDEO_MT9V011=m
 
 #
-# Supported Earthsoft PT1 Adapters
+# Flash devices
 #
-# CONFIG_DVB_PT1 is not set
 
 #
-# Supported Mantis Adapters
+# Video improvement chips
 #
-# CONFIG_MANTIS_CORE is not set
+CONFIG_VIDEO_UPD64031A=m
+CONFIG_VIDEO_UPD64083=m
 
 #
-# Supported nGene Adapters
+# Miscelaneous helper chips
 #
-# CONFIG_DVB_NGENE is not set
+CONFIG_VIDEO_M52790=m
 
 #
-# Supported ddbridge ('Octopus') Adapters
+# Sensors used on soc_camera driver
 #
-# CONFIG_DVB_DDBRIDGE is not set
 
 #
-# Supported DVB Frontends
+# soc_camera sensor drivers
 #
-# CONFIG_DVB_FE_CUSTOMISE is not set
+CONFIG_SOC_CAMERA_IMX074=m
+CONFIG_SOC_CAMERA_MT9M001=m
+CONFIG_SOC_CAMERA_MT9M111=m
+CONFIG_SOC_CAMERA_MT9T031=m
+CONFIG_SOC_CAMERA_MT9T112=m
+CONFIG_SOC_CAMERA_MT9V022=m
+CONFIG_SOC_CAMERA_OV2640=m
+CONFIG_SOC_CAMERA_OV5642=m
+CONFIG_SOC_CAMERA_OV6650=m
+CONFIG_SOC_CAMERA_OV772X=m
+CONFIG_SOC_CAMERA_OV9640=m
+CONFIG_SOC_CAMERA_OV9740=m
+CONFIG_SOC_CAMERA_RJ54N1=m
+CONFIG_SOC_CAMERA_TW9910=m
+CONFIG_MEDIA_TUNER=m
+CONFIG_MEDIA_TUNER_SIMPLE=m
+CONFIG_MEDIA_TUNER_TDA8290=m
+CONFIG_MEDIA_TUNER_TDA827X=m
+CONFIG_MEDIA_TUNER_TDA18271=m
+CONFIG_MEDIA_TUNER_TDA9887=m
+CONFIG_MEDIA_TUNER_MT20XX=m
+CONFIG_MEDIA_TUNER_MT2060=m
+CONFIG_MEDIA_TUNER_MT2063=m
+CONFIG_MEDIA_TUNER_MT2266=m
+CONFIG_MEDIA_TUNER_MT2131=m
+CONFIG_MEDIA_TUNER_QT1010=m
+CONFIG_MEDIA_TUNER_XC2028=m
+CONFIG_MEDIA_TUNER_XC5000=m
+CONFIG_MEDIA_TUNER_XC4000=m
+CONFIG_MEDIA_TUNER_MXL5005S=m
+CONFIG_MEDIA_TUNER_MXL5007T=m
+CONFIG_MEDIA_TUNER_MC44S803=m
+CONFIG_MEDIA_TUNER_MAX2165=m
+CONFIG_MEDIA_TUNER_TDA18218=m
+CONFIG_MEDIA_TUNER_FC0011=m
+CONFIG_MEDIA_TUNER_FC0012=m
+CONFIG_MEDIA_TUNER_FC0013=m
+CONFIG_MEDIA_TUNER_TDA18212=m
+CONFIG_MEDIA_TUNER_E4000=m
+CONFIG_MEDIA_TUNER_FC2580=m
+CONFIG_MEDIA_TUNER_TUA9001=m
+CONFIG_MEDIA_TUNER_IT913X=m
+CONFIG_MEDIA_TUNER_R820T=m
 
 #
 # Multistandard (satellite) frontends
 #
+CONFIG_DVB_STB0899=m
+CONFIG_DVB_STB6100=m
+CONFIG_DVB_STV090x=m
+CONFIG_DVB_STV6110x=m
 
 #
 # Multistandard (cable + terrestrial) frontends
 #
+CONFIG_DVB_DRXK=m
+CONFIG_DVB_TDA18271C2DD=m
 
 #
 # DVB-S (satellite) frontends
 #
+CONFIG_DVB_CX24110=m
+CONFIG_DVB_CX24123=m
+CONFIG_DVB_MT312=m
+CONFIG_DVB_ZL10036=m
+CONFIG_DVB_ZL10039=m
+CONFIG_DVB_S5H1420=m
+CONFIG_DVB_STV0288=m
+CONFIG_DVB_STB6000=m
+CONFIG_DVB_STV0299=m
+CONFIG_DVB_STV6110=m
+CONFIG_DVB_STV0900=m
+CONFIG_DVB_TDA8083=m
+CONFIG_DVB_TDA10086=m
+CONFIG_DVB_TDA8261=m
+CONFIG_DVB_VES1X93=m
+CONFIG_DVB_TUNER_ITD1000=m
+CONFIG_DVB_TUNER_CX24113=m
+CONFIG_DVB_TDA826X=m
+CONFIG_DVB_TUA6100=m
+CONFIG_DVB_CX24116=m
+CONFIG_DVB_M88DS3103=m
+CONFIG_DVB_M88DC2800=m
+CONFIG_DVB_SI21XX=m
+CONFIG_DVB_TS2020=m
+CONFIG_DVB_DS3000=m
+CONFIG_DVB_MB86A16=m
+CONFIG_DVB_TDA10071=m
 
 #
 # DVB-T (terrestrial) frontends
 #
+CONFIG_DVB_SP8870=m
+CONFIG_DVB_SP887X=m
+CONFIG_DVB_CX22700=m
+CONFIG_DVB_CX22702=m
+CONFIG_DVB_DRXD=m
+CONFIG_DVB_L64781=m
+CONFIG_DVB_TDA1004X=m
+CONFIG_DVB_NXT6000=m
+CONFIG_DVB_MT352=m
+CONFIG_DVB_ZL10353=m
+CONFIG_DVB_DIB3000MB=m
+CONFIG_DVB_DIB3000MC=m
+CONFIG_DVB_DIB7000M=m
+CONFIG_DVB_DIB7000P=m
+CONFIG_DVB_TDA10048=m
+CONFIG_DVB_AF9013=m
+CONFIG_DVB_EC100=m
+CONFIG_DVB_STV0367=m
+CONFIG_DVB_CXD2820R=m
+CONFIG_DVB_RTL2830=m
+CONFIG_DVB_RTL2832=m
 
 #
 # DVB-C (cable) frontends
 #
+CONFIG_DVB_VES1820=m
+CONFIG_DVB_TDA10021=m
+CONFIG_DVB_TDA10023=m
+CONFIG_DVB_STV0297=m
 
 #
 # ATSC (North American/Korean Terrestrial/Cable DTV) frontends
 #
+CONFIG_DVB_NXT200X=m
+CONFIG_DVB_OR51211=m
+CONFIG_DVB_OR51132=m
+CONFIG_DVB_BCM3510=m
+CONFIG_DVB_LGDT330X=m
+CONFIG_DVB_LGDT3305=m
+CONFIG_DVB_LG2160=m
+CONFIG_DVB_S5H1409=m
+CONFIG_DVB_AU8522=m
+CONFIG_DVB_AU8522_DTV=m
+CONFIG_DVB_AU8522_V4L=m
+CONFIG_DVB_S5H1411=m
 
 #
 # ISDB-T (terrestrial) frontends
 #
+CONFIG_DVB_S921=m
+CONFIG_DVB_DIB8000=m
+CONFIG_DVB_MB86A20S=m
 
 #
 # Digital terrestrial only tuners/PLL
 #
+CONFIG_DVB_PLL=m
+CONFIG_DVB_TUNER_DIB0070=m
+CONFIG_DVB_TUNER_DIB0090=m
 
 #
 # SEC control devices for DVB-S
 #
+CONFIG_DVB_LNBP21=m
+CONFIG_DVB_LNBP22=m
+CONFIG_DVB_ISL6405=m
+CONFIG_DVB_ISL6421=m
+CONFIG_DVB_ISL6423=m
+CONFIG_DVB_A8293=m
+CONFIG_DVB_LGS8GXX=m
+CONFIG_DVB_ATBM8830=m
+CONFIG_DVB_TDA665x=m
+CONFIG_DVB_IX2505V=m
+CONFIG_DVB_IT913X_FE=m
+CONFIG_DVB_M88RS2000=m
+CONFIG_DVB_AF9033=m
 
 #
 # Tools to develop new frontends
@@ -3239,27 +3744,40 @@ CONFIG_DVB_CAPTURE_DRIVERS=y
 #
 # Graphics support
 #
-CONFIG_AGP=m
-CONFIG_AGP_ALI=m
-CONFIG_AGP_ATI=m
-CONFIG_AGP_AMD=m
-CONFIG_AGP_AMD64=m
-CONFIG_AGP_INTEL=m
-CONFIG_AGP_NVIDIA=m
-CONFIG_AGP_SIS=m
-CONFIG_AGP_SWORKS=m
-CONFIG_AGP_VIA=m
-CONFIG_AGP_EFFICEON=m
+CONFIG_AGP=y
+# CONFIG_AGP_ALI is not set
+# CONFIG_AGP_ATI is not set
+# CONFIG_AGP_AMD is not set
+CONFIG_AGP_AMD64=y
+CONFIG_AGP_INTEL=y
+# CONFIG_AGP_NVIDIA is not set
+CONFIG_AGP_SIS=y
+# CONFIG_AGP_SWORKS is not set
+CONFIG_AGP_VIA=y
+# CONFIG_AGP_EFFICEON is not set
 CONFIG_VGA_ARB=y
 CONFIG_VGA_ARB_MAX_GPUS=16
-# CONFIG_VGA_SWITCHEROO is not set
+CONFIG_VGA_SWITCHEROO=y
 CONFIG_DRM=m
+CONFIG_DRM_USB=m
 CONFIG_DRM_KMS_HELPER=m
+# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
 CONFIG_DRM_TTM=m
+
+#
+# I2C encoder or helper chips
+#
+CONFIG_DRM_I2C_CH7006=m
+CONFIG_DRM_I2C_SIL164=m
+CONFIG_DRM_I2C_NXP_TDA998X=m
 CONFIG_DRM_TDFX=m
 CONFIG_DRM_R128=m
 CONFIG_DRM_RADEON=m
-CONFIG_DRM_RADEON_KMS=y
+# CONFIG_DRM_RADEON_UMS is not set
+CONFIG_DRM_NOUVEAU=m
+CONFIG_NOUVEAU_DEBUG=5
+CONFIG_NOUVEAU_DEBUG_DEFAULT=3
+CONFIG_DRM_NOUVEAU_BACKLIGHT=y
 CONFIG_DRM_I810=m
 CONFIG_DRM_I915=m
 CONFIG_DRM_I915_KMS=y
@@ -3268,9 +3786,18 @@ CONFIG_DRM_SIS=m
 CONFIG_DRM_VIA=m
 CONFIG_DRM_SAVAGE=m
 CONFIG_DRM_VMWGFX=m
-CONFIG_STUB_POULSBO=m
+# CONFIG_DRM_VMWGFX_FBCON is not set
+CONFIG_DRM_GMA500=m
+CONFIG_DRM_GMA600=y
+CONFIG_DRM_GMA3600=y
+CONFIG_DRM_UDL=m
+CONFIG_DRM_AST=m
+CONFIG_DRM_MGAG200=m
+CONFIG_DRM_CIRRUS_QEMU=m
+CONFIG_DRM_QXL=m
 CONFIG_VGASTATE=m
 CONFIG_VIDEO_OUTPUT_CONTROL=m
+CONFIG_HDMI=y
 CONFIG_FB=y
 CONFIG_FIRMWARE_EDID=y
 CONFIG_FB_DDC=m
@@ -3284,7 +3811,6 @@ CONFIG_FB_SYS_COPYAREA=m
 CONFIG_FB_SYS_IMAGEBLIT=m
 # CONFIG_FB_FOREIGN_ENDIAN is not set
 CONFIG_FB_SYS_FOPS=m
-# CONFIG_FB_WMT_GE_ROPS is not set
 CONFIG_FB_DEFERRED_IO=y
 CONFIG_FB_SVGALIB=m
 # CONFIG_FB_MACMODES is not set
@@ -3295,45 +3821,38 @@ CONFIG_FB_TILEBLITTING=y
 #
 # Frame buffer hardware drivers
 #
-CONFIG_FB_CIRRUS=m
+# CONFIG_FB_CIRRUS is not set
 CONFIG_FB_PM2=m
-CONFIG_FB_PM2_FIFO_DISCONNECT=y
+# CONFIG_FB_PM2_FIFO_DISCONNECT is not set
 CONFIG_FB_CYBER2000=m
 CONFIG_FB_CYBER2000_DDC=y
-# CONFIG_FB_ARC is not set
-CONFIG_FB_ASILIANT=y
+CONFIG_FB_ARC=m
+# CONFIG_FB_ASILIANT is not set
 # CONFIG_FB_IMSTT is not set
-# CONFIG_FB_VGA16 is not set
-CONFIG_FB_UVESA=m
+CONFIG_FB_VGA16=m
+# CONFIG_FB_UVESA is not set
 CONFIG_FB_VESA=y
+CONFIG_FB_EFI=y
 # CONFIG_FB_N411 is not set
-# CONFIG_FB_HGA is not set
+CONFIG_FB_HGA=m
 # CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_NVIDIA=m
-CONFIG_FB_NVIDIA_I2C=y
-# CONFIG_FB_NVIDIA_DEBUG is not set
-CONFIG_FB_NVIDIA_BACKLIGHT=y
+# CONFIG_FB_NVIDIA is not set
 CONFIG_FB_RIVA=m
 CONFIG_FB_RIVA_I2C=y
 # CONFIG_FB_RIVA_DEBUG is not set
 CONFIG_FB_RIVA_BACKLIGHT=y
-CONFIG_FB_I810=m
-CONFIG_FB_I810_GTF=y
-CONFIG_FB_I810_I2C=y
+CONFIG_FB_I740=m
+# CONFIG_FB_I810 is not set
 CONFIG_FB_LE80578=m
 CONFIG_FB_CARILLO_RANCH=m
+# CONFIG_FB_INTEL is not set
 CONFIG_FB_MATROX=m
 CONFIG_FB_MATROX_MILLENIUM=y
 CONFIG_FB_MATROX_MYSTIQUE=y
-CONFIG_FB_MATROX_G=y
-CONFIG_FB_MATROX_I2C=m
-CONFIG_FB_MATROX_MAVEN=m
-CONFIG_FB_RADEON=m
-CONFIG_FB_RADEON_I2C=y
-CONFIG_FB_RADEON_BACKLIGHT=y
-# CONFIG_FB_RADEON_DEBUG is not set
-CONFIG_FB_ATY128=m
-CONFIG_FB_ATY128_BACKLIGHT=y
+# CONFIG_FB_MATROX_G is not set
+# CONFIG_FB_MATROX_I2C is not set
+# CONFIG_FB_RADEON is not set
+# CONFIG_FB_ATY128 is not set
 CONFIG_FB_ATY=m
 CONFIG_FB_ATY_CT=y
 # CONFIG_FB_ATY_GENERIC_LCD is not set
@@ -3344,17 +3863,13 @@ CONFIG_FB_S3_DDC=y
 CONFIG_FB_SAVAGE=m
 CONFIG_FB_SAVAGE_I2C=y
 CONFIG_FB_SAVAGE_ACCEL=y
-CONFIG_FB_SIS=m
-CONFIG_FB_SIS_300=y
-CONFIG_FB_SIS_315=y
+# CONFIG_FB_SIS is not set
 CONFIG_FB_VIA=m
 # CONFIG_FB_VIA_DIRECT_PROCFS is not set
 # CONFIG_FB_VIA_X_COMPATIBILITY is not set
 CONFIG_FB_NEOMAGIC=m
 CONFIG_FB_KYRO=m
-CONFIG_FB_3DFX=m
-CONFIG_FB_3DFX_ACCEL=y
-CONFIG_FB_3DFX_I2C=y
+# CONFIG_FB_3DFX is not set
 CONFIG_FB_VOODOO1=m
 CONFIG_FB_VT8623=m
 CONFIG_FB_TRIDENT=m
@@ -3365,43 +3880,38 @@ CONFIG_FB_GEODE=y
 CONFIG_FB_GEODE_LX=m
 CONFIG_FB_GEODE_GX=m
 CONFIG_FB_GEODE_GX1=m
-CONFIG_FB_TMIO=m
-CONFIG_FB_TMIO_ACCELL=y
-CONFIG_FB_SM501=m
+# CONFIG_FB_TMIO is not set
+# CONFIG_FB_SM501 is not set
 CONFIG_FB_SMSCUFX=m
-# CONFIG_FB_UDL is not set
+CONFIG_FB_UDL=m
+# CONFIG_FB_GOLDFISH is not set
 # CONFIG_FB_VIRTUAL is not set
-CONFIG_FB_METRONOME=m
+# CONFIG_FB_METRONOME is not set
 # CONFIG_FB_MB862XX is not set
 # CONFIG_FB_BROADSHEET is not set
+# CONFIG_FB_AUO_K190X is not set
+# CONFIG_EXYNOS_VIDEO is not set
 CONFIG_BACKLIGHT_LCD_SUPPORT=y
 CONFIG_LCD_CLASS_DEVICE=m
 CONFIG_LCD_PLATFORM=m
 CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_GENERIC=m
-CONFIG_BACKLIGHT_PROGEAR=m
-CONFIG_BACKLIGHT_CARILLO_RANCH=m
+# CONFIG_BACKLIGHT_GENERIC is not set
+# CONFIG_BACKLIGHT_LM3533 is not set
+# CONFIG_BACKLIGHT_CARILLO_RANCH is not set
 CONFIG_BACKLIGHT_APPLE=m
-CONFIG_BACKLIGHT_SAHARA=m
-CONFIG_BACKLIGHT_ADP8860=m
-CONFIG_BACKLIGHT_ADP8870=m
-CONFIG_BACKLIGHT_PCF50633=m
-
-#
-# Display device support
-#
-CONFIG_DISPLAY_SUPPORT=m
-
-#
-# Display hardware drivers
-#
+# CONFIG_BACKLIGHT_SAHARA is not set
+# CONFIG_BACKLIGHT_ADP8860 is not set
+# CONFIG_BACKLIGHT_ADP8870 is not set
+# CONFIG_BACKLIGHT_LM3630 is not set
+# CONFIG_BACKLIGHT_LM3639 is not set
+# CONFIG_BACKLIGHT_LP855X is not set
 
 #
 # Console display driver support
 #
 CONFIG_VGA_CONSOLE=y
 # CONFIG_VGACON_SOFT_SCROLLBACK is not set
-# CONFIG_MDA_CONSOLE is not set
+CONFIG_MDA_CONSOLE=m
 CONFIG_DUMMY_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
@@ -3410,8 +3920,8 @@ CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
 CONFIG_FONT_8x8=y
 CONFIG_FONT_8x16=y
 CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
 CONFIG_LOGO_LINUX_CLUT224=y
 CONFIG_SOUND=m
 CONFIG_SOUND_OSS_CORE=y
@@ -3434,9 +3944,12 @@ CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
 CONFIG_SND_DYNAMIC_MINORS=y
 # CONFIG_SND_SUPPORT_OLD_API is not set
 CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
+CONFIG_SND_VERBOSE_PRINTK=y
+CONFIG_SND_DEBUG=y
+# CONFIG_SND_DEBUG_VERBOSE is not set
+CONFIG_SND_PCM_XRUN_DEBUG=y
 CONFIG_SND_VMASTER=y
+CONFIG_SND_KCTL_JACK=y
 CONFIG_SND_DMA_SGBUF=y
 CONFIG_SND_RAWMIDI_SEQ=m
 CONFIG_SND_OPL3_LIB_SEQ=m
@@ -3449,7 +3962,7 @@ CONFIG_SND_OPL4_LIB=m
 CONFIG_SND_VX_LIB=m
 CONFIG_SND_AC97_CODEC=m
 CONFIG_SND_DRIVERS=y
-# CONFIG_SND_PCSP is not set
+CONFIG_SND_PCSP=m
 CONFIG_SND_DUMMY=m
 CONFIG_SND_ALOOP=m
 CONFIG_SND_VIRMIDI=m
@@ -3459,7 +3972,7 @@ CONFIG_SND_SERIAL_U16550=m
 CONFIG_SND_MPU401=m
 CONFIG_SND_PORTMAN2X4=m
 CONFIG_SND_AC97_POWER_SAVE=y
-CONFIG_SND_AC97_POWER_SAVE_DEFAULT=60
+CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0
 CONFIG_SND_WSS_LIB=m
 CONFIG_SND_SB_COMMON=m
 CONFIG_SND_SB8_DSP=m
@@ -3472,6 +3985,7 @@ CONFIG_SND_ALS100=m
 CONFIG_SND_AZT1605=m
 CONFIG_SND_AZT2316=m
 CONFIG_SND_AZT2320=m
+CONFIG_SND_CMI8328=m
 CONFIG_SND_CMI8330=m
 CONFIG_SND_CS4231=m
 CONFIG_SND_CS4236=m
@@ -3509,7 +4023,7 @@ CONFIG_SND_ATIIXP_MODEM=m
 CONFIG_SND_AU8810=m
 CONFIG_SND_AU8820=m
 CONFIG_SND_AU8830=m
-CONFIG_SND_AW2=m
+# CONFIG_SND_AW2 is not set
 CONFIG_SND_AZT3328=m
 CONFIG_SND_BT87X=m
 # CONFIG_SND_BT87X_OVERCLOCK is not set
@@ -3552,11 +4066,10 @@ CONFIG_SND_HDA_PREALLOC_SIZE=64
 CONFIG_SND_HDA_HWDEP=y
 CONFIG_SND_HDA_RECONFIG=y
 CONFIG_SND_HDA_INPUT_BEEP=y
-CONFIG_SND_HDA_INPUT_BEEP_MODE=2
+CONFIG_SND_HDA_INPUT_BEEP_MODE=1
 CONFIG_SND_HDA_INPUT_JACK=y
-CONFIG_SND_HDA_PATCH_LOADER=y
+# CONFIG_SND_HDA_PATCH_LOADER is not set
 CONFIG_SND_HDA_CODEC_REALTEK=y
-CONFIG_SND_HDA_ENABLE_REALTEK_QUIRKS=y
 CONFIG_SND_HDA_CODEC_ANALOG=y
 CONFIG_SND_HDA_CODEC_SIGMATEL=y
 CONFIG_SND_HDA_CODEC_VIA=y
@@ -3565,11 +4078,11 @@ CONFIG_SND_HDA_CODEC_CIRRUS=y
 CONFIG_SND_HDA_CODEC_CONEXANT=y
 CONFIG_SND_HDA_CODEC_CA0110=y
 CONFIG_SND_HDA_CODEC_CA0132=y
+# CONFIG_SND_HDA_CODEC_CA0132_DSP is not set
 CONFIG_SND_HDA_CODEC_CMEDIA=y
 CONFIG_SND_HDA_CODEC_SI3054=y
 CONFIG_SND_HDA_GENERIC=y
-CONFIG_SND_HDA_POWER_SAVE=y
-CONFIG_SND_HDA_POWER_SAVE_DEFAULT=60
+CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
 CONFIG_SND_HDSP=m
 CONFIG_SND_HDSPM=m
 CONFIG_SND_ICE1712=m
@@ -3588,7 +4101,7 @@ CONFIG_SND_RIPTIDE=m
 CONFIG_SND_RME32=m
 CONFIG_SND_RME96=m
 CONFIG_SND_RME9652=m
-CONFIG_SND_SIS7019=m
+# CONFIG_SND_SIS7019 is not set
 CONFIG_SND_SONICVIBES=m
 CONFIG_SND_TRIDENT=m
 CONFIG_SND_VIA82XX=m
@@ -3607,103 +4120,110 @@ CONFIG_SND_USB_6FIRE=m
 CONFIG_SND_FIREWIRE=y
 CONFIG_SND_FIREWIRE_LIB=m
 CONFIG_SND_FIREWIRE_SPEAKERS=m
-CONFIG_SND_ISIGHT=m
+# CONFIG_SND_ISIGHT is not set
+# CONFIG_SND_SCS1X is not set
 CONFIG_SND_PCMCIA=y
-CONFIG_SND_VXPOCKET=m
-CONFIG_SND_PDAUDIOCF=m
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_PDAUDIOCF is not set
 # CONFIG_SND_SOC is not set
 # CONFIG_SOUND_PRIME is not set
 CONFIG_AC97_BUS=m
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=y
-# CONFIG_HIDRAW is not set
 
 #
-# USB Input Devices
+# HID support
 #
-CONFIG_USB_HID=m
-# CONFIG_HID_PID is not set
-CONFIG_USB_HIDDEV=y
+CONFIG_HID=y
+# CONFIG_HID_BATTERY_STRENGTH is not set
+CONFIG_HIDRAW=y
+# CONFIG_UHID is not set
+CONFIG_HID_GENERIC=y
 
 #
 # Special HID drivers
 #
-CONFIG_HID_A4TECH=m
-CONFIG_HID_ACRUX=m
-# CONFIG_HID_ACRUX_FF is not set
-CONFIG_HID_APPLE=m
-CONFIG_HID_BELKIN=m
-CONFIG_HID_CHERRY=m
-CONFIG_HID_CHICONY=m
-CONFIG_HID_PRODIKEYS=m
-CONFIG_HID_CYPRESS=m
-CONFIG_HID_DRAGONRISE=m
-# CONFIG_DRAGONRISE_FF is not set
+CONFIG_HID_A4TECH=y
+# CONFIG_HID_ACRUX is not set
+CONFIG_HID_APPLE=y
+# CONFIG_HID_APPLEIR is not set
+CONFIG_HID_AUREAL=m
+CONFIG_HID_BELKIN=y
+CONFIG_HID_CHERRY=y
+CONFIG_HID_CHICONY=y
+# CONFIG_HID_PRODIKEYS is not set
+CONFIG_HID_CYPRESS=y
+# CONFIG_HID_DRAGONRISE is not set
 # CONFIG_HID_EMS_FF is not set
-CONFIG_HID_ELECOM=m
-CONFIG_HID_EZKEY=m
-CONFIG_HID_HOLTEK=m
-# CONFIG_HOLTEK_FF is not set
+# CONFIG_HID_ELECOM is not set
+CONFIG_HID_EZKEY=y
+# CONFIG_HID_HOLTEK is not set
 CONFIG_HID_KEYTOUCH=m
-CONFIG_HID_KYE=m
-CONFIG_HID_UCLOGIC=m
-CONFIG_HID_WALTOP=m
+CONFIG_HID_KYE=y
+# CONFIG_HID_UCLOGIC is not set
+# CONFIG_HID_WALTOP is not set
 CONFIG_HID_GYRATION=m
+# CONFIG_HID_ICADE is not set
 CONFIG_HID_TWINHAN=m
-CONFIG_HID_KENSINGTON=m
+CONFIG_HID_KENSINGTON=y
 CONFIG_HID_LCPOWER=m
-CONFIG_HID_LOGITECH=m
+CONFIG_HID_LENOVO_TPKBD=m
+CONFIG_HID_LOGITECH=y
 CONFIG_HID_LOGITECH_DJ=m
 # CONFIG_LOGITECH_FF is not set
 # CONFIG_LOGIRUMBLEPAD2_FF is not set
 # CONFIG_LOGIG940_FF is not set
 # CONFIG_LOGIWHEELS_FF is not set
-CONFIG_HID_MAGICMOUSE=m
-CONFIG_HID_MICROSOFT=m
-CONFIG_HID_MONTEREY=m
-CONFIG_HID_MULTITOUCH=m
-CONFIG_HID_NTRIG=m
+# CONFIG_HID_MAGICMOUSE is not set
+CONFIG_HID_MICROSOFT=y
+CONFIG_HID_MONTEREY=y
+# CONFIG_HID_MULTITOUCH is not set
+# CONFIG_HID_NTRIG is not set
 CONFIG_HID_ORTEK=m
-CONFIG_HID_PANTHERLORD=m
-# CONFIG_PANTHERLORD_FF is not set
+# CONFIG_HID_PANTHERLORD is not set
 CONFIG_HID_PETALYNX=m
 CONFIG_HID_PICOLCD=m
 CONFIG_HID_PICOLCD_FB=y
 CONFIG_HID_PICOLCD_BACKLIGHT=y
 CONFIG_HID_PICOLCD_LCD=y
 CONFIG_HID_PICOLCD_LEDS=y
-CONFIG_HID_PRIMAX=m
-CONFIG_HID_QUANTA=m
+CONFIG_HID_PICOLCD_CIR=y
+# CONFIG_HID_PRIMAX is not set
+# CONFIG_HID_PS3REMOTE is not set
 CONFIG_HID_ROCCAT=m
-CONFIG_HID_ROCCAT_COMMON=m
-CONFIG_HID_ROCCAT_ARVO=m
-CONFIG_HID_ROCCAT_KONE=m
-CONFIG_HID_ROCCAT_KONEPLUS=m
-CONFIG_HID_ROCCAT_KOVAPLUS=m
-CONFIG_HID_ROCCAT_PYRA=m
+CONFIG_HID_SAITEK=m
 CONFIG_HID_SAMSUNG=m
-CONFIG_HID_SONY=m
+# CONFIG_HID_SONY is not set
 CONFIG_HID_SPEEDLINK=m
+# CONFIG_HID_STEELSERIES is not set
 CONFIG_HID_SUNPLUS=m
-CONFIG_HID_GREENASIA=m
-# CONFIG_GREENASIA_FF is not set
-CONFIG_HID_SMARTJOYPLUS=m
-# CONFIG_SMARTJOYPLUS_FF is not set
+# CONFIG_HID_GREENASIA is not set
+# CONFIG_HID_SMARTJOYPLUS is not set
+CONFIG_HID_TIVO=m
 CONFIG_HID_TOPSEED=m
-CONFIG_HID_THRUSTMASTER=m
-# CONFIG_THRUSTMASTER_FF is not set
-CONFIG_HID_WACOM=m
-# CONFIG_HID_WACOM_POWER_SUPPLY is not set
-CONFIG_HID_WIIMOTE=m
-CONFIG_HID_ZEROPLUS=m
-# CONFIG_ZEROPLUS_FF is not set
+CONFIG_HID_THINGM=m
+# CONFIG_HID_THRUSTMASTER is not set
+# CONFIG_HID_WACOM is not set
+# CONFIG_HID_WIIMOTE is not set
+# CONFIG_HID_ZEROPLUS is not set
 CONFIG_HID_ZYDACRON=m
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_COMMON=y
-CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_HID_SENSOR_HUB=m
+
+#
+# USB HID support
+#
+CONFIG_USB_HID=y
+CONFIG_HID_PID=y
+CONFIG_USB_HIDDEV=y
+
+#
+# I2C HID support
+#
+CONFIG_I2C_HID=m
 CONFIG_USB_ARCH_HAS_OHCI=y
 CONFIG_USB_ARCH_HAS_EHCI=y
 CONFIG_USB_ARCH_HAS_XHCI=y
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_COMMON=y
+CONFIG_USB_ARCH_HAS_HCD=y
 CONFIG_USB=y
 # CONFIG_USB_DEBUG is not set
 CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
@@ -3711,14 +4231,12 @@ CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
 #
 # Miscellaneous USB options
 #
-CONFIG_USB_DEVICEFS=y
-CONFIG_USB_DEVICE_CLASS=y
-CONFIG_USB_DYNAMIC_MINORS=y
-CONFIG_USB_SUSPEND=y
+CONFIG_USB_DEFAULT_PERSIST=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
 # CONFIG_USB_OTG is not set
-CONFIG_USB_DWC3=m
-# CONFIG_USB_DWC3_DEBUG is not set
-# CONFIG_USB_MON is not set
+# CONFIG_USB_OTG_WHITELIST is not set
+# CONFIG_USB_OTG_BLACKLIST_HUB is not set
+CONFIG_USB_MON=m
 CONFIG_USB_WUSB=m
 CONFIG_USB_WUSB_CBAF=m
 # CONFIG_USB_WUSB_CBAF_DEBUG is not set
@@ -3728,26 +4246,31 @@ CONFIG_USB_WUSB_CBAF=m
 #
 # CONFIG_USB_C67X00_HCD is not set
 CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_XHCI_PLATFORM=m
 # CONFIG_USB_XHCI_HCD_DEBUGGING is not set
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_EHCI_ROOT_HUB_TT=y
 CONFIG_USB_EHCI_TT_NEWSCHED=y
-CONFIG_USB_OXU210HP_HCD=m
-CONFIG_USB_ISP116X_HCD=m
+CONFIG_USB_EHCI_PCI=y
+CONFIG_USB_EHCI_HCD_PLATFORM=y
+# CONFIG_USB_OXU210HP_HCD is not set
+# CONFIG_USB_ISP116X_HCD is not set
 # CONFIG_USB_ISP1760_HCD is not set
 CONFIG_USB_ISP1362_HCD=m
 CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_OHCI_HCD_PLATFORM=y
 # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
 # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
 CONFIG_USB_OHCI_LITTLE_ENDIAN=y
 CONFIG_USB_UHCI_HCD=y
-CONFIG_USB_U132_HCD=m
+# CONFIG_USB_U132_HCD is not set
 CONFIG_USB_SL811_HCD=m
-# CONFIG_USB_SL811_HCD_ISO is not set
+CONFIG_USB_SL811_HCD_ISO=y
 # CONFIG_USB_SL811_CS is not set
-CONFIG_USB_R8A66597_HCD=m
+# CONFIG_USB_R8A66597_HCD is not set
 CONFIG_USB_WHCI_HCD=m
 CONFIG_USB_HWA_HCD=m
+CONFIG_USB_HCD_SSB=m
 
 #
 # USB Device Class drivers
@@ -3764,7 +4287,7 @@ CONFIG_USB_TMC=m
 #
 # also be needed; see USB_STORAGE Help for more info
 #
-CONFIG_USB_STORAGE=m
+CONFIG_USB_STORAGE=y
 # CONFIG_USB_STORAGE_DEBUG is not set
 CONFIG_USB_STORAGE_REALTEK=m
 CONFIG_REALTEK_AUTOPM=y
@@ -3780,20 +4303,24 @@ CONFIG_USB_STORAGE_ONETOUCH=m
 CONFIG_USB_STORAGE_KARMA=m
 CONFIG_USB_STORAGE_CYPRESS_ATACB=m
 CONFIG_USB_STORAGE_ENE_UB6250=m
-# CONFIG_USB_LIBUSUAL is not set
 
 #
 # USB Imaging devices
 #
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
+CONFIG_USB_MDC800=m
+CONFIG_USB_MICROTEK=m
+CONFIG_USB_DWC3=m
+CONFIG_USB_DWC3_HOST=y
+# CONFIG_USB_DWC3_DEBUG is not set
+CONFIG_USB_CHIPIDEA=m
+# CONFIG_USB_CHIPIDEA_HOST is not set
+# CONFIG_USB_CHIPIDEA_DEBUG is not set
 
 #
 # USB port drivers
 #
 CONFIG_USB_USS720=m
 CONFIG_USB_SERIAL=m
-CONFIG_USB_EZUSB=y
 CONFIG_USB_SERIAL_GENERIC=y
 CONFIG_USB_SERIAL_AIRCABLE=m
 CONFIG_USB_SERIAL_ARK3116=m
@@ -3803,7 +4330,7 @@ CONFIG_USB_SERIAL_WHITEHEAT=m
 CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
 CONFIG_USB_SERIAL_CP210X=m
 CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
+# CONFIG_USB_SERIAL_EMPEG is not set
 CONFIG_USB_SERIAL_FTDI_SIO=m
 CONFIG_USB_SERIAL_FUNSOFT=m
 CONFIG_USB_SERIAL_VISOR=m
@@ -3811,16 +4338,18 @@ CONFIG_USB_SERIAL_IPAQ=m
 CONFIG_USB_SERIAL_IR=m
 CONFIG_USB_SERIAL_EDGEPORT=m
 CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_F81232=m
+# CONFIG_USB_SERIAL_GARMIN is not set
 CONFIG_USB_SERIAL_IPW=m
 CONFIG_USB_SERIAL_IUU=m
-# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
 # CONFIG_USB_SERIAL_KEYSPAN is not set
-# CONFIG_USB_SERIAL_KLSI is not set
+CONFIG_USB_SERIAL_KLSI=m
 # CONFIG_USB_SERIAL_KOBIL_SCT is not set
 CONFIG_USB_SERIAL_MCT_U232=m
+# CONFIG_USB_SERIAL_METRO is not set
 CONFIG_USB_SERIAL_MOS7720=m
-# CONFIG_USB_SERIAL_MOS7715_PARPORT is not set
+CONFIG_USB_SERIAL_MOS7715_PARPORT=y
 CONFIG_USB_SERIAL_MOS7840=m
 CONFIG_USB_SERIAL_MOTOROLA=m
 # CONFIG_USB_SERIAL_NAVMAN is not set
@@ -3829,22 +4358,25 @@ CONFIG_USB_SERIAL_OTI6858=m
 CONFIG_USB_SERIAL_QCAUX=m
 CONFIG_USB_SERIAL_QUALCOMM=m
 CONFIG_USB_SERIAL_SPCP8X5=m
-CONFIG_USB_SERIAL_HP4X=m
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
+# CONFIG_USB_SERIAL_HP4X is not set
+# CONFIG_USB_SERIAL_SAFE is not set
 CONFIG_USB_SERIAL_SIEMENS_MPI=m
 CONFIG_USB_SERIAL_SIERRAWIRELESS=m
-CONFIG_USB_SERIAL_SYMBOL=m
-CONFIG_USB_SERIAL_TI=m
+# CONFIG_USB_SERIAL_SYMBOL is not set
+# CONFIG_USB_SERIAL_TI is not set
 # CONFIG_USB_SERIAL_CYBERJACK is not set
 CONFIG_USB_SERIAL_XIRCOM=m
 CONFIG_USB_SERIAL_WWAN=m
 CONFIG_USB_SERIAL_OPTION=m
 # CONFIG_USB_SERIAL_OMNINET is not set
-CONFIG_USB_SERIAL_OPTICON=m
-CONFIG_USB_SERIAL_VIVOPAY_SERIAL=m
-CONFIG_USB_SERIAL_ZIO=m
+# CONFIG_USB_SERIAL_OPTICON is not set
+# CONFIG_USB_SERIAL_VIVOPAY_SERIAL is not set
+# CONFIG_USB_SERIAL_XSENS_MT is not set
+# CONFIG_USB_SERIAL_ZIO is not set
+# CONFIG_USB_SERIAL_WISHBONE is not set
+CONFIG_USB_SERIAL_ZTE=m
 CONFIG_USB_SERIAL_SSU100=m
+CONFIG_USB_SERIAL_QT2=m
 # CONFIG_USB_SERIAL_DEBUG is not set
 
 #
@@ -3852,14 +4384,14 @@ CONFIG_USB_SERIAL_SSU100=m
 #
 CONFIG_USB_EMI62=m
 CONFIG_USB_EMI26=m
-# CONFIG_USB_ADUTUX is not set
+CONFIG_USB_ADUTUX=m
 CONFIG_USB_SEVSEG=m
 # CONFIG_USB_RIO500 is not set
 # CONFIG_USB_LEGOTOWER is not set
 CONFIG_USB_LCD=m
 CONFIG_USB_LED=m
-CONFIG_USB_CYPRESS_CY7C63=m
-CONFIG_USB_CYTHERM=m
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
 # CONFIG_USB_IDMOUSE is not set
 CONFIG_USB_FTDI_ELAN=m
 # CONFIG_USB_APPLEDISPLAY is not set
@@ -3869,21 +4401,17 @@ CONFIG_USB_SISUSBVGA_CON=y
 # CONFIG_USB_TRANCEVIBRATOR is not set
 CONFIG_USB_IOWARRIOR=m
 # CONFIG_USB_TEST is not set
-CONFIG_USB_ISIGHTFW=m
+# CONFIG_USB_ISIGHTFW is not set
 CONFIG_USB_YUREX=m
+CONFIG_USB_EZUSB_FX2=m
+CONFIG_USB_HSIC_USB3503=m
 CONFIG_USB_ATM=m
 CONFIG_USB_SPEEDTOUCH=m
 CONFIG_USB_CXACRU=m
 CONFIG_USB_UEAGLEATM=m
 CONFIG_USB_XUSBATM=m
+# CONFIG_USB_PHY is not set
 # CONFIG_USB_GADGET is not set
-
-#
-# OTG and related infrastructure
-#
-CONFIG_USB_OTG_UTILS=y
-CONFIG_USB_GPIO_VBUS=m
-CONFIG_NOP_USB_XCEIV=m
 CONFIG_UWB=m
 CONFIG_UWB_HWA=m
 CONFIG_UWB_WHCI=m
@@ -3899,23 +4427,27 @@ CONFIG_MMC=m
 CONFIG_MMC_BLOCK=m
 CONFIG_MMC_BLOCK_MINORS=8
 CONFIG_MMC_BLOCK_BOUNCE=y
-CONFIG_SDIO_UART=m
-CONFIG_MMC_TEST=m
+# CONFIG_SDIO_UART is not set
+# CONFIG_MMC_TEST is not set
 
 #
 # MMC/SD/SDIO Host Controller Drivers
 #
 CONFIG_MMC_SDHCI=m
 CONFIG_MMC_SDHCI_PCI=m
-# CONFIG_MMC_RICOH_MMC is not set
+CONFIG_MMC_RICOH_MMC=y
+CONFIG_MMC_SDHCI_ACPI=m
 CONFIG_MMC_SDHCI_PLTFM=m
+CONFIG_MMC_SDHCI_PXAV3=m
+CONFIG_MMC_SDHCI_PXAV2=m
 CONFIG_MMC_WBSD=m
 CONFIG_MMC_TIFM_SD=m
-CONFIG_MMC_SDRICOH_CS=m
+# CONFIG_MMC_SDRICOH_CS is not set
 CONFIG_MMC_CB710=m
 CONFIG_MMC_VIA_SDMMC=m
 CONFIG_MMC_VUB300=m
 CONFIG_MMC_USHC=m
+CONFIG_MMC_REALTEK_PCI=m
 CONFIG_MEMSTICK=m
 # CONFIG_MEMSTICK_DEBUG is not set
 
@@ -3931,6 +4463,7 @@ CONFIG_MSPRO_BLOCK=m
 CONFIG_MEMSTICK_TIFM_MS=m
 CONFIG_MEMSTICK_JMICRON_38X=m
 CONFIG_MEMSTICK_R592=m
+CONFIG_MEMSTICK_REALTEK_PCI=m
 CONFIG_NEW_LEDS=y
 CONFIG_LEDS_CLASS=y
 
@@ -3938,43 +4471,73 @@ CONFIG_LEDS_CLASS=y
 # LED drivers
 #
 CONFIG_LEDS_LM3530=m
-CONFIG_LEDS_NET48XX=m
-CONFIG_LEDS_NET5501=m
-CONFIG_LEDS_WRAP=m
-CONFIG_LEDS_PCA9532=m
-CONFIG_LEDS_PCA9532_GPIO=y
-CONFIG_LEDS_GPIO=m
+CONFIG_LEDS_LM3533=m
+CONFIG_LEDS_LM3642=m
+# CONFIG_LEDS_PCA9532 is not set
+# CONFIG_LEDS_GPIO is not set
 CONFIG_LEDS_LP3944=m
+CONFIG_LEDS_LP55XX_COMMON=m
 CONFIG_LEDS_LP5521=m
 CONFIG_LEDS_LP5523=m
+CONFIG_LEDS_LP5562=m
 CONFIG_LEDS_CLEVO_MAIL=m
-CONFIG_LEDS_PCA955X=m
-CONFIG_LEDS_REGULATOR=m
-CONFIG_LEDS_BD2802=m
+# CONFIG_LEDS_PCA955X is not set
+CONFIG_LEDS_PCA9633=m
+# CONFIG_LEDS_BD2802 is not set
 CONFIG_LEDS_INTEL_SS4200=m
 CONFIG_LEDS_LT3593=m
 CONFIG_LEDS_DELL_NETBOOKS=m
-CONFIG_LEDS_TRIGGERS=y
+# CONFIG_LEDS_RENESAS_TPU is not set
+CONFIG_LEDS_TCA6507=m
+CONFIG_LEDS_LM355x=m
+CONFIG_LEDS_OT200=m
+CONFIG_LEDS_BLINKM=m
 
 #
 # LED Triggers
 #
+CONFIG_LEDS_TRIGGERS=y
 CONFIG_LEDS_TRIGGER_TIMER=m
+CONFIG_LEDS_TRIGGER_ONESHOT=m
 CONFIG_LEDS_TRIGGER_HEARTBEAT=m
 CONFIG_LEDS_TRIGGER_BACKLIGHT=m
+CONFIG_LEDS_TRIGGER_CPU=y
 CONFIG_LEDS_TRIGGER_GPIO=m
 CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
 
 #
 # iptables trigger is under Netfilter config (LED target)
 #
+CONFIG_LEDS_TRIGGER_TRANSIENT=m
+CONFIG_LEDS_TRIGGER_CAMERA=m
 CONFIG_LEDS_TRIGGER_NETDEV=m
 # CONFIG_ACCESSIBILITY is not set
 # CONFIG_INFINIBAND is not set
-# CONFIG_EDAC is not set
+CONFIG_EDAC=y
+# CONFIG_EDAC_LEGACY_SYSFS is not set
+# CONFIG_EDAC_DEBUG is not set
+CONFIG_EDAC_DECODE_MCE=m
+CONFIG_EDAC_MCE_INJ=m
+CONFIG_EDAC_MM_EDAC=m
+# CONFIG_EDAC_AMD76X is not set
+# CONFIG_EDAC_E7XXX is not set
+CONFIG_EDAC_E752X=m
+# CONFIG_EDAC_I82875P is not set
+CONFIG_EDAC_I82975X=m
+CONFIG_EDAC_I3000=m
+CONFIG_EDAC_I3200=m
+CONFIG_EDAC_X38=m
+CONFIG_EDAC_I5400=m
+CONFIG_EDAC_I7CORE=m
+# CONFIG_EDAC_I82860 is not set
+# CONFIG_EDAC_R82600 is not set
+CONFIG_EDAC_I5000=m
+CONFIG_EDAC_I5100=m
+CONFIG_EDAC_I7300=m
 CONFIG_RTC_LIB=y
 CONFIG_RTC_CLASS=y
 CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_SYSTOHC=y
 CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
 # CONFIG_RTC_DEBUG is not set
 
@@ -3999,12 +4562,13 @@ CONFIG_RTC_DRV_RS5C372=m
 CONFIG_RTC_DRV_ISL1208=m
 CONFIG_RTC_DRV_ISL12022=m
 CONFIG_RTC_DRV_X1205=m
+CONFIG_RTC_DRV_PCF8523=m
 CONFIG_RTC_DRV_PCF8563=m
 CONFIG_RTC_DRV_PCF8583=m
 CONFIG_RTC_DRV_M41T80=m
 CONFIG_RTC_DRV_M41T80_WDT=y
 CONFIG_RTC_DRV_BQ32K=m
-CONFIG_RTC_DRV_S35390A=m
+# CONFIG_RTC_DRV_S35390A is not set
 CONFIG_RTC_DRV_FM3130=m
 CONFIG_RTC_DRV_RX8581=m
 CONFIG_RTC_DRV_RX8025=m
@@ -4024,55 +4588,71 @@ CONFIG_RTC_DRV_DS1511=m
 CONFIG_RTC_DRV_DS1553=m
 CONFIG_RTC_DRV_DS1742=m
 CONFIG_RTC_DRV_STK17TA8=m
-CONFIG_RTC_DRV_M48T86=m
+# CONFIG_RTC_DRV_M48T86 is not set
 CONFIG_RTC_DRV_M48T35=m
 CONFIG_RTC_DRV_M48T59=m
 CONFIG_RTC_DRV_MSM6242=m
 CONFIG_RTC_DRV_BQ4802=m
 CONFIG_RTC_DRV_RP5C01=m
 CONFIG_RTC_DRV_V3020=m
-CONFIG_RTC_DRV_PCF50633=m
+CONFIG_RTC_DRV_DS2404=m
 
 #
 # on-CPU RTC drivers
 #
+
+#
+# HID Sensor RTC drivers
+#
+CONFIG_RTC_DRV_HID_SENSOR_TIME=m
 CONFIG_DMADEVICES=y
 # CONFIG_DMADEVICES_DEBUG is not set
 
 #
 # DMA Devices
 #
-CONFIG_INTEL_MID_DMAC=m
+# CONFIG_INTEL_MID_DMAC is not set
 CONFIG_INTEL_IOATDMA=m
+CONFIG_DW_DMAC=m
+# CONFIG_DW_DMAC_BIG_ENDIAN_IO is not set
 CONFIG_TIMB_DMA=m
 CONFIG_PCH_DMA=m
 CONFIG_DMA_ENGINE=y
+CONFIG_DMA_ACPI=y
 
 #
 # DMA Clients
 #
 CONFIG_NET_DMA=y
 CONFIG_ASYNC_TX_DMA=y
-CONFIG_DMATEST=m
+# CONFIG_DMATEST is not set
 CONFIG_DCA=m
 # CONFIG_AUXDISPLAY is not set
 CONFIG_UIO=m
-CONFIG_UIO_CIF=m
-CONFIG_UIO_PDRV=m
-CONFIG_UIO_PDRV_GENIRQ=m
+# CONFIG_UIO_CIF is not set
+# CONFIG_UIO_PDRV is not set
+# CONFIG_UIO_PDRV_GENIRQ is not set
+# CONFIG_UIO_DMEM_GENIRQ is not set
 CONFIG_UIO_AEC=m
 CONFIG_UIO_SERCOS3=m
 CONFIG_UIO_PCI_GENERIC=m
-CONFIG_UIO_NETX=m
+# CONFIG_UIO_NETX is not set
+# CONFIG_VFIO is not set
+CONFIG_VIRT_DRIVERS=y
 CONFIG_VIRTIO=y
-CONFIG_VIRTIO_RING=y
 
 #
 # Virtio drivers
 #
-CONFIG_VIRTIO_PCI=m
+CONFIG_VIRTIO_PCI=y
 CONFIG_VIRTIO_BALLOON=m
 CONFIG_VIRTIO_MMIO=m
+# CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES is not set
+
+#
+# Microsoft Hyper-V guest support
+#
+# CONFIG_HYPERV is not set
 CONFIG_STAGING=y
 CONFIG_ET131X=m
 CONFIG_SLICOSS=m
@@ -4082,48 +4662,99 @@ CONFIG_USBIP_HOST=m
 # CONFIG_USBIP_DEBUG is not set
 # CONFIG_W35UND is not set
 # CONFIG_PRISM2_USB is not set
-# CONFIG_ECHO is not set
+CONFIG_ECHO=m
 # CONFIG_COMEDI is not set
 # CONFIG_ASUS_OLED is not set
 # CONFIG_PANEL is not set
 # CONFIG_R8187SE is not set
 # CONFIG_RTL8192U is not set
-# CONFIG_RTL8192E is not set
+# CONFIG_RTLLIB is not set
 # CONFIG_R8712U is not set
-# CONFIG_RTS_PSTOR is not set
 # CONFIG_RTS5139 is not set
 # CONFIG_TRANZPORT is not set
-# CONFIG_POHMELFS is not set
-CONFIG_IDE_PHISON=m
+# CONFIG_IDE_PHISON is not set
 # CONFIG_LINE6_USB is not set
-CONFIG_DRM_NOUVEAU=m
-CONFIG_DRM_NOUVEAU_BACKLIGHT=y
-
-#
-# I2C encoder or helper chips
-#
-# CONFIG_DRM_I2C_CH7006 is not set
-# CONFIG_DRM_I2C_SIL164 is not set
 # CONFIG_USB_SERIAL_QUATECH2 is not set
-# CONFIG_USB_SERIAL_QUATECH_USB2 is not set
 # CONFIG_VT6655 is not set
 # CONFIG_VT6656 is not set
-# CONFIG_HYPERV_STORAGE is not set
-CONFIG_HYPERV_NET=m
-CONFIG_HYPERV_MOUSE=m
-# CONFIG_VME_BUS is not set
 # CONFIG_DX_SEP is not set
-# CONFIG_IIO is not set
-# CONFIG_XVMALLOC is not set
-# CONFIG_ZRAM is not set
+
+#
+# IIO staging drivers
+#
+
+#
+# Accelerometers
+#
+
+#
+# Analog to digital converters
+#
+# CONFIG_AD7291 is not set
+# CONFIG_AD7606 is not set
+# CONFIG_AD799X is not set
+
+#
+# Analog digital bi-direction converters
+#
+# CONFIG_ADT7316 is not set
+
+#
+# Capacitance to digital converters
+#
+# CONFIG_AD7150 is not set
+# CONFIG_AD7152 is not set
+# CONFIG_AD7746 is not set
+
+#
+# Direct Digital Synthesis
+#
+
+#
+# Digital gyroscope sensors
+#
+
+#
+# Network Analyzer, Impedance Converters
+#
+# CONFIG_AD5933 is not set
+
+#
+# Light sensors
+#
+# CONFIG_SENSORS_ISL29018 is not set
+# CONFIG_SENSORS_ISL29028 is not set
+# CONFIG_TSL2583 is not set
+# CONFIG_TSL2x7x is not set
+
+#
+# Magnetometer sensors
+#
+# CONFIG_SENSORS_HMC5843 is not set
+
+#
+# Active energy metering IC
+#
+# CONFIG_ADE7854 is not set
+
+#
+# Resolver to digital converters
+#
+
+#
+# Triggers - standalone
+#
+# CONFIG_IIO_PERIODIC_RTC_TRIGGER is not set
+# CONFIG_IIO_GPIO_TRIGGER is not set
+# CONFIG_IIO_SYSFS_TRIGGER is not set
+# CONFIG_IIO_SIMPLE_DUMMY is not set
+# CONFIG_ZSMALLOC is not set
 # CONFIG_WLAGS49_H2 is not set
 # CONFIG_WLAGS49_H25 is not set
 # CONFIG_FB_SM7XX is not set
 # CONFIG_CRYSTALHD is not set
-# CONFIG_CXT1E1 is not set
 # CONFIG_FB_XGI is not set
 # CONFIG_ACPI_QUICKSTART is not set
-# CONFIG_SBE_2T3E3 is not set
 # CONFIG_USB_ENESTORAGE is not set
 # CONFIG_BCM_WIMAX is not set
 # CONFIG_FT1000 is not set
@@ -4134,17 +4765,32 @@ CONFIG_HYPERV_MOUSE=m
 # CONFIG_SPEAKUP is not set
 # CONFIG_TOUCHSCREEN_CLEARPAD_TM1217 is not set
 # CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4 is not set
-# CONFIG_DRM_PSB is not set
-CONFIG_INTEL_MEI=m
 # CONFIG_STAGING_MEDIA is not set
+
+#
+# Android
+#
+# CONFIG_ANDROID is not set
+# CONFIG_USB_WPAN_HCD is not set
+# CONFIG_WIMAX_GDM72XX is not set
+# CONFIG_CSR_WIFI is not set
+# CONFIG_NET_VENDOR_SILICOM is not set
+# CONFIG_CED1401 is not set
+# CONFIG_DGRP is not set
+# CONFIG_FIREWIRE_SERIAL is not set
+# CONFIG_USB_DWC2 is not set
 CONFIG_X86_PLATFORM_DEVICES=y
 CONFIG_ACER_WMI=m
 CONFIG_ACERHDF=m
 CONFIG_ASUS_LAPTOP=m
+CONFIG_CHROMEOS_LAPTOP=m
+CONFIG_DELL_LAPTOP=m
 CONFIG_DELL_WMI=m
 CONFIG_DELL_WMI_AIO=m
 CONFIG_FUJITSU_LAPTOP=m
-CONFIG_FUJITSU_LAPTOP_DEBUG=y
+# CONFIG_FUJITSU_LAPTOP_DEBUG is not set
+# CONFIG_FUJITSU_TABLET is not set
+CONFIG_AMILO_RFKILL=m
 CONFIG_TC1100_WMI=m
 CONFIG_HP_ACCEL=m
 CONFIG_HP_WMI=m
@@ -4152,7 +4798,7 @@ CONFIG_MSI_LAPTOP=m
 CONFIG_PANASONIC_LAPTOP=m
 CONFIG_COMPAL_LAPTOP=m
 CONFIG_SONY_LAPTOP=m
-# CONFIG_SONYPI_COMPAT is not set
+CONFIG_SONYPI_COMPAT=y
 CONFIG_IDEAPAD_LAPTOP=m
 CONFIG_THINKPAD_ACPI=m
 CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y
@@ -4162,21 +4808,34 @@ CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y
 CONFIG_THINKPAD_ACPI_VIDEO=y
 CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y
 CONFIG_SENSORS_HDAPS=m
-CONFIG_INTEL_MENLOW=m
+# CONFIG_INTEL_MENLOW is not set
+CONFIG_EEEPC_LAPTOP=m
+CONFIG_ASUS_WMI=m
+CONFIG_ASUS_NB_WMI=m
+CONFIG_EEEPC_WMI=m
 CONFIG_ACPI_WMI=m
 CONFIG_MSI_WMI=m
-CONFIG_ACPI_ASUS=m
 CONFIG_TOPSTAR_LAPTOP=m
 CONFIG_ACPI_TOSHIBA=m
 CONFIG_TOSHIBA_BT_RFKILL=m
 CONFIG_ACPI_CMPC=m
 CONFIG_INTEL_IPS=m
-CONFIG_IBM_RTL=m
-CONFIG_XO15_EBOOK=m
+# CONFIG_IBM_RTL is not set
+# CONFIG_XO15_EBOOK is not set
 CONFIG_SAMSUNG_LAPTOP=m
 CONFIG_MXM_WMI=m
 CONFIG_INTEL_OAKTRAIL=m
 CONFIG_SAMSUNG_Q10=m
+# CONFIG_APPLE_GMUX is not set
+CONFIG_PVPANIC=m
+CONFIG_CLKDEV_LOOKUP=y
+CONFIG_HAVE_CLK_PREPARE=y
+CONFIG_COMMON_CLK=y
+
+#
+# Common Clock Framework
+#
+# CONFIG_COMMON_CLK_DEBUG is not set
 
 #
 # Hardware Spinlock drivers
@@ -4185,55 +4844,143 @@ CONFIG_CLKSRC_I8253=y
 CONFIG_CLKEVT_I8253=y
 CONFIG_I8253_LOCK=y
 CONFIG_CLKBLD_I8253=y
+CONFIG_MAILBOX=y
 CONFIG_IOMMU_API=y
 CONFIG_IOMMU_SUPPORT=y
 CONFIG_DMAR_TABLE=y
 CONFIG_INTEL_IOMMU=y
-CONFIG_INTEL_IOMMU_DEFAULT_ON=y
+# CONFIG_INTEL_IOMMU_DEFAULT_ON is not set
 CONFIG_INTEL_IOMMU_FLOPPY_WA=y
-CONFIG_VIRT_DRIVERS=y
-CONFIG_HYPERV=m
-CONFIG_HYPERV_UTILS=m
-CONFIG_PM_DEVFREQ=y
 
 #
-# DEVFREQ Governors
+# Remoteproc drivers
+#
+# CONFIG_STE_MODEM_RPROC is not set
+
+#
+# Rpmsg drivers
 #
-CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
-CONFIG_DEVFREQ_GOV_PERFORMANCE=y
-CONFIG_DEVFREQ_GOV_POWERSAVE=y
-CONFIG_DEVFREQ_GOV_USERSPACE=y
+# CONFIG_PM_DEVFREQ is not set
+# CONFIG_EXTCON is not set
+CONFIG_MEMORY=y
+CONFIG_IIO=m
+CONFIG_IIO_BUFFER=y
+CONFIG_IIO_BUFFER_CB=y
+CONFIG_IIO_KFIFO_BUF=m
+CONFIG_IIO_TRIGGER=y
+CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
 
 #
-# DEVFREQ Drivers
+# Accelerometers
 #
+# CONFIG_HID_SENSOR_ACCEL_3D is not set
+# CONFIG_IIO_ST_ACCEL_3AXIS is not set
+
+#
+# Analog to digital converters
+#
+# CONFIG_MAX1363 is not set
+# CONFIG_TI_ADC081C is not set
+# CONFIG_VIPERBOARD_ADC is not set
+
+#
+# Amplifiers
+#
+
+#
+# Hid Sensor IIO Common
+#
+CONFIG_HID_SENSOR_IIO_COMMON=m
+CONFIG_HID_SENSOR_IIO_TRIGGER=m
+# CONFIG_HID_SENSOR_ENUM_BASE_QUIRKS is not set
+
+#
+# Digital to analog converters
+#
+# CONFIG_AD5064 is not set
+# CONFIG_AD5380 is not set
+# CONFIG_AD5446 is not set
+# CONFIG_MAX517 is not set
+# CONFIG_MCP4725 is not set
+
+#
+# Frequency Synthesizers DDS/PLL
+#
+
+#
+# Clock Generator/Distribution
+#
+
+#
+# Phase-Locked Loop (PLL) frequency synthesizers
+#
+
+#
+# Digital gyroscope sensors
+#
+# CONFIG_HID_SENSOR_GYRO_3D is not set
+# CONFIG_IIO_ST_GYRO_3AXIS is not set
+# CONFIG_ITG3200 is not set
+
+#
+# Inertial measurement units
+#
+# CONFIG_INV_MPU6050_IIO is not set
+
+#
+# Light sensors
+#
+# CONFIG_ADJD_S311 is not set
+# CONFIG_SENSORS_LM3533 is not set
+# CONFIG_SENSORS_TSL2563 is not set
+# CONFIG_VCNL4000 is not set
+# CONFIG_HID_SENSOR_ALS is not set
+
+#
+# Magnetometer sensors
+#
+# CONFIG_AK8975 is not set
+# CONFIG_HID_SENSOR_MAGNETOMETER_3D is not set
+# CONFIG_IIO_ST_MAGN_3AXIS is not set
+# CONFIG_VME_BUS is not set
+# CONFIG_PWM is not set
+# CONFIG_IPACK_BUS is not set
+# CONFIG_RESET_CONTROLLER is not set
 
 #
 # Firmware Drivers
 #
-# CONFIG_EDD is not set
+CONFIG_EDD=m
+# CONFIG_EDD_OFF is not set
 CONFIG_FIRMWARE_MEMMAP=y
-# CONFIG_DELL_RBU is not set
-# CONFIG_DCDBAS is not set
+CONFIG_DELL_RBU=m
+CONFIG_DCDBAS=m
 CONFIG_DMIID=y
-CONFIG_DMI_SYSFS=m
+CONFIG_DMI_SYSFS=y
 CONFIG_ISCSI_IBFT_FIND=y
 CONFIG_ISCSI_IBFT=m
-CONFIG_SIGMA=m
 # CONFIG_GOOGLE_FIRMWARE is not set
 
+#
+# EFI (Extensible Firmware Interface) Support
+#
+CONFIG_EFI_VARS=y
+CONFIG_EFI_VARS_PSTORE=y
+# CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE is not set
+
 #
 # File systems
 #
+CONFIG_DCACHE_WORD_ACCESS=y
 # CONFIG_EXT2_FS is not set
 # CONFIG_EXT3_FS is not set
 CONFIG_EXT4_FS=y
 CONFIG_EXT4_USE_FOR_EXT23=y
-CONFIG_EXT4_FS_XATTR=y
 CONFIG_EXT4_FS_POSIX_ACL=y
 CONFIG_EXT4_FS_SECURITY=y
 # CONFIG_EXT4_DEBUG is not set
 CONFIG_JBD2=y
+# CONFIG_JBD2_DEBUG is not set
 CONFIG_FS_MBCACHE=y
 CONFIG_REISERFS_FS=m
 # CONFIG_REISERFS_CHECK is not set
@@ -4241,43 +4988,47 @@ CONFIG_REISERFS_PROC_INFO=y
 CONFIG_REISERFS_FS_XATTR=y
 CONFIG_REISERFS_FS_POSIX_ACL=y
 CONFIG_REISERFS_FS_SECURITY=y
-CONFIG_JFS_FS=m
-CONFIG_JFS_POSIX_ACL=y
-CONFIG_JFS_SECURITY=y
-# CONFIG_JFS_DEBUG is not set
-CONFIG_JFS_STATISTICS=y
+# CONFIG_JFS_FS is not set
 CONFIG_XFS_FS=m
 CONFIG_XFS_QUOTA=y
 CONFIG_XFS_POSIX_ACL=y
-# CONFIG_XFS_RT is not set
+CONFIG_XFS_RT=y
+# CONFIG_XFS_WARN is not set
 # CONFIG_XFS_DEBUG is not set
 # CONFIG_GFS2_FS is not set
-# CONFIG_BTRFS_FS is not set
+# CONFIG_OCFS2_FS is not set
+CONFIG_BTRFS_FS=m
+CONFIG_BTRFS_FS_POSIX_ACL=y
+# CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set
+# CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set
+# CONFIG_BTRFS_DEBUG is not set
 # CONFIG_NILFS2_FS is not set
 CONFIG_FS_POSIX_ACL=y
-CONFIG_EXPORTFS=m
+CONFIG_EXPORTFS=y
 CONFIG_FILE_LOCKING=y
 CONFIG_FSNOTIFY=y
 CONFIG_DNOTIFY=y
 CONFIG_INOTIFY_USER=y
 CONFIG_FANOTIFY=y
+CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
 CONFIG_QUOTA=y
 CONFIG_QUOTA_NETLINK_INTERFACE=y
-CONFIG_PRINT_QUOTA_WARNING=y
+# CONFIG_PRINT_QUOTA_WARNING is not set
 # CONFIG_QUOTA_DEBUG is not set
-CONFIG_QUOTA_TREE=m
-CONFIG_QFMT_V1=m
-CONFIG_QFMT_V2=m
+CONFIG_QUOTA_TREE=y
+# CONFIG_QFMT_V1 is not set
+CONFIG_QFMT_V2=y
 CONFIG_QUOTACTL=y
-CONFIG_AUTOFS4_FS=m
+CONFIG_AUTOFS4_FS=y
 CONFIG_FUSE_FS=m
 CONFIG_CUSE=m
+CONFIG_GENERIC_ACL=y
 
 #
 # Caches
 #
 CONFIG_FSCACHE=m
-# CONFIG_FSCACHE_STATS is not set
+CONFIG_FSCACHE_STATS=y
 # CONFIG_FSCACHE_HISTOGRAM is not set
 # CONFIG_FSCACHE_DEBUG is not set
 # CONFIG_FSCACHE_OBJECT_LIST is not set
@@ -4288,7 +5039,7 @@ CONFIG_CACHEFILES=m
 #
 # CD-ROM/DVD Filesystems
 #
-CONFIG_ISO9660_FS=m
+CONFIG_ISO9660_FS=y
 CONFIG_JOLIET=y
 CONFIG_ZISOFS=y
 CONFIG_UDF_FS=m
@@ -4298,10 +5049,10 @@ CONFIG_UDF_NLS=y
 # DOS/FAT/NT Filesystems
 #
 CONFIG_FAT_FS=m
-# CONFIG_MSDOS_FS is not set
+CONFIG_MSDOS_FS=m
 CONFIG_VFAT_FS=m
-CONFIG_FAT_DEFAULT_CODEPAGE=850
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
 # CONFIG_NTFS_FS is not set
 
 #
@@ -4310,39 +5061,22 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
 CONFIG_PROC_FS=y
 # CONFIG_PROC_KCORE is not set
 CONFIG_PROC_SYSCTL=y
-CONFIG_PROC_PAGE_MONITOR=y
 CONFIG_SYSFS=y
 CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
+CONFIG_TMPFS_POSIX_ACL=y
 CONFIG_TMPFS_XATTR=y
 # CONFIG_HUGETLBFS is not set
 # CONFIG_HUGETLB_PAGE is not set
-# CONFIG_CONFIGFS_FS is not set
+CONFIG_CONFIGFS_FS=m
 CONFIG_MISC_FILESYSTEMS=y
 # CONFIG_ADFS_FS is not set
 # CONFIG_AFFS_FS is not set
-CONFIG_ECRYPT_FS=m
+# CONFIG_ECRYPT_FS is not set
 # CONFIG_HFS_FS is not set
 # CONFIG_HFSPLUS_FS is not set
 # CONFIG_BEFS_FS is not set
 # CONFIG_BFS_FS is not set
 # CONFIG_EFS_FS is not set
-CONFIG_JFFS2_FS=m
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
-# CONFIG_JFFS2_SUMMARY is not set
-# CONFIG_JFFS2_FS_XATTR is not set
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-# CONFIG_JFFS2_LZO is not set
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
-# CONFIG_UBIFS_FS is not set
 # CONFIG_LOGFS is not set
 # CONFIG_CRAMFS is not set
 # CONFIG_SQUASHFS is not set
@@ -4351,113 +5085,117 @@ CONFIG_JFFS2_CMODE_PRIORITY=y
 # CONFIG_OMFS_FS is not set
 # CONFIG_HPFS_FS is not set
 # CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX6FS_FS is not set
 # CONFIG_ROMFS_FS is not set
-# CONFIG_PSTORE is not set
+CONFIG_PSTORE=y
+# CONFIG_PSTORE_CONSOLE is not set
+# CONFIG_PSTORE_FTRACE is not set
+# CONFIG_PSTORE_RAM is not set
 # CONFIG_SYSV_FS is not set
-CONFIG_UFS_FS=m
-# CONFIG_UFS_FS_WRITE is not set
-# CONFIG_UFS_DEBUG is not set
+# CONFIG_UFS_FS is not set
 # CONFIG_EXOFS_FS is not set
+# CONFIG_F2FS_FS is not set
+CONFIG_EFIVAR_FS=m
+CONFIG_ORE=m
 CONFIG_NETWORK_FILESYSTEMS=y
 CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
+CONFIG_NFS_V2=m
+CONFIG_NFS_V3=m
 CONFIG_NFS_V3_ACL=y
-CONFIG_NFS_V4=y
-# CONFIG_NFS_V4_1 is not set
-# CONFIG_NFS_FSCACHE is not set
+CONFIG_NFS_V4=m
+# CONFIG_NFS_SWAP is not set
+CONFIG_NFS_V4_1=y
+CONFIG_PNFS_FILE_LAYOUT=m
+CONFIG_PNFS_BLOCK=m
+CONFIG_PNFS_OBJLAYOUT=m
+CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="ipfire.org"
+CONFIG_NFS_FSCACHE=y
 # CONFIG_NFS_USE_LEGACY_DNS is not set
 CONFIG_NFS_USE_KERNEL_DNS=y
-# CONFIG_NFS_USE_NEW_IDMAPPER is not set
 CONFIG_NFSD=m
 CONFIG_NFSD_V2_ACL=y
 CONFIG_NFSD_V3=y
 CONFIG_NFSD_V3_ACL=y
 CONFIG_NFSD_V4=y
+# CONFIG_NFSD_FAULT_INJECTION is not set
 CONFIG_LOCKD=m
 CONFIG_LOCKD_V4=y
 CONFIG_NFS_ACL_SUPPORT=m
 CONFIG_NFS_COMMON=y
 CONFIG_SUNRPC=m
 CONFIG_SUNRPC_GSS=m
+CONFIG_SUNRPC_BACKCHANNEL=y
 CONFIG_RPCSEC_GSS_KRB5=m
+# CONFIG_SUNRPC_DEBUG is not set
 # CONFIG_CEPH_FS is not set
 CONFIG_CIFS=m
 CONFIG_CIFS_STATS=y
-CONFIG_CIFS_STATS2=y
+# CONFIG_CIFS_STATS2 is not set
 # CONFIG_CIFS_WEAK_PW_HASH is not set
 # CONFIG_CIFS_UPCALL is not set
 CONFIG_CIFS_XATTR=y
 CONFIG_CIFS_POSIX=y
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_DFS_UPCALL is not set
-# CONFIG_CIFS_FSCACHE is not set
 CONFIG_CIFS_ACL=y
+# CONFIG_CIFS_DEBUG is not set
+CONFIG_CIFS_DFS_UPCALL=y
+CONFIG_CIFS_SMB2=y
+CONFIG_CIFS_FSCACHE=y
 # CONFIG_NCP_FS is not set
 # CONFIG_CODA_FS is not set
 # CONFIG_AFS_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-CONFIG_BSD_DISKLABEL=y
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-CONFIG_LDM_PARTITION=y
-# CONFIG_LDM_DEBUG is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-CONFIG_EFI_PARTITION=y
-# CONFIG_SYSV68_PARTITION is not set
 CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp850"
-# CONFIG_NLS_CODEPAGE_437 is not set
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-CONFIG_NLS_CODEPAGE_850=y
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-# CONFIG_NLS_ASCII is not set
-CONFIG_NLS_ISO8859_1=y
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-CONFIG_NLS_UTF8=y
+CONFIG_NLS_DEFAULT="utf-8"
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=y
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_MAC_ROMAN=m
+CONFIG_NLS_MAC_CELTIC=m
+CONFIG_NLS_MAC_CENTEURO=m
+CONFIG_NLS_MAC_CROATIAN=m
+CONFIG_NLS_MAC_CYRILLIC=m
+CONFIG_NLS_MAC_GAELIC=m
+CONFIG_NLS_MAC_GREEK=m
+CONFIG_NLS_MAC_ICELAND=m
+CONFIG_NLS_MAC_INUIT=m
+CONFIG_NLS_MAC_ROMANIAN=m
+CONFIG_NLS_MAC_TURKISH=m
+CONFIG_NLS_UTF8=m
+CONFIG_DLM=m
+# CONFIG_DLM_DEBUG is not set
 
 #
 # Kernel hacking
@@ -4467,27 +5205,32 @@ CONFIG_TRACE_IRQFLAGS_SUPPORT=y
 CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
 # CONFIG_ENABLE_WARN_DEPRECATED is not set
 CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_FRAME_WARN=1024
+CONFIG_FRAME_WARN=2048
 # CONFIG_MAGIC_SYSRQ is not set
 CONFIG_STRIP_ASM_SYMS=y
+# CONFIG_READABLE_ASM is not set
 # CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_FS=y
+CONFIG_HEADERS_CHECK=y
 # CONFIG_DEBUG_SECTION_MISMATCH is not set
 CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SHIRQ is not set
-# CONFIG_LOCKUP_DETECTOR is not set
-# CONFIG_HARDLOCKUP_DETECTOR is not set
-CONFIG_DETECT_HUNG_TASK=y
-CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
-# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
-CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
+CONFIG_DEBUG_SHIRQ=y
+CONFIG_LOCKUP_DETECTOR=y
+CONFIG_HARDLOCKUP_DETECTOR=y
+# CONFIG_BOOTPARAM_HARDLOCKUP_PANIC is not set
+CONFIG_BOOTPARAM_HARDLOCKUP_PANIC_VALUE=0
+# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
+# CONFIG_PANIC_ON_OOPS is not set
+CONFIG_PANIC_ON_OOPS_VALUE=0
+# CONFIG_DETECT_HUNG_TASK is not set
 CONFIG_SCHED_DEBUG=y
-# CONFIG_SCHEDSTATS is not set
+CONFIG_SCHEDSTATS=y
 CONFIG_TIMER_STATS=y
 # CONFIG_DEBUG_OBJECTS is not set
 # CONFIG_SLUB_DEBUG_ON is not set
 # CONFIG_SLUB_STATS is not set
+CONFIG_HAVE_DEBUG_KMEMLEAK=y
 # CONFIG_DEBUG_KMEMLEAK is not set
 # CONFIG_DEBUG_RT_MUTEXES is not set
 # CONFIG_RT_MUTEX_TESTER is not set
@@ -4495,10 +5238,10 @@ CONFIG_TIMER_STATS=y
 # CONFIG_DEBUG_MUTEXES is not set
 # CONFIG_DEBUG_LOCK_ALLOC is not set
 # CONFIG_PROVE_LOCKING is not set
-# CONFIG_SPARSE_RCU_POINTER is not set
 # CONFIG_LOCK_STAT is not set
 # CONFIG_DEBUG_ATOMIC_SLEEP is not set
 # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+CONFIG_STACKTRACE=y
 # CONFIG_DEBUG_STACK_USAGE is not set
 # CONFIG_DEBUG_KOBJECT is not set
 # CONFIG_DEBUG_HIGHMEM is not set
@@ -4508,38 +5251,79 @@ CONFIG_DEBUG_BUGVERBOSE=y
 # CONFIG_DEBUG_VIRTUAL is not set
 # CONFIG_DEBUG_WRITECOUNT is not set
 CONFIG_DEBUG_MEMORY_INIT=y
-# CONFIG_DEBUG_LIST is not set
+CONFIG_DEBUG_LIST=y
 # CONFIG_TEST_LIST_SORT is not set
 # CONFIG_DEBUG_SG is not set
 # CONFIG_DEBUG_NOTIFIERS is not set
 # CONFIG_DEBUG_CREDENTIALS is not set
 CONFIG_ARCH_WANT_FRAME_POINTERS=y
-# CONFIG_FRAME_POINTER is not set
+CONFIG_FRAME_POINTER=y
 # CONFIG_BOOT_PRINTK_DELAY is not set
+
+#
+# RCU Debugging
+#
+# CONFIG_SPARSE_RCU_POINTER is not set
 # CONFIG_RCU_TORTURE_TEST is not set
 CONFIG_RCU_CPU_STALL_TIMEOUT=60
+# CONFIG_RCU_CPU_STALL_INFO is not set
+# CONFIG_RCU_TRACE is not set
 # CONFIG_BACKTRACE_SELF_TEST is not set
 # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
 # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
 # CONFIG_DEBUG_PER_CPU_MAPS is not set
-# CONFIG_CPU_NOTIFIER_ERROR_INJECT is not set
+# CONFIG_LKDTM is not set
+# CONFIG_NOTIFIER_ERROR_INJECTION is not set
 # CONFIG_FAULT_INJECTION is not set
-# CONFIG_LATENCYTOP is not set
-# CONFIG_SYSCTL_SYSCALL_CHECK is not set
+CONFIG_ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS=y
+# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
 # CONFIG_DEBUG_PAGEALLOC is not set
 CONFIG_USER_STACKTRACE_SUPPORT=y
+CONFIG_NOP_TRACER=y
 CONFIG_HAVE_FUNCTION_TRACER=y
 CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
 CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y
 CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
 CONFIG_HAVE_DYNAMIC_FTRACE=y
+CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
 CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
 CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
 CONFIG_HAVE_C_RECORDMCOUNT=y
+CONFIG_TRACER_MAX_TRACE=y
+CONFIG_TRACE_CLOCK=y
+CONFIG_RING_BUFFER=y
+CONFIG_EVENT_TRACING=y
+CONFIG_CONTEXT_SWITCH_TRACER=y
+CONFIG_TRACING=y
+CONFIG_GENERIC_TRACER=y
 CONFIG_TRACING_SUPPORT=y
-# CONFIG_FTRACE is not set
-# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
-# CONFIG_FIREWIRE_OHCI_REMOTE_DMA is not set
+CONFIG_FTRACE=y
+CONFIG_FUNCTION_TRACER=y
+CONFIG_FUNCTION_GRAPH_TRACER=y
+# CONFIG_IRQSOFF_TRACER is not set
+CONFIG_SCHED_TRACER=y
+CONFIG_FTRACE_SYSCALLS=y
+CONFIG_TRACER_SNAPSHOT=y
+# CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP is not set
+CONFIG_BRANCH_PROFILE_NONE=y
+# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
+# CONFIG_PROFILE_ALL_BRANCHES is not set
+CONFIG_STACK_TRACER=y
+CONFIG_BLK_DEV_IO_TRACE=y
+# CONFIG_UPROBE_EVENT is not set
+# CONFIG_PROBE_EVENTS is not set
+CONFIG_DYNAMIC_FTRACE=y
+CONFIG_DYNAMIC_FTRACE_WITH_REGS=y
+CONFIG_FUNCTION_PROFILER=y
+CONFIG_FTRACE_MCOUNT_RECORD=y
+# CONFIG_FTRACE_STARTUP_TEST is not set
+# CONFIG_MMIOTRACE is not set
+CONFIG_RING_BUFFER_BENCHMARK=m
+# CONFIG_RING_BUFFER_STARTUP_TEST is not set
+CONFIG_RBTREE_TEST=m
+# CONFIG_INTERVAL_TREE_TEST is not set
+# CONFIG_BUILD_DOCSRC is not set
+CONFIG_DYNAMIC_DEBUG=y
 # CONFIG_DMA_API_DEBUG is not set
 # CONFIG_ATOMIC64_SELFTEST is not set
 CONFIG_ASYNC_RAID6_TEST=m
@@ -4547,19 +5331,17 @@ CONFIG_ASYNC_RAID6_TEST=m
 CONFIG_HAVE_ARCH_KGDB=y
 # CONFIG_KGDB is not set
 CONFIG_HAVE_ARCH_KMEMCHECK=y
-# CONFIG_KMEMCHECK is not set
+# CONFIG_TEST_STRING_HELPERS is not set
 # CONFIG_TEST_KSTRTOX is not set
-# CONFIG_STRICT_DEVMEM is not set
-CONFIG_X86_VERBOSE_BOOTUP=y
+CONFIG_STRICT_DEVMEM=y
+# CONFIG_X86_VERBOSE_BOOTUP is not set
 CONFIG_EARLY_PRINTK=y
 # CONFIG_EARLY_PRINTK_DBGP is not set
-# CONFIG_DEBUG_STACKOVERFLOW is not set
+CONFIG_DEBUG_STACKOVERFLOW=y
 # CONFIG_X86_PTDUMP is not set
-CONFIG_DEBUG_RODATA=y
-CONFIG_DEBUG_RODATA_TEST=y
-# CONFIG_DEBUG_SET_MODULE_RONX is not set
-# CONFIG_DEBUG_NX_TEST is not set
+CONFIG_DEBUG_NX_TEST=m
 CONFIG_DOUBLEFAULT=y
+# CONFIG_DEBUG_TLBFLUSH is not set
 # CONFIG_IOMMU_STRESS is not set
 CONFIG_HAVE_MMIOTRACE_SUPPORT=y
 CONFIG_IO_DELAY_TYPE_0X80=0
@@ -4571,20 +5353,189 @@ CONFIG_IO_DELAY_0X80=y
 # CONFIG_IO_DELAY_UDELAY is not set
 # CONFIG_IO_DELAY_NONE is not set
 CONFIG_DEFAULT_IO_DELAY_TYPE=0
+CONFIG_DEBUG_BOOT_PARAMS=y
 # CONFIG_CPA_DEBUG is not set
-# CONFIG_OPTIMIZE_INLINING is not set
-# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
+CONFIG_OPTIMIZE_INLINING=y
+# CONFIG_DEBUG_NMI_SELFTEST is not set
 
 #
 # Security options
 #
+
+#
+# Grsecurity
+#
+CONFIG_ARCH_TRACK_EXEC_LIMIT=y
+CONFIG_PAX_USERCOPY_SLABS=y
+CONFIG_GRKERNSEC=y
+# CONFIG_GRKERNSEC_CONFIG_AUTO is not set
+CONFIG_GRKERNSEC_CONFIG_CUSTOM=y
+
+#
+# Customize Configuration
+#
+
+#
+# PaX
+#
+CONFIG_PAX=y
+
+#
+# PaX Control
+#
+# CONFIG_PAX_SOFTMODE is not set
+CONFIG_PAX_EI_PAX=y
+CONFIG_PAX_PT_PAX_FLAGS=y
+# CONFIG_PAX_XATTR_PAX_FLAGS is not set
+# CONFIG_PAX_NO_ACL_FLAGS is not set
+CONFIG_PAX_HAVE_ACL_FLAGS=y
+# CONFIG_PAX_HOOK_ACL_FLAGS is not set
+
+#
+# Non-executable pages
+#
+CONFIG_PAX_NOEXEC=y
+CONFIG_PAX_PAGEEXEC=y
+CONFIG_PAX_SEGMEXEC=y
+CONFIG_PAX_EMUTRAMP=y
+CONFIG_PAX_MPROTECT=y
+# CONFIG_PAX_MPROTECT_COMPAT is not set
+CONFIG_PAX_ELFRELOCS=y
+# CONFIG_PAX_KERNEXEC is not set
+CONFIG_PAX_KERNEXEC_PLUGIN_METHOD=""
+
+#
+# Address Space Layout Randomization
+#
+CONFIG_PAX_ASLR=y
+CONFIG_PAX_RANDKSTACK=y
+CONFIG_PAX_RANDUSTACK=y
+CONFIG_PAX_RANDMMAP=y
+
+#
+# Miscellaneous hardening features
+#
+CONFIG_PAX_MEMORY_STACKLEAK=y
+CONFIG_PAX_MEMORY_STRUCTLEAK=y
+# CONFIG_PAX_MEMORY_UDEREF is not set
+CONFIG_PAX_REFCOUNT=y
+CONFIG_PAX_USERCOPY=y
+# CONFIG_PAX_USERCOPY_DEBUG is not set
+# CONFIG_PAX_SIZE_OVERFLOW is not set
+# CONFIG_PAX_LATENT_ENTROPY is not set
+
+#
+# Memory Protections
+#
+# CONFIG_GRKERNSEC_KMEM is not set
+CONFIG_GRKERNSEC_VM86=y
+# CONFIG_GRKERNSEC_IO is not set
+# CONFIG_GRKERNSEC_PERF_HARDEN is not set
+CONFIG_GRKERNSEC_RAND_THREADSTACK=y
+CONFIG_GRKERNSEC_PROC_MEMMAP=y
+CONFIG_GRKERNSEC_BRUTE=y
+CONFIG_GRKERNSEC_MODHARDEN=y
+CONFIG_GRKERNSEC_HIDESYM=y
+CONFIG_GRKERNSEC_KERN_LOCKOUT=y
+
+#
+# Role Based Access Control Options
+#
+CONFIG_GRKERNSEC_NO_RBAC=y
+# CONFIG_GRKERNSEC_ACL_HIDEKERN is not set
+CONFIG_GRKERNSEC_ACL_MAXTRIES=3
+CONFIG_GRKERNSEC_ACL_TIMEOUT=30
+
+#
+# Filesystem Protections
+#
+# CONFIG_GRKERNSEC_PROC is not set
+CONFIG_GRKERNSEC_LINK=y
+# CONFIG_GRKERNSEC_SYMLINKOWN is not set
+CONFIG_GRKERNSEC_FIFO=y
+# CONFIG_GRKERNSEC_SYSFS_RESTRICT is not set
+# CONFIG_GRKERNSEC_ROFS is not set
+CONFIG_GRKERNSEC_DEVICE_SIDECHANNEL=y
+CONFIG_GRKERNSEC_CHROOT=y
+# CONFIG_GRKERNSEC_CHROOT_MOUNT is not set
+CONFIG_GRKERNSEC_CHROOT_DOUBLE=y
+CONFIG_GRKERNSEC_CHROOT_PIVOT=y
+CONFIG_GRKERNSEC_CHROOT_CHDIR=y
+# CONFIG_GRKERNSEC_CHROOT_CHMOD is not set
+CONFIG_GRKERNSEC_CHROOT_FCHDIR=y
+# CONFIG_GRKERNSEC_CHROOT_MKNOD is not set
+CONFIG_GRKERNSEC_CHROOT_SHMAT=y
+CONFIG_GRKERNSEC_CHROOT_UNIX=y
+CONFIG_GRKERNSEC_CHROOT_FINDTASK=y
+CONFIG_GRKERNSEC_CHROOT_NICE=y
+CONFIG_GRKERNSEC_CHROOT_SYSCTL=y
+# CONFIG_GRKERNSEC_CHROOT_CAPS is not set
+CONFIG_GRKERNSEC_CHROOT_INITRD=y
+
+#
+# Kernel Auditing
+#
+# CONFIG_GRKERNSEC_AUDIT_GROUP is not set
+# CONFIG_GRKERNSEC_EXECLOG is not set
+CONFIG_GRKERNSEC_RESLOG=y
+# CONFIG_GRKERNSEC_CHROOT_EXECLOG is not set
+# CONFIG_GRKERNSEC_AUDIT_PTRACE is not set
+# CONFIG_GRKERNSEC_AUDIT_CHDIR is not set
+# CONFIG_GRKERNSEC_AUDIT_MOUNT is not set
+CONFIG_GRKERNSEC_SIGNAL=y
+CONFIG_GRKERNSEC_FORKFAIL=y
+# CONFIG_GRKERNSEC_TIME is not set
+CONFIG_GRKERNSEC_PROC_IPADDR=y
+# CONFIG_GRKERNSEC_RWXMAP_LOG is not set
+
+#
+# Executable Protections
+#
+CONFIG_GRKERNSEC_DMESG=y
+CONFIG_GRKERNSEC_HARDEN_PTRACE=y
+CONFIG_GRKERNSEC_PTRACE_READEXEC=y
+CONFIG_GRKERNSEC_SETXID=y
+# CONFIG_GRKERNSEC_TPE is not set
+
+#
+# Network Protections
+#
+CONFIG_GRKERNSEC_RANDNET=y
+CONFIG_GRKERNSEC_BLACKHOLE=y
+CONFIG_GRKERNSEC_NO_SIMULT_CONNECT=y
+# CONFIG_GRKERNSEC_SOCKET is not set
+
+#
+# Physical Protections
+#
+# CONFIG_GRKERNSEC_DENYUSB is not set
+
+#
+# Sysctl Support
+#
+# CONFIG_GRKERNSEC_SYSCTL is not set
+
+#
+# Logging Options
+#
+CONFIG_GRKERNSEC_FLOODTIME=10
+CONFIG_GRKERNSEC_FLOODBURST=6
 CONFIG_KEYS=y
 # CONFIG_ENCRYPTED_KEYS is not set
-# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
-# CONFIG_SECURITY_DMESG_RESTRICT is not set
-# CONFIG_SECURITY is not set
-# CONFIG_SECURITYFS is not set
+CONFIG_KEYS_DEBUG_PROC_KEYS=y
+CONFIG_SECURITY_DMESG_RESTRICT=y
+CONFIG_SECURITY=y
+CONFIG_SECURITYFS=y
+CONFIG_SECURITY_NETWORK=y
+CONFIG_SECURITY_NETWORK_XFRM=y
+# CONFIG_SECURITY_PATH is not set
 # CONFIG_INTEL_TXT is not set
+# CONFIG_SECURITY_SELINUX is not set
+# CONFIG_SECURITY_SMACK is not set
+# CONFIG_SECURITY_TOMOYO is not set
+# CONFIG_SECURITY_APPARMOR is not set
+# CONFIG_IMA is not set
+# CONFIG_EVM is not set
 CONFIG_DEFAULT_SECURITY_DAC=y
 CONFIG_DEFAULT_SECURITY=""
 CONFIG_XOR_BLOCKS=m
@@ -4593,58 +5544,60 @@ CONFIG_ASYNC_MEMCPY=m
 CONFIG_ASYNC_XOR=m
 CONFIG_ASYNC_PQ=m
 CONFIG_ASYNC_RAID6_RECOV=m
-CONFIG_ASYNC_TX_DISABLE_PQ_VAL_DMA=y
-CONFIG_ASYNC_TX_DISABLE_XOR_VAL_DMA=y
 CONFIG_CRYPTO=y
 
 #
 # Crypto core or helper
 #
+CONFIG_CRYPTO_FIPS=y
 CONFIG_CRYPTO_ALGAPI=y
 CONFIG_CRYPTO_ALGAPI2=y
-CONFIG_CRYPTO_AEAD=m
+CONFIG_CRYPTO_AEAD=y
 CONFIG_CRYPTO_AEAD2=y
-CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_BLKCIPHER=y
 CONFIG_CRYPTO_BLKCIPHER2=y
 CONFIG_CRYPTO_HASH=y
 CONFIG_CRYPTO_HASH2=y
-CONFIG_CRYPTO_RNG=m
+CONFIG_CRYPTO_RNG=y
 CONFIG_CRYPTO_RNG2=y
 CONFIG_CRYPTO_PCOMP=m
 CONFIG_CRYPTO_PCOMP2=y
 CONFIG_CRYPTO_MANAGER=y
 CONFIG_CRYPTO_MANAGER2=y
-CONFIG_CRYPTO_USER=m
-CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
-CONFIG_CRYPTO_GF128MUL=m
-# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_USER is not set
+# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
+CONFIG_CRYPTO_GF128MUL=y
+CONFIG_CRYPTO_NULL=m
 CONFIG_CRYPTO_PCRYPT=m
 CONFIG_CRYPTO_WORKQUEUE=y
-CONFIG_CRYPTO_CRYPTD=m
+CONFIG_CRYPTO_CRYPTD=y
 CONFIG_CRYPTO_AUTHENC=m
-# CONFIG_CRYPTO_TEST is not set
+CONFIG_CRYPTO_TEST=m
+CONFIG_CRYPTO_ABLK_HELPER_X86=y
+CONFIG_CRYPTO_GLUE_HELPER_X86=m
 
 #
 # Authenticated Encryption with Associated Data
 #
 CONFIG_CRYPTO_CCM=m
 CONFIG_CRYPTO_GCM=m
-CONFIG_CRYPTO_SEQIV=m
+CONFIG_CRYPTO_SEQIV=y
 
 #
 # Block modes
 #
-CONFIG_CRYPTO_CBC=m
-CONFIG_CRYPTO_CTR=m
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_CTR=y
 CONFIG_CRYPTO_CTS=m
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_LRW=m
+CONFIG_CRYPTO_ECB=y
+CONFIG_CRYPTO_LRW=y
 CONFIG_CRYPTO_PCBC=m
-CONFIG_CRYPTO_XTS=m
+CONFIG_CRYPTO_XTS=y
 
 #
 # Hash modes
 #
+CONFIG_CRYPTO_CMAC=m
 CONFIG_CRYPTO_HMAC=y
 CONFIG_CRYPTO_XCBC=m
 CONFIG_CRYPTO_VMAC=m
@@ -4652,18 +5605,20 @@ CONFIG_CRYPTO_VMAC=m
 #
 # Digest
 #
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_CRC32C_INTEL=m
+CONFIG_CRYPTO_CRC32C=y
+CONFIG_CRYPTO_CRC32C_INTEL=y
+CONFIG_CRYPTO_CRC32=y
+CONFIG_CRYPTO_CRC32_PCLMUL=m
 CONFIG_CRYPTO_GHASH=m
 CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_MD5=y
 CONFIG_CRYPTO_MICHAEL_MIC=m
 CONFIG_CRYPTO_RMD128=m
 CONFIG_CRYPTO_RMD160=m
 CONFIG_CRYPTO_RMD256=m
 CONFIG_CRYPTO_RMD320=m
 CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA256=y
 CONFIG_CRYPTO_SHA512=m
 CONFIG_CRYPTO_TGR192=m
 CONFIG_CRYPTO_WP512=m
@@ -4671,23 +5626,25 @@ CONFIG_CRYPTO_WP512=m
 #
 # Ciphers
 #
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_AES_586=m
-CONFIG_CRYPTO_AES_NI_INTEL=m
+CONFIG_CRYPTO_AES=y
+CONFIG_CRYPTO_AES_586=y
+CONFIG_CRYPTO_AES_NI_INTEL=y
 CONFIG_CRYPTO_ANUBIS=m
 CONFIG_CRYPTO_ARC4=m
 CONFIG_CRYPTO_BLOWFISH=m
 CONFIG_CRYPTO_BLOWFISH_COMMON=m
 CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_CAST_COMMON=m
 CONFIG_CRYPTO_CAST5=m
 CONFIG_CRYPTO_CAST6=m
 CONFIG_CRYPTO_DES=m
 CONFIG_CRYPTO_FCRYPT=m
 CONFIG_CRYPTO_KHAZAD=m
 CONFIG_CRYPTO_SALSA20=m
-CONFIG_CRYPTO_SALSA20_586=m
+# CONFIG_CRYPTO_SALSA20_586 is not set
 CONFIG_CRYPTO_SEED=m
 CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_SERPENT_SSE2_586=m
 CONFIG_CRYPTO_TEA=m
 CONFIG_CRYPTO_TWOFISH=m
 CONFIG_CRYPTO_TWOFISH_COMMON=m
@@ -4696,7 +5653,7 @@ CONFIG_CRYPTO_TWOFISH_586=m
 #
 # Compression
 #
-CONFIG_CRYPTO_DEFLATE=y
+CONFIG_CRYPTO_DEFLATE=m
 CONFIG_CRYPTO_ZLIB=m
 CONFIG_CRYPTO_LZO=m
 
@@ -4704,9 +5661,9 @@ CONFIG_CRYPTO_LZO=m
 # Random Number Generation
 #
 CONFIG_CRYPTO_ANSI_CPRNG=m
-CONFIG_CRYPTO_USER_API=m
-CONFIG_CRYPTO_USER_API_HASH=m
-CONFIG_CRYPTO_USER_API_SKCIPHER=m
+CONFIG_CRYPTO_USER_API=y
+CONFIG_CRYPTO_USER_API_HASH=y
+CONFIG_CRYPTO_USER_API_SKCIPHER=y
 CONFIG_CRYPTO_HW=y
 CONFIG_CRYPTO_DEV_PADLOCK=m
 CONFIG_CRYPTO_DEV_PADLOCK_AES=m
@@ -4714,37 +5671,55 @@ CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
 CONFIG_CRYPTO_DEV_GEODE=m
 CONFIG_CRYPTO_DEV_HIFN_795X=m
 CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y
+CONFIG_ASYMMETRIC_KEY_TYPE=m
+CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=m
+CONFIG_PUBLIC_KEY_ALGO_RSA=m
+CONFIG_X509_CERTIFICATE_PARSER=m
 CONFIG_HAVE_KVM=y
 CONFIG_HAVE_KVM_IRQCHIP=y
+CONFIG_HAVE_KVM_IRQ_ROUTING=y
 CONFIG_HAVE_KVM_EVENTFD=y
 CONFIG_KVM_APIC_ARCHITECTURE=y
 CONFIG_KVM_MMIO=y
 CONFIG_KVM_ASYNC_PF=y
+CONFIG_HAVE_KVM_MSI=y
+CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y
 CONFIG_VIRTUALIZATION=y
 CONFIG_KVM=m
 CONFIG_KVM_INTEL=m
 CONFIG_KVM_AMD=m
-CONFIG_VHOST_NET=m
-CONFIG_LGUEST=m
-# CONFIG_BINARY_PRINTF is not set
+CONFIG_KVM_MMU_AUDIT=y
+CONFIG_KVM_DEVICE_ASSIGNMENT=y
+# CONFIG_LGUEST is not set
+CONFIG_BINARY_PRINTF=y
 
 #
 # Library routines
 #
 CONFIG_RAID6_PQ=m
 CONFIG_BITREVERSE=y
+CONFIG_GENERIC_STRNCPY_FROM_USER=y
+CONFIG_GENERIC_STRNLEN_USER=y
 CONFIG_GENERIC_FIND_FIRST_BIT=y
-CONFIG_CRC_CCITT=m
+CONFIG_GENERIC_PCI_IOMAP=y
+CONFIG_GENERIC_IOMAP=y
+CONFIG_GENERIC_IO=y
+CONFIG_CRC_CCITT=y
 CONFIG_CRC16=y
-CONFIG_CRC_T10DIF=m
+CONFIG_CRC_T10DIF=y
 CONFIG_CRC_ITU_T=m
 CONFIG_CRC32=y
+# CONFIG_CRC32_SELFTEST is not set
+CONFIG_CRC32_SLICEBY8=y
+# CONFIG_CRC32_SLICEBY4 is not set
+# CONFIG_CRC32_SARWATE is not set
+# CONFIG_CRC32_BIT is not set
 CONFIG_CRC7=m
 CONFIG_LIBCRC32C=m
 CONFIG_CRC8=m
 CONFIG_AUDIT_GENERIC=y
 CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
+CONFIG_ZLIB_DEFLATE=m
 CONFIG_LZO_COMPRESS=y
 CONFIG_LZO_DECOMPRESS=y
 CONFIG_XZ_DEC=y
@@ -4761,6 +5736,7 @@ CONFIG_DECOMPRESS_BZIP2=y
 CONFIG_DECOMPRESS_LZMA=y
 CONFIG_DECOMPRESS_XZ=y
 CONFIG_DECOMPRESS_LZO=y
+CONFIG_GENERIC_ALLOCATOR=y
 CONFIG_TEXTSEARCH=y
 CONFIG_TEXTSEARCH_KMP=m
 CONFIG_TEXTSEARCH_BM=m
@@ -4770,6 +5746,13 @@ CONFIG_HAS_IOPORT=y
 CONFIG_HAS_DMA=y
 CONFIG_CHECK_SIGNATURE=y
 CONFIG_CPU_RMAP=y
+CONFIG_DQL=y
 CONFIG_NLATTR=y
+CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y
 CONFIG_AVERAGE=y
+CONFIG_CLZ_TAB=y
 CONFIG_CORDIC=m
+# CONFIG_DDR is not set
+CONFIG_MPILIB=m
+CONFIG_OID_REGISTRY=m
+CONFIG_UCS2_STRING=y
index b9fd2aac964f3a233cb8fbe37f9d05a5709958eb..fc619b804e15cb28496f03ae487b8071a43bffad 100644 (file)
@@ -1,46 +1,34 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/i386 3.2.47 Kernel Configuration
+# Linux/x86 3.10.11-ipfire Kernel Configuration
 #
 # CONFIG_64BIT is not set
 CONFIG_X86_32=y
-# CONFIG_X86_64 is not set
 CONFIG_X86=y
 CONFIG_INSTRUCTION_DECODER=y
 CONFIG_OUTPUT_FORMAT="elf32-i386"
 CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"
-CONFIG_GENERIC_CMOS_UPDATE=y
-CONFIG_CLOCKSOURCE_WATCHDOG=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
 CONFIG_LOCKDEP_SUPPORT=y
 CONFIG_STACKTRACE_SUPPORT=y
 CONFIG_HAVE_LATENCYTOP_SUPPORT=y
 CONFIG_MMU=y
-CONFIG_ZONE_DMA=y
 CONFIG_NEED_DMA_MAP_STATE=y
 CONFIG_NEED_SG_DMA_LENGTH=y
 CONFIG_GENERIC_ISA_DMA=y
-CONFIG_GENERIC_IOMAP=y
 CONFIG_GENERIC_BUG=y
 CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_GPIO=y
 CONFIG_ARCH_MAY_HAVE_PC_FDC=y
-# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
 CONFIG_RWSEM_XCHGADD_ALGORITHM=y
-CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
 CONFIG_GENERIC_CALIBRATE_DELAY=y
-# CONFIG_GENERIC_TIME_VSYSCALL is not set
 CONFIG_ARCH_HAS_CPU_RELAX=y
-CONFIG_ARCH_HAS_DEFAULT_IDLE=y
 CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
+CONFIG_ARCH_HAS_CPU_AUTOPROBE=y
 CONFIG_HAVE_SETUP_PER_CPU_AREA=y
 CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
 CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
 CONFIG_ARCH_HIBERNATION_POSSIBLE=y
 CONFIG_ARCH_SUSPEND_POSSIBLE=y
 # CONFIG_ZONE_DMA32 is not set
-CONFIG_ARCH_POPULATES_NODE_MAP=y
 # CONFIG_AUDIT_ARCH is not set
 CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
 CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -48,16 +36,15 @@ CONFIG_HAVE_INTEL_TXT=y
 CONFIG_X86_32_SMP=y
 CONFIG_X86_HT=y
 CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-ecx -fcall-saved-edx"
-CONFIG_KTIME_SCALAR=y
 CONFIG_ARCH_CPU_PROBE_RELEASE=y
+CONFIG_ARCH_SUPPORTS_UPROBES=y
 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-CONFIG_HAVE_IRQ_WORK=y
 CONFIG_IRQ_WORK=y
+CONFIG_BUILDTIME_EXTABLE_SORT=y
 
 #
 # General setup
 #
-CONFIG_EXPERIMENTAL=y
 CONFIG_INIT_ENV_ARG_LIMIT=32
 CONFIG_CROSS_COMPILE=""
 CONFIG_LOCALVERSION=""
@@ -69,8 +56,8 @@ CONFIG_HAVE_KERNEL_XZ=y
 CONFIG_HAVE_KERNEL_LZO=y
 # CONFIG_KERNEL_GZIP is not set
 # CONFIG_KERNEL_BZIP2 is not set
-CONFIG_KERNEL_LZMA=y
-# CONFIG_KERNEL_XZ is not set
+# CONFIG_KERNEL_LZMA is not set
+CONFIG_KERNEL_XZ=y
 # CONFIG_KERNEL_LZO is not set
 CONFIG_DEFAULT_HOSTNAME="(none)"
 CONFIG_SWAP=y
@@ -78,54 +65,99 @@ CONFIG_SYSVIPC=y
 CONFIG_SYSVIPC_SYSCTL=y
 CONFIG_POSIX_MQUEUE=y
 CONFIG_POSIX_MQUEUE_SYSCTL=y
-CONFIG_BSD_PROCESS_ACCT=y
-CONFIG_BSD_PROCESS_ACCT_V3=y
-# CONFIG_FHANDLE is not set
-CONFIG_TASKSTATS=y
-CONFIG_TASK_DELAY_ACCT=y
-# CONFIG_TASK_XACCT is not set
+CONFIG_FHANDLE=y
 CONFIG_AUDIT=y
 CONFIG_AUDITSYSCALL=y
 CONFIG_AUDIT_WATCH=y
 CONFIG_AUDIT_TREE=y
+CONFIG_AUDIT_LOGINUID_IMMUTABLE=y
 CONFIG_HAVE_GENERIC_HARDIRQS=y
 
 #
 # IRQ subsystem
 #
 CONFIG_GENERIC_HARDIRQS=y
-CONFIG_HAVE_SPARSE_IRQ=y
 CONFIG_GENERIC_IRQ_PROBE=y
 CONFIG_GENERIC_IRQ_SHOW=y
 CONFIG_GENERIC_PENDING_IRQ=y
-CONFIG_GENERIC_IRQ_CHIP=y
+CONFIG_IRQ_DOMAIN=y
+# CONFIG_IRQ_DOMAIN_DEBUG is not set
 CONFIG_IRQ_FORCED_THREADING=y
 CONFIG_SPARSE_IRQ=y
+CONFIG_CLOCKSOURCE_WATCHDOG=y
+CONFIG_KTIME_SCALAR=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
+CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y
+CONFIG_GENERIC_CMOS_UPDATE=y
+
+#
+# Timers subsystem
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ_COMMON=y
+# CONFIG_HZ_PERIODIC is not set
+CONFIG_NO_HZ_IDLE=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+
+#
+# CPU/Task time and stats accounting
+#
+# CONFIG_TICK_CPU_ACCOUNTING is not set
+CONFIG_IRQ_TIME_ACCOUNTING=y
+CONFIG_BSD_PROCESS_ACCT=y
+# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+CONFIG_TASKSTATS=y
+CONFIG_TASK_DELAY_ACCT=y
+CONFIG_TASK_XACCT=y
+CONFIG_TASK_IO_ACCOUNTING=y
 
 #
 # RCU Subsystem
 #
 CONFIG_TREE_RCU=y
 # CONFIG_PREEMPT_RCU is not set
-# CONFIG_RCU_TRACE is not set
+CONFIG_RCU_STALL_COMMON=y
 CONFIG_RCU_FANOUT=32
+CONFIG_RCU_FANOUT_LEAF=16
 # CONFIG_RCU_FANOUT_EXACT is not set
-# CONFIG_RCU_FAST_NO_HZ is not set
+CONFIG_RCU_FAST_NO_HZ=y
 # CONFIG_TREE_RCU_TRACE is not set
+CONFIG_RCU_NOCB_CPU=y
+# CONFIG_RCU_NOCB_CPU_NONE is not set
+# CONFIG_RCU_NOCB_CPU_ZERO is not set
+CONFIG_RCU_NOCB_CPU_ALL=y
 # CONFIG_IKCONFIG is not set
-CONFIG_LOG_BUF_SHIFT=17
+CONFIG_LOG_BUF_SHIFT=18
 CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
-# CONFIG_CGROUPS is not set
+CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y
+CONFIG_ARCH_WANTS_PROT_NUMA_PROT_NONE=y
+CONFIG_CGROUPS=y
+# CONFIG_CGROUP_DEBUG is not set
+CONFIG_CGROUP_FREEZER=y
+CONFIG_CGROUP_DEVICE=y
+CONFIG_CPUSETS=y
+CONFIG_PROC_PID_CPUSET=y
+CONFIG_CGROUP_CPUACCT=y
+CONFIG_RESOURCE_COUNTERS=y
+# CONFIG_MEMCG is not set
+CONFIG_CGROUP_PERF=y
+CONFIG_CGROUP_SCHED=y
+CONFIG_FAIR_GROUP_SCHED=y
+# CONFIG_CFS_BANDWIDTH is not set
+CONFIG_RT_GROUP_SCHED=y
+CONFIG_BLK_CGROUP=y
+# CONFIG_DEBUG_BLK_CGROUP is not set
 CONFIG_NAMESPACES=y
 CONFIG_UTS_NS=y
 CONFIG_IPC_NS=y
-# CONFIG_USER_NS is not set
-# CONFIG_PID_NS is not set
-# CONFIG_NET_NS is not set
-# CONFIG_SCHED_AUTOGROUP is not set
-CONFIG_SYSFS_DEPRECATED=y
-CONFIG_SYSFS_DEPRECATED_V2=y
-# CONFIG_RELAY is not set
+CONFIG_PID_NS=y
+CONFIG_NET_NS=y
+CONFIG_SCHED_AUTOGROUP=y
+# CONFIG_SYSFS_DEPRECATED is not set
+CONFIG_RELAY=y
 CONFIG_BLK_DEV_INITRD=y
 CONFIG_INITRAMFS_SOURCE=""
 CONFIG_RD_GZIP=y
@@ -136,17 +168,19 @@ CONFIG_RD_LZO=y
 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 CONFIG_SYSCTL=y
 CONFIG_ANON_INODES=y
-# CONFIG_EXPERT is not set
+CONFIG_HAVE_UID16=y
+CONFIG_SYSCTL_EXCEPTION_TRACE=y
+CONFIG_HOTPLUG=y
+CONFIG_HAVE_PCSPKR_PLATFORM=y
+CONFIG_EXPERT=y
 CONFIG_UID16=y
 # CONFIG_SYSCTL_SYSCALL is not set
 CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-CONFIG_HOTPLUG=y
+CONFIG_KALLSYMS_ALL=y
 CONFIG_PRINTK=y
 CONFIG_BUG=y
 CONFIG_ELF_CORE=y
 CONFIG_PCSPKR_PLATFORM=y
-CONFIG_HAVE_PCSPKR_PLATFORM=y
 CONFIG_BASE_FULL=y
 CONFIG_FUTEX=y
 CONFIG_EPOLL=y
@@ -155,46 +189,68 @@ CONFIG_TIMERFD=y
 CONFIG_EVENTFD=y
 CONFIG_SHMEM=y
 CONFIG_AIO=y
-# CONFIG_EMBEDDED is not set
+CONFIG_PCI_QUIRKS=y
+CONFIG_EMBEDDED=y
 CONFIG_HAVE_PERF_EVENTS=y
 
 #
 # Kernel Performance Events And Counters
 #
 CONFIG_PERF_EVENTS=y
-# CONFIG_PERF_COUNTERS is not set
 # CONFIG_DEBUG_PERF_USE_VMALLOC is not set
 CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_PCI_QUIRKS=y
 CONFIG_SLUB_DEBUG=y
 # CONFIG_COMPAT_BRK is not set
 # CONFIG_SLAB is not set
 CONFIG_SLUB=y
+# CONFIG_SLOB is not set
 # CONFIG_PROFILING is not set
+CONFIG_TRACEPOINTS=y
 CONFIG_HAVE_OPROFILE=y
+CONFIG_OPROFILE_NMI_TIMER=y
 # CONFIG_KPROBES is not set
-# CONFIG_JUMP_LABEL is not set
+CONFIG_JUMP_LABEL=y
+# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
 CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
+CONFIG_ARCH_USE_BUILTIN_BSWAP=y
 CONFIG_USER_RETURN_NOTIFIER=y
 CONFIG_HAVE_IOREMAP_PROT=y
 CONFIG_HAVE_KPROBES=y
 CONFIG_HAVE_KRETPROBES=y
 CONFIG_HAVE_OPTPROBES=y
+CONFIG_HAVE_KPROBES_ON_FTRACE=y
 CONFIG_HAVE_ARCH_TRACEHOOK=y
 CONFIG_HAVE_DMA_ATTRS=y
 CONFIG_USE_GENERIC_SMP_HELPERS=y
+CONFIG_GENERIC_SMP_IDLE_THREAD=y
 CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
+CONFIG_HAVE_CLK=y
 CONFIG_HAVE_DMA_API_DEBUG=y
 CONFIG_HAVE_HW_BREAKPOINT=y
 CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y
 CONFIG_HAVE_USER_RETURN_NOTIFIER=y
 CONFIG_HAVE_PERF_EVENTS_NMI=y
+CONFIG_HAVE_PERF_REGS=y
+CONFIG_HAVE_PERF_USER_STACK_DUMP=y
 CONFIG_HAVE_ARCH_JUMP_LABEL=y
 CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y
+CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y
+CONFIG_HAVE_CMPXCHG_LOCAL=y
+CONFIG_HAVE_CMPXCHG_DOUBLE=y
+CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
+CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
+CONFIG_SECCOMP_FILTER=y
+CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
+CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
+CONFIG_MODULES_USE_ELF_REL=y
+CONFIG_CLONE_BACKWARDS=y
+CONFIG_OLD_SIGSUSPEND3=y
+CONFIG_OLD_SIGACTION=y
 
 #
 # GCOV-based kernel profiling
 #
+# CONFIG_GCOV_KERNEL is not set
 CONFIG_HAVE_GENERIC_DMA_COHERENT=y
 CONFIG_SLABINFO=y
 CONFIG_RT_MUTEXES=y
@@ -202,15 +258,40 @@ CONFIG_BASE_SMALL=0
 CONFIG_MODULES=y
 # CONFIG_MODULE_FORCE_LOAD is not set
 CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
 # CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_MODULE_SRCVERSION_ALL=y
+# CONFIG_MODULE_SIG is not set
 CONFIG_STOP_MACHINE=y
 CONFIG_BLOCK=y
 CONFIG_LBDAF=y
 CONFIG_BLK_DEV_BSG=y
 CONFIG_BLK_DEV_BSGLIB=y
-# CONFIG_BLK_DEV_INTEGRITY is not set
+CONFIG_BLK_DEV_INTEGRITY=y
+CONFIG_BLK_DEV_THROTTLING=y
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+CONFIG_LDM_PARTITION=y
+# CONFIG_LDM_DEBUG is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+CONFIG_EFI_PARTITION=y
+# CONFIG_SYSV68_PARTITION is not set
 
 #
 # IO Schedulers
@@ -218,84 +299,64 @@ CONFIG_BLK_DEV_BSGLIB=y
 CONFIG_IOSCHED_NOOP=y
 CONFIG_IOSCHED_DEADLINE=y
 CONFIG_IOSCHED_CFQ=y
+CONFIG_CFQ_GROUP_IOSCHED=y
 # CONFIG_DEFAULT_DEADLINE is not set
 CONFIG_DEFAULT_CFQ=y
 # CONFIG_DEFAULT_NOOP is not set
 CONFIG_DEFAULT_IOSCHED="cfq"
 CONFIG_PREEMPT_NOTIFIERS=y
 CONFIG_PADATA=y
-# CONFIG_INLINE_SPIN_TRYLOCK is not set
-# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
-# CONFIG_INLINE_SPIN_LOCK is not set
-# CONFIG_INLINE_SPIN_LOCK_BH is not set
-# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
-# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
-CONFIG_INLINE_SPIN_UNLOCK=y
-# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
+CONFIG_ASN1=m
 CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
-# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
-# CONFIG_INLINE_READ_TRYLOCK is not set
-# CONFIG_INLINE_READ_LOCK is not set
-# CONFIG_INLINE_READ_LOCK_BH is not set
-# CONFIG_INLINE_READ_LOCK_IRQ is not set
-# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
 CONFIG_INLINE_READ_UNLOCK=y
-# CONFIG_INLINE_READ_UNLOCK_BH is not set
 CONFIG_INLINE_READ_UNLOCK_IRQ=y
-# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
-# CONFIG_INLINE_WRITE_TRYLOCK is not set
-# CONFIG_INLINE_WRITE_LOCK is not set
-# CONFIG_INLINE_WRITE_LOCK_BH is not set
-# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
-# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
 CONFIG_INLINE_WRITE_UNLOCK=y
-# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
 CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
-# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
 CONFIG_MUTEX_SPIN_ON_OWNER=y
 CONFIG_FREEZER=y
 
 #
 # Processor type and features
 #
-CONFIG_TICK_ONESHOT=y
-CONFIG_NO_HZ=y
-CONFIG_HIGH_RES_TIMERS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y
+CONFIG_ZONE_DMA=y
 CONFIG_SMP=y
 CONFIG_X86_MPPARSE=y
 CONFIG_X86_BIGSMP=y
 CONFIG_X86_EXTENDED_PLATFORM=y
+# CONFIG_X86_GOLDFISH is not set
 # CONFIG_X86_WANT_INTEL_MID is not set
+CONFIG_X86_INTEL_LPSS=y
 # CONFIG_X86_RDC321X is not set
-# CONFIG_X86_32_NON_STANDARD is not set
+CONFIG_X86_32_NON_STANDARD=y
+# CONFIG_X86_NUMAQ is not set
 CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
-# CONFIG_X86_32_IRIS is not set
+# CONFIG_STA2X11 is not set
+# CONFIG_X86_SUMMIT is not set
+# CONFIG_X86_ES7000 is not set
+CONFIG_X86_32_IRIS=m
 CONFIG_SCHED_OMIT_FRAME_POINTER=y
-CONFIG_PARAVIRT_GUEST=y
-# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set
+CONFIG_HYPERVISOR_GUEST=y
+CONFIG_PARAVIRT=y
+# CONFIG_PARAVIRT_DEBUG is not set
+# CONFIG_PARAVIRT_SPINLOCKS is not set
 CONFIG_XEN=y
 CONFIG_XEN_DOM0=y
 CONFIG_XEN_PRIVILEGED_GUEST=y
 CONFIG_XEN_PVHVM=y
-CONFIG_XEN_MAX_DOMAIN_MEMORY=128
+CONFIG_XEN_MAX_DOMAIN_MEMORY=64
 CONFIG_XEN_SAVE_RESTORE=y
-CONFIG_KVM_CLOCK=y
+CONFIG_XEN_DEBUG_FS=y
 CONFIG_KVM_GUEST=y
-CONFIG_LGUEST_GUEST=y
-CONFIG_PARAVIRT=y
-CONFIG_PARAVIRT_SPINLOCKS=y
+# CONFIG_LGUEST_GUEST is not set
+CONFIG_PARAVIRT_TIME_ACCOUNTING=y
 CONFIG_PARAVIRT_CLOCK=y
-# CONFIG_PARAVIRT_DEBUG is not set
 CONFIG_NO_BOOTMEM=y
 # CONFIG_MEMTEST is not set
-# CONFIG_M386 is not set
 # CONFIG_M486 is not set
 # CONFIG_M586 is not set
-CONFIG_M586TSC=y
+# CONFIG_M586TSC is not set
 # CONFIG_M586MMX is not set
-# CONFIG_M686 is not set
+CONFIG_M686=y
 # CONFIG_MPENTIUMII is not set
 # CONFIG_MPENTIUMIII is not set
 # CONFIG_MPENTIUMM is not set
@@ -317,22 +378,17 @@ CONFIG_M586TSC=y
 # CONFIG_MATOM is not set
 CONFIG_X86_GENERIC=y
 CONFIG_X86_INTERNODE_CACHE_SHIFT=6
-CONFIG_X86_CMPXCHG=y
-CONFIG_CMPXCHG_LOCAL=y
-CONFIG_CMPXCHG_DOUBLE=y
 CONFIG_X86_L1_CACHE_SHIFT=6
-CONFIG_X86_XADD=y
-CONFIG_X86_PPRO_FENCE=y
-CONFIG_X86_F00F_BUG=y
-CONFIG_X86_WP_WORKS_OK=y
-CONFIG_X86_INVLPG=y
-CONFIG_X86_BSWAP=y
-CONFIG_X86_POPAD_OK=y
+# CONFIG_X86_PPRO_FENCE is not set
 CONFIG_X86_ALIGNMENT_16=y
 CONFIG_X86_INTEL_USERCOPY=y
+CONFIG_X86_USE_PPRO_CHECKSUM=y
 CONFIG_X86_TSC=y
 CONFIG_X86_CMPXCHG64=y
+CONFIG_X86_CMOV=y
 CONFIG_X86_MINIMUM_CPU_FAMILY=5
+CONFIG_X86_DEBUGCTLMSR=y
+# CONFIG_PROCESSOR_SELECT is not set
 CONFIG_CPU_SUP_INTEL=y
 CONFIG_CPU_SUP_CYRIX_32=y
 CONFIG_CPU_SUP_AMD=y
@@ -344,10 +400,9 @@ CONFIG_HPET_EMULATE_RTC=y
 CONFIG_DMI=y
 CONFIG_SWIOTLB=y
 CONFIG_IOMMU_HELPER=y
-CONFIG_NR_CPUS=256
+CONFIG_NR_CPUS=32
 CONFIG_SCHED_SMT=y
 CONFIG_SCHED_MC=y
-CONFIG_IRQ_TIME_ACCOUNTING=y
 CONFIG_PREEMPT_NONE=y
 # CONFIG_PREEMPT_VOLUNTARY is not set
 # CONFIG_PREEMPT is not set
@@ -357,28 +412,35 @@ CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
 CONFIG_X86_MCE=y
 CONFIG_X86_MCE_INTEL=y
 CONFIG_X86_MCE_AMD=y
-CONFIG_X86_ANCIENT_MCE=y
+# CONFIG_X86_ANCIENT_MCE is not set
 CONFIG_X86_MCE_THRESHOLD=y
-CONFIG_X86_MCE_INJECT=m
+# CONFIG_X86_MCE_INJECT is not set
 CONFIG_X86_THERMAL_VECTOR=y
 CONFIG_VM86=y
 CONFIG_TOSHIBA=m
 CONFIG_I8K=m
-CONFIG_X86_REBOOTFIXUPS=y
+# CONFIG_X86_REBOOTFIXUPS is not set
 CONFIG_MICROCODE=m
 CONFIG_MICROCODE_INTEL=y
 CONFIG_MICROCODE_AMD=y
 CONFIG_MICROCODE_OLD_INTERFACE=y
-CONFIG_X86_MSR=m
+CONFIG_MICROCODE_INTEL_LIB=y
+CONFIG_MICROCODE_INTEL_EARLY=y
+CONFIG_MICROCODE_EARLY=y
+# CONFIG_X86_MSR is not set
 CONFIG_X86_CPUID=y
 # CONFIG_NOHIGHMEM is not set
 # CONFIG_HIGHMEM4G is not set
 CONFIG_HIGHMEM64G=y
+CONFIG_VMSPLIT_3G=y
+# CONFIG_VMSPLIT_2G is not set
+# CONFIG_VMSPLIT_1G is not set
 CONFIG_PAGE_OFFSET=0xC0000000
 CONFIG_HIGHMEM=y
 CONFIG_X86_PAE=y
 CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
 CONFIG_ARCH_DMA_ADDR_T_64BIT=y
+# CONFIG_NUMA is not set
 CONFIG_ARCH_FLATMEM_ENABLE=y
 CONFIG_ARCH_SPARSEMEM_ENABLE=y
 CONFIG_ARCH_SELECT_MEMORY_MODEL=y
@@ -390,9 +452,15 @@ CONFIG_FLATMEM=y
 CONFIG_FLAT_NODE_MEM_MAP=y
 CONFIG_SPARSEMEM_STATIC=y
 CONFIG_HAVE_MEMBLOCK=y
+CONFIG_HAVE_MEMBLOCK_NODE_MAP=y
+CONFIG_ARCH_DISCARD_MEMBLOCK=y
+CONFIG_MEMORY_ISOLATION=y
+# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
 CONFIG_PAGEFLAGS_EXTENDED=y
 CONFIG_SPLIT_PTLOCK_CPUS=4
-# CONFIG_COMPACTION is not set
+CONFIG_BALLOON_COMPACTION=y
+CONFIG_COMPACTION=y
+CONFIG_MIGRATION=y
 CONFIG_PHYS_ADDR_T_64BIT=y
 CONFIG_ZONE_DMA_FLAG=1
 CONFIG_BOUNCE=y
@@ -401,19 +469,28 @@ CONFIG_MMU_NOTIFIER=y
 CONFIG_KSM=y
 CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
 CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y
-# CONFIG_MEMORY_FAILURE is not set
-# CONFIG_TRANSPARENT_HUGEPAGE is not set
-# CONFIG_CLEANCACHE is not set
-# CONFIG_HIGHPTE is not set
-# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set
+CONFIG_MEMORY_FAILURE=y
+CONFIG_TRANSPARENT_HUGEPAGE=y
+CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
+# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
+CONFIG_CROSS_MEMORY_ATTACH=y
+CONFIG_CLEANCACHE=y
+# CONFIG_FRONTSWAP is not set
+CONFIG_HIGHPTE=y
+CONFIG_X86_CHECK_BIOS_CORRUPTION=y
+CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
 CONFIG_X86_RESERVE_LOW=64
-CONFIG_MATH_EMULATION=y
+# CONFIG_MATH_EMULATION is not set
 CONFIG_MTRR=y
-# CONFIG_MTRR_SANITIZER is not set
+CONFIG_MTRR_SANITIZER=y
+CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1
+CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1
 CONFIG_X86_PAT=y
 CONFIG_ARCH_USES_PG_UNCACHED=y
 CONFIG_ARCH_RANDOM=y
-# CONFIG_EFI is not set
+CONFIG_X86_SMAP=y
+CONFIG_EFI=y
+CONFIG_EFI_STUB=y
 CONFIG_SECCOMP=y
 CONFIG_CC_STACKPROTECTOR=y
 # CONFIG_HZ_100 is not set
@@ -423,12 +500,14 @@ CONFIG_HZ_300=y
 CONFIG_HZ=300
 CONFIG_SCHED_HRTICK=y
 # CONFIG_KEXEC is not set
-# CONFIG_CRASH_DUMP is not set
-CONFIG_PHYSICAL_START=0x1000000
-# CONFIG_RELOCATABLE is not set
-CONFIG_PHYSICAL_ALIGN=0x100000
+CONFIG_CRASH_DUMP=y
+CONFIG_PHYSICAL_START=0x400000
+CONFIG_RELOCATABLE=y
+CONFIG_X86_NEED_RELOCS=y
+CONFIG_PHYSICAL_ALIGN=0x400000
 CONFIG_HOTPLUG_CPU=y
-CONFIG_COMPAT_VDSO=y
+# CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set
+# CONFIG_DEBUG_HOTPLUG_CPU0 is not set
 # CONFIG_CMDLINE_BOOL is not set
 CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
 
@@ -438,43 +517,55 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
 CONFIG_SUSPEND=y
 CONFIG_SUSPEND_FREEZER=y
 CONFIG_HIBERNATE_CALLBACKS=y
-# CONFIG_HIBERNATION is not set
+CONFIG_HIBERNATION=y
+CONFIG_PM_STD_PARTITION=""
 CONFIG_PM_SLEEP=y
 CONFIG_PM_SLEEP_SMP=y
+# CONFIG_PM_AUTOSLEEP is not set
+# CONFIG_PM_WAKELOCKS is not set
 CONFIG_PM_RUNTIME=y
 CONFIG_PM=y
 # CONFIG_PM_DEBUG is not set
+CONFIG_PM_CLK=y
 CONFIG_ACPI=y
 CONFIG_ACPI_SLEEP=y
-# CONFIG_ACPI_PROCFS is not set
-CONFIG_ACPI_PROCFS_POWER=y
+CONFIG_ACPI_PROCFS=y
+# CONFIG_ACPI_PROCFS_POWER is not set
 CONFIG_ACPI_EC_DEBUGFS=m
-CONFIG_ACPI_PROC_EVENT=y
-CONFIG_ACPI_AC=m
-CONFIG_ACPI_BATTERY=m
-CONFIG_ACPI_BUTTON=m
+# CONFIG_ACPI_PROC_EVENT is not set
+CONFIG_ACPI_AC=y
+CONFIG_ACPI_BATTERY=y
+CONFIG_ACPI_BUTTON=y
 CONFIG_ACPI_VIDEO=m
-CONFIG_ACPI_FAN=m
+CONFIG_ACPI_FAN=y
 CONFIG_ACPI_DOCK=y
-CONFIG_ACPI_PROCESSOR=m
+CONFIG_ACPI_I2C=m
+CONFIG_ACPI_PROCESSOR=y
 CONFIG_ACPI_IPMI=m
 CONFIG_ACPI_HOTPLUG_CPU=y
 CONFIG_ACPI_PROCESSOR_AGGREGATOR=m
-CONFIG_ACPI_THERMAL=m
-CONFIG_ACPI_CUSTOM_DSDT_FILE=""
+CONFIG_ACPI_THERMAL=y
 # CONFIG_ACPI_CUSTOM_DSDT is not set
-CONFIG_ACPI_BLACKLIST_YEAR=0
+CONFIG_ACPI_INITRD_TABLE_OVERRIDE=y
+CONFIG_ACPI_BLACKLIST_YEAR=1999
 # CONFIG_ACPI_DEBUG is not set
-CONFIG_ACPI_PCI_SLOT=m
+CONFIG_ACPI_PCI_SLOT=y
 CONFIG_X86_PM_TIMER=y
-CONFIG_ACPI_CONTAINER=m
+CONFIG_ACPI_CONTAINER=y
 CONFIG_ACPI_SBS=m
-# CONFIG_ACPI_HED is not set
-# CONFIG_ACPI_APEI is not set
-# CONFIG_SFI is not set
+CONFIG_ACPI_HED=y
+CONFIG_ACPI_CUSTOM_METHOD=m
+# CONFIG_ACPI_BGRT is not set
+CONFIG_ACPI_APEI=y
+CONFIG_ACPI_APEI_GHES=y
+CONFIG_ACPI_APEI_PCIEAER=y
+CONFIG_ACPI_APEI_MEMORY_FAILURE=y
+# CONFIG_ACPI_APEI_EINJ is not set
+# CONFIG_ACPI_APEI_ERST_DEBUG is not set
+CONFIG_SFI=y
 CONFIG_X86_APM_BOOT=y
-CONFIG_APM=m
-CONFIG_APM_IGNORE_USER_SUSPEND=y
+CONFIG_APM=y
+# CONFIG_APM_IGNORE_USER_SUSPEND is not set
 # CONFIG_APM_DO_ENABLE is not set
 CONFIG_APM_CPU_IDLE=y
 # CONFIG_APM_DISPLAY_BLANK is not set
@@ -485,46 +576,52 @@ CONFIG_APM_CPU_IDLE=y
 #
 CONFIG_CPU_FREQ=y
 CONFIG_CPU_FREQ_TABLE=y
-CONFIG_CPU_FREQ_STAT=y
+CONFIG_CPU_FREQ_GOV_COMMON=y
+CONFIG_CPU_FREQ_STAT=m
 CONFIG_CPU_FREQ_STAT_DETAILS=y
-CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
 # CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
 # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
 CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
 CONFIG_CPU_FREQ_GOV_POWERSAVE=m
-CONFIG_CPU_FREQ_GOV_USERSPACE=m
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
 CONFIG_CPU_FREQ_GOV_ONDEMAND=m
 CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
 
 #
 # x86 CPU frequency scaling drivers
 #
-CONFIG_X86_PCC_CPUFREQ=m
-CONFIG_X86_ACPI_CPUFREQ=m
-CONFIG_X86_POWERNOW_K6=m
-CONFIG_X86_POWERNOW_K7=m
+CONFIG_X86_INTEL_PSTATE=y
+CONFIG_X86_PCC_CPUFREQ=y
+CONFIG_X86_ACPI_CPUFREQ=y
+# CONFIG_X86_ACPI_CPUFREQ_CPB is not set
+# CONFIG_X86_POWERNOW_K6 is not set
+CONFIG_X86_POWERNOW_K7=y
 CONFIG_X86_POWERNOW_K7_ACPI=y
-CONFIG_X86_POWERNOW_K8=m
-CONFIG_X86_GX_SUSPMOD=m
-CONFIG_X86_SPEEDSTEP_CENTRINO=m
-CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE=y
-CONFIG_X86_SPEEDSTEP_ICH=m
-CONFIG_X86_SPEEDSTEP_SMI=m
-CONFIG_X86_P4_CLOCKMOD=m
-CONFIG_X86_CPUFREQ_NFORCE2=m
-CONFIG_X86_LONGRUN=m
-CONFIG_X86_LONGHAUL=m
-CONFIG_X86_E_POWERSAVER=m
+CONFIG_X86_POWERNOW_K8=y
+# CONFIG_X86_AMD_FREQ_SENSITIVITY is not set
+# CONFIG_X86_GX_SUSPMOD is not set
+# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
+CONFIG_X86_SPEEDSTEP_ICH=y
+CONFIG_X86_SPEEDSTEP_SMI=y
+CONFIG_X86_P4_CLOCKMOD=y
+# CONFIG_X86_CPUFREQ_NFORCE2 is not set
+CONFIG_X86_LONGRUN=y
+# CONFIG_X86_LONGHAUL is not set
+# CONFIG_X86_E_POWERSAVER is not set
 
 #
 # shared options
 #
-CONFIG_X86_SPEEDSTEP_LIB=m
+CONFIG_X86_SPEEDSTEP_LIB=y
 # CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK is not set
 CONFIG_CPU_IDLE=y
+# CONFIG_CPU_IDLE_MULTIPLE_DRIVERS is not set
 CONFIG_CPU_IDLE_GOV_LADDER=y
 CONFIG_CPU_IDLE_GOV_MENU=y
+# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set
 CONFIG_INTEL_IDLE=y
 
 #
@@ -542,17 +639,22 @@ CONFIG_PCI_XEN=y
 CONFIG_PCI_DOMAINS=y
 # CONFIG_PCI_CNB20LE_QUIRK is not set
 CONFIG_PCIEPORTBUS=y
+CONFIG_HOTPLUG_PCI_PCIE=y
 CONFIG_PCIEAER=y
-# CONFIG_PCIE_ECRC is not set
-# CONFIG_PCIEAER_INJECT is not set
+CONFIG_PCIE_ECRC=y
+CONFIG_PCIEAER_INJECT=m
 CONFIG_PCIEASPM=y
 # CONFIG_PCIEASPM_DEBUG is not set
+# CONFIG_PCIEASPM_DEFAULT is not set
+CONFIG_PCIEASPM_POWERSAVE=y
+# CONFIG_PCIEASPM_PERFORMANCE is not set
 CONFIG_PCIE_PME=y
 CONFIG_ARCH_SUPPORTS_MSI=y
 CONFIG_PCI_MSI=y
 # CONFIG_PCI_DEBUG is not set
-CONFIG_PCI_STUB=m
-CONFIG_XEN_PCIDEV_FRONTEND=y
+# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
+CONFIG_PCI_STUB=y
+CONFIG_XEN_PCIDEV_FRONTEND=m
 CONFIG_HT_IRQ=y
 CONFIG_PCI_ATS=y
 CONFIG_PCI_IOV=y
@@ -563,16 +665,14 @@ CONFIG_PCI_LABEL=y
 CONFIG_ISA_DMA_API=y
 CONFIG_ISA=y
 CONFIG_EISA=y
-CONFIG_EISA_VLB_PRIMING=y
+# CONFIG_EISA_VLB_PRIMING is not set
 CONFIG_EISA_PCI_EISA=y
 CONFIG_EISA_VIRTUAL_ROOT=y
 CONFIG_EISA_NAMES=y
-CONFIG_MCA=y
-CONFIG_MCA_LEGACY=y
-# CONFIG_MCA_PROC_FS is not set
-CONFIG_SCx200=m
-CONFIG_SCx200HR_TIMER=m
-CONFIG_ALIX=y
+# CONFIG_SCx200 is not set
+# CONFIG_ALIX is not set
+# CONFIG_NET5501 is not set
+# CONFIG_GEOS is not set
 CONFIG_AMD_NB=y
 CONFIG_PCCARD=m
 CONFIG_PCMCIA=m
@@ -594,17 +694,25 @@ CONFIG_I82365=m
 CONFIG_TCIC=m
 CONFIG_PCMCIA_PROBE=y
 CONFIG_PCCARD_NONSTATIC=y
-# CONFIG_HOTPLUG_PCI is not set
+CONFIG_HOTPLUG_PCI=y
+# CONFIG_HOTPLUG_PCI_COMPAQ is not set
+# CONFIG_HOTPLUG_PCI_IBM is not set
+CONFIG_HOTPLUG_PCI_ACPI=y
+CONFIG_HOTPLUG_PCI_ACPI_IBM=m
+# CONFIG_HOTPLUG_PCI_CPCI is not set
+# CONFIG_HOTPLUG_PCI_SHPC is not set
 # CONFIG_RAPIDIO is not set
 
 #
 # Executable file formats / Emulations
 #
 CONFIG_BINFMT_ELF=y
-# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
+CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
+CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
+CONFIG_BINFMT_SCRIPT=y
 CONFIG_HAVE_AOUT=y
-# CONFIG_BINFMT_AOUT is not set
-# CONFIG_BINFMT_MISC is not set
+CONFIG_BINFMT_MISC=y
+CONFIG_COREDUMP=y
 CONFIG_HAVE_ATOMIC_IOMAP=y
 CONFIG_HAVE_TEXT_POKE_SMP=y
 CONFIG_NET=y
@@ -613,10 +721,13 @@ CONFIG_NET=y
 # Networking options
 #
 CONFIG_PACKET=y
+CONFIG_PACKET_DIAG=y
 CONFIG_UNIX=y
+CONFIG_UNIX_DIAG=m
 CONFIG_XFRM=y
-CONFIG_XFRM_USER=m
-# CONFIG_XFRM_SUB_POLICY is not set
+CONFIG_XFRM_ALGO=y
+CONFIG_XFRM_USER=y
+CONFIG_XFRM_SUB_POLICY=y
 CONFIG_XFRM_MIGRATE=y
 CONFIG_XFRM_STATISTICS=y
 CONFIG_XFRM_IPCOMP=m
@@ -625,7 +736,7 @@ CONFIG_NET_KEY_MIGRATE=y
 CONFIG_INET=y
 CONFIG_IP_MULTICAST=y
 CONFIG_IP_ADVANCED_ROUTER=y
-# CONFIG_IP_FIB_TRIE_STATS is not set
+CONFIG_IP_FIB_TRIE_STATS=y
 CONFIG_IP_MULTIPLE_TABLES=y
 CONFIG_IP_ROUTE_MULTIPATH=y
 CONFIG_IP_ROUTE_VERBOSE=y
@@ -633,28 +744,31 @@ CONFIG_IP_ROUTE_CLASSID=y
 # CONFIG_IP_PNP is not set
 CONFIG_NET_IPIP=m
 CONFIG_NET_IPGRE_DEMUX=m
+CONFIG_NET_IP_TUNNEL=m
 CONFIG_NET_IPGRE=m
 CONFIG_NET_IPGRE_BROADCAST=y
 CONFIG_IP_MROUTE=y
-# CONFIG_IP_MROUTE_MULTIPLE_TABLES is not set
+CONFIG_IP_MROUTE_MULTIPLE_TABLES=y
 CONFIG_IP_PIMSM_V1=y
 CONFIG_IP_PIMSM_V2=y
-CONFIG_ARPD=y
+# CONFIG_ARPD is not set
 CONFIG_SYN_COOKIES=y
+CONFIG_NET_IPVTI=m
 CONFIG_INET_AH=m
 CONFIG_INET_ESP=m
 CONFIG_INET_IPCOMP=m
 CONFIG_INET_XFRM_TUNNEL=m
 CONFIG_INET_TUNNEL=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=y
-CONFIG_INET_XFRM_MODE_TUNNEL=y
-CONFIG_INET_XFRM_MODE_BEET=y
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
 CONFIG_INET_LRO=y
 CONFIG_INET_DIAG=m
 CONFIG_INET_TCP_DIAG=m
+CONFIG_INET_UDP_DIAG=m
 CONFIG_TCP_CONG_ADVANCED=y
 CONFIG_TCP_CONG_BIC=m
-CONFIG_TCP_CONG_CUBIC=m
+CONFIG_TCP_CONG_CUBIC=y
 CONFIG_TCP_CONG_WESTWOOD=m
 CONFIG_TCP_CONG_HTCP=m
 CONFIG_TCP_CONG_HSTCP=m
@@ -665,13 +779,15 @@ CONFIG_TCP_CONG_LP=m
 CONFIG_TCP_CONG_VENO=m
 CONFIG_TCP_CONG_YEAH=m
 CONFIG_TCP_CONG_ILLINOIS=m
-CONFIG_DEFAULT_RENO=y
-CONFIG_DEFAULT_TCP_CONG="reno"
-# CONFIG_TCP_MD5SIG is not set
+CONFIG_DEFAULT_CUBIC=y
+# CONFIG_DEFAULT_RENO is not set
+CONFIG_DEFAULT_TCP_CONG="cubic"
+CONFIG_TCP_MD5SIG=y
 CONFIG_IPV6=y
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+CONFIG_IPV6_PRIVACY=y
+CONFIG_IPV6_ROUTER_PREF=y
+CONFIG_IPV6_ROUTE_INFO=y
+CONFIG_IPV6_OPTIMISTIC_DAD=y
 CONFIG_INET6_AH=m
 CONFIG_INET6_ESP=m
 CONFIG_INET6_IPCOMP=m
@@ -683,14 +799,18 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m
 CONFIG_INET6_XFRM_MODE_BEET=m
 CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
 CONFIG_IPV6_SIT=m
-# CONFIG_IPV6_SIT_6RD is not set
+CONFIG_IPV6_SIT_6RD=y
 CONFIG_IPV6_NDISC_NODETYPE=y
 CONFIG_IPV6_TUNNEL=m
+CONFIG_IPV6_GRE=m
 CONFIG_IPV6_MULTIPLE_TABLES=y
-# CONFIG_IPV6_SUBTREES is not set
-# CONFIG_IPV6_MROUTE is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETWORK_PHY_TIMESTAMPING=y
+CONFIG_IPV6_SUBTREES=y
+CONFIG_IPV6_MROUTE=y
+CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
+CONFIG_IPV6_PIMSM_V2=y
+# CONFIG_NETLABEL is not set
+CONFIG_NETWORK_SECMARK=y
+# CONFIG_NETWORK_PHY_TIMESTAMPING is not set
 CONFIG_NETFILTER=y
 # CONFIG_NETFILTER_DEBUG is not set
 CONFIG_NETFILTER_ADVANCED=y
@@ -700,13 +820,18 @@ CONFIG_BRIDGE_NETFILTER=y
 # Core Netfilter Configuration
 #
 CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_ACCT=m
 CONFIG_NETFILTER_NETLINK_QUEUE=m
 CONFIG_NETFILTER_NETLINK_LOG=m
-CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CONNTRACK=y
 CONFIG_NF_CONNTRACK_MARK=y
-# CONFIG_NF_CONNTRACK_ZONES is not set
+CONFIG_NF_CONNTRACK_SECMARK=y
+CONFIG_NF_CONNTRACK_ZONES=y
+CONFIG_NF_CONNTRACK_PROCFS=y
 CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CONNTRACK_TIMEOUT=y
 CONFIG_NF_CONNTRACK_TIMESTAMP=y
+CONFIG_NF_CONNTRACK_LABELS=y
 CONFIG_NF_CT_PROTO_DCCP=m
 CONFIG_NF_CT_PROTO_GRE=m
 CONFIG_NF_CT_PROTO_SCTP=m
@@ -723,14 +848,28 @@ CONFIG_NF_CONNTRACK_SANE=m
 CONFIG_NF_CONNTRACK_SIP=m
 CONFIG_NF_CONNTRACK_TFTP=m
 CONFIG_NF_CT_NETLINK=m
+CONFIG_NF_CT_NETLINK_TIMEOUT=m
+CONFIG_NF_CT_NETLINK_HELPER=m
+CONFIG_NETFILTER_NETLINK_QUEUE_CT=y
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_NF_NAT_PROTO_DCCP=m
+CONFIG_NF_NAT_PROTO_UDPLITE=m
+CONFIG_NF_NAT_PROTO_SCTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_NF_NAT_TFTP=m
 CONFIG_NETFILTER_TPROXY=m
-CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XTABLES=y
 
 #
 # Xtables combined modules
 #
 CONFIG_NETFILTER_XT_MARK=m
 CONFIG_NETFILTER_XT_CONNMARK=m
+CONFIG_NETFILTER_XT_SET=m
 
 #
 # Xtables targets
@@ -739,20 +878,26 @@ CONFIG_NETFILTER_XT_TARGET_AUDIT=m
 CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
 CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
 CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m
 CONFIG_NETFILTER_XT_TARGET_CT=m
 CONFIG_NETFILTER_XT_TARGET_DSCP=m
 CONFIG_NETFILTER_XT_TARGET_HL=m
+CONFIG_NETFILTER_XT_TARGET_HMARK=m
 CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m
 CONFIG_NETFILTER_XT_TARGET_LED=m
+CONFIG_NETFILTER_XT_TARGET_LOG=m
 CONFIG_NETFILTER_XT_TARGET_IMQ=m
 CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NETMAP=m
 CONFIG_NETFILTER_XT_TARGET_NFLOG=m
 CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
 CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
 CONFIG_NETFILTER_XT_TARGET_RATEEST=m
+CONFIG_NETFILTER_XT_TARGET_REDIRECT=m
 CONFIG_NETFILTER_XT_TARGET_TEE=m
 CONFIG_NETFILTER_XT_TARGET_TPROXY=m
 CONFIG_NETFILTER_XT_TARGET_TRACE=m
+CONFIG_NETFILTER_XT_TARGET_SECMARK=m
 CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
 CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
 
@@ -760,9 +905,11 @@ CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
 # Xtables matches
 #
 CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
+CONFIG_NETFILTER_XT_MATCH_BPF=m
 CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
 CONFIG_NETFILTER_XT_MATCH_COMMENT=m
 CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m
 CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
 CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
 CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
@@ -770,17 +917,19 @@ CONFIG_NETFILTER_XT_MATCH_CPU=m
 CONFIG_NETFILTER_XT_MATCH_DCCP=m
 CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m
 CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ECN=m
 CONFIG_NETFILTER_XT_MATCH_ESP=m
 CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
 CONFIG_NETFILTER_XT_MATCH_HELPER=m
 CONFIG_NETFILTER_XT_MATCH_HL=m
 CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
-CONFIG_NETFILTER_XT_MATCH_IPVS=m
+# CONFIG_NETFILTER_XT_MATCH_IPVS is not set
 CONFIG_NETFILTER_XT_MATCH_LENGTH=m
 CONFIG_NETFILTER_XT_MATCH_LIMIT=m
 CONFIG_NETFILTER_XT_MATCH_MAC=m
 CONFIG_NETFILTER_XT_MATCH_MARK=m
 CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_NFACCT=m
 CONFIG_NETFILTER_XT_MATCH_OSF=m
 CONFIG_NETFILTER_XT_MATCH_OWNER=m
 CONFIG_NETFILTER_XT_MATCH_POLICY=m
@@ -800,7 +949,19 @@ CONFIG_NETFILTER_XT_MATCH_STRING=m
 CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
 CONFIG_NETFILTER_XT_MATCH_TIME=m
 CONFIG_NETFILTER_XT_MATCH_U32=m
-# CONFIG_IP_SET is not set
+CONFIG_IP_SET=m
+CONFIG_IP_SET_MAX=256
+CONFIG_IP_SET_BITMAP_IP=m
+CONFIG_IP_SET_BITMAP_IPMAC=m
+CONFIG_IP_SET_BITMAP_PORT=m
+CONFIG_IP_SET_HASH_IP=m
+CONFIG_IP_SET_HASH_IPPORT=m
+CONFIG_IP_SET_HASH_IPPORTIP=m
+CONFIG_IP_SET_HASH_IPPORTNET=m
+CONFIG_IP_SET_HASH_NET=m
+CONFIG_IP_SET_HASH_NETPORT=m
+CONFIG_IP_SET_HASH_NETIFACE=m
+CONFIG_IP_SET_LIST_SET=m
 CONFIG_IP_VS=m
 CONFIG_IP_VS_IPV6=y
 # CONFIG_IP_VS_DEBUG is not set
@@ -830,6 +991,11 @@ CONFIG_IP_VS_SH=m
 CONFIG_IP_VS_SED=m
 CONFIG_IP_VS_NQ=m
 
+#
+# IPVS SH scheduler
+#
+CONFIG_IP_VS_SH_TAB_BITS=8
+
 #
 # IPVS application helper
 #
@@ -840,40 +1006,31 @@ CONFIG_IP_VS_PE_SIP=m
 #
 # IP: Netfilter Configuration
 #
-CONFIG_NF_DEFRAG_IPV4=m
-CONFIG_NF_CONNTRACK_IPV4=m
-CONFIG_NF_CONNTRACK_PROC_COMPAT=y
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
+CONFIG_NF_DEFRAG_IPV4=y
+CONFIG_NF_CONNTRACK_IPV4=y
+# CONFIG_NF_CONNTRACK_PROC_COMPAT is not set
+CONFIG_IP_NF_IPTABLES=y
 CONFIG_IP_NF_MATCH_AH=m
 CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_RPFILTER=m
 CONFIG_IP_NF_MATCH_TTL=m
 CONFIG_IP_NF_FILTER=m
 CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_NF_NAT=m
-CONFIG_NF_NAT_NEEDED=y
+# CONFIG_IP_NF_TARGET_ULOG is not set
+CONFIG_NF_NAT_IPV4=m
 CONFIG_IP_NF_TARGET_MASQUERADE=m
 CONFIG_IP_NF_TARGET_NETMAP=m
 CONFIG_IP_NF_TARGET_REDIRECT=m
 CONFIG_NF_NAT_SNMP_BASIC=m
-CONFIG_NF_NAT_PROTO_DCCP=m
 CONFIG_NF_NAT_PROTO_GRE=m
-CONFIG_NF_NAT_PROTO_UDPLITE=m
-CONFIG_NF_NAT_PROTO_SCTP=m
-CONFIG_NF_NAT_FTP=m
-CONFIG_NF_NAT_IRC=m
-CONFIG_NF_NAT_TFTP=m
-CONFIG_NF_NAT_AMANDA=m
 CONFIG_NF_NAT_PPTP=m
 CONFIG_NF_NAT_H323=m
-CONFIG_NF_NAT_SIP=m
 CONFIG_IP_NF_MANGLE=m
 CONFIG_IP_NF_TARGET_CLUSTERIP=m
 CONFIG_IP_NF_TARGET_ECN=m
 CONFIG_IP_NF_TARGET_TTL=m
 CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_SECURITY=m
 CONFIG_IP_NF_ARPTABLES=m
 CONFIG_IP_NF_ARPFILTER=m
 CONFIG_IP_NF_ARP_MANGLE=m
@@ -882,10 +1039,9 @@ CONFIG_IP_NF_MATCH_IPP2P=m
 #
 # IPv6: Netfilter Configuration
 #
-CONFIG_NF_DEFRAG_IPV6=m
-CONFIG_NF_CONNTRACK_IPV6=m
-CONFIG_IP6_NF_QUEUE=m
-CONFIG_IP6_NF_IPTABLES=m
+CONFIG_NF_DEFRAG_IPV6=y
+CONFIG_NF_CONNTRACK_IPV6=y
+CONFIG_IP6_NF_IPTABLES=y
 CONFIG_IP6_NF_MATCH_AH=m
 CONFIG_IP6_NF_MATCH_EUI64=m
 CONFIG_IP6_NF_MATCH_FRAG=m
@@ -893,13 +1049,17 @@ CONFIG_IP6_NF_MATCH_OPTS=m
 CONFIG_IP6_NF_MATCH_HL=m
 CONFIG_IP6_NF_MATCH_IPV6HEADER=m
 CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_RPFILTER=m
 CONFIG_IP6_NF_MATCH_RT=m
 CONFIG_IP6_NF_TARGET_HL=m
-CONFIG_IP6_NF_TARGET_LOG=m
 CONFIG_IP6_NF_FILTER=m
 CONFIG_IP6_NF_TARGET_REJECT=m
 CONFIG_IP6_NF_MANGLE=m
 CONFIG_IP6_NF_RAW=m
+CONFIG_IP6_NF_SECURITY=m
+CONFIG_NF_NAT_IPV6=m
+CONFIG_IP6_NF_TARGET_MASQUERADE=m
+CONFIG_IP6_NF_TARGET_NPT=m
 CONFIG_BRIDGE_NF_EBTABLES=m
 CONFIG_BRIDGE_EBT_BROUTE=m
 CONFIG_BRIDGE_EBT_T_FILTER=m
@@ -920,49 +1080,52 @@ CONFIG_BRIDGE_EBT_MARK_T=m
 CONFIG_BRIDGE_EBT_REDIRECT=m
 CONFIG_BRIDGE_EBT_SNAT=m
 CONFIG_BRIDGE_EBT_LOG=m
-CONFIG_BRIDGE_EBT_ULOG=m
+# CONFIG_BRIDGE_EBT_ULOG is not set
 CONFIG_BRIDGE_EBT_NFLOG=m
 # CONFIG_IP_DCCP is not set
-# CONFIG_IP_SCTP is not set
+CONFIG_IP_SCTP=m
+# CONFIG_SCTP_DBG_MSG is not set
+# CONFIG_SCTP_DBG_OBJCNT is not set
+# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5 is not set
+CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1=y
+# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set
+CONFIG_SCTP_COOKIE_HMAC_MD5=y
+CONFIG_SCTP_COOKIE_HMAC_SHA1=y
 # CONFIG_RDS is not set
 # CONFIG_TIPC is not set
 CONFIG_ATM=m
 CONFIG_ATM_CLIP=m
-CONFIG_ATM_CLIP_NO_ICMP=y
+# CONFIG_ATM_CLIP_NO_ICMP is not set
 # CONFIG_ATM_LANE is not set
 CONFIG_ATM_BR2684=m
 # CONFIG_ATM_BR2684_IPFILTER is not set
 CONFIG_L2TP=m
+# CONFIG_L2TP_DEBUGFS is not set
 CONFIG_L2TP_V3=y
 CONFIG_L2TP_IP=m
 CONFIG_L2TP_ETH=m
-CONFIG_STP=m
-CONFIG_GARP=m
-CONFIG_BRIDGE=m
+CONFIG_STP=y
+CONFIG_GARP=y
+CONFIG_BRIDGE=y
 CONFIG_BRIDGE_IGMP_SNOOPING=y
+CONFIG_BRIDGE_VLAN_FILTERING=y
+CONFIG_HAVE_NET_DSA=y
 CONFIG_NET_DSA=y
 CONFIG_NET_DSA_TAG_DSA=y
 CONFIG_NET_DSA_TAG_EDSA=y
 CONFIG_NET_DSA_TAG_TRAILER=y
-CONFIG_NET_DSA_MV88E6XXX=y
-CONFIG_NET_DSA_MV88E6060=y
-CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y
-CONFIG_NET_DSA_MV88E6131=y
-CONFIG_NET_DSA_MV88E6123_61_65=y
 CONFIG_VLAN_8021Q=m
 CONFIG_VLAN_8021Q_GVRP=y
+# CONFIG_VLAN_8021Q_MVRP is not set
 # CONFIG_DECNET is not set
-CONFIG_LLC=m
+CONFIG_LLC=y
 # CONFIG_LLC2 is not set
 # CONFIG_IPX is not set
 # CONFIG_ATALK is not set
 # CONFIG_X25 is not set
 # CONFIG_LAPB is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
 # CONFIG_PHONET is not set
-CONFIG_IEEE802154=m
-CONFIG_IEEE802154_6LOWPAN=m
+# CONFIG_IEEE802154 is not set
 CONFIG_NET_SCHED=y
 
 #
@@ -986,7 +1149,10 @@ CONFIG_NET_SCH_DRR=m
 CONFIG_NET_SCH_MQPRIO=m
 CONFIG_NET_SCH_CHOKE=m
 CONFIG_NET_SCH_QFQ=m
+CONFIG_NET_SCH_CODEL=m
+CONFIG_NET_SCH_FQ_CODEL=m
 CONFIG_NET_SCH_INGRESS=m
+CONFIG_NET_SCH_PLUG=m
 
 #
 # Classification
@@ -1002,6 +1168,7 @@ CONFIG_CLS_U32_MARK=y
 CONFIG_NET_CLS_RSVP=m
 CONFIG_NET_CLS_RSVP6=m
 CONFIG_NET_CLS_FLOW=m
+CONFIG_NET_CLS_CGROUP=m
 CONFIG_NET_EMATCH=y
 CONFIG_NET_EMATCH_STACK=32
 CONFIG_NET_EMATCH_CMP=m
@@ -1009,6 +1176,7 @@ CONFIG_NET_EMATCH_NBYTE=m
 CONFIG_NET_EMATCH_U32=m
 CONFIG_NET_EMATCH_META=m
 CONFIG_NET_EMATCH_TEXT=m
+CONFIG_NET_EMATCH_IPSET=m
 CONFIG_NET_CLS_ACT=y
 CONFIG_NET_ACT_POLICE=m
 CONFIG_NET_ACT_GACT=m
@@ -1025,67 +1193,30 @@ CONFIG_NET_SCH_FIFO=y
 # CONFIG_DCB is not set
 CONFIG_DNS_RESOLVER=y
 CONFIG_BATMAN_ADV=m
+CONFIG_BATMAN_ADV_BLA=y
+CONFIG_BATMAN_ADV_DAT=y
+CONFIG_BATMAN_ADV_NC=y
 # CONFIG_BATMAN_ADV_DEBUG is not set
+CONFIG_OPENVSWITCH=m
+CONFIG_VSOCKETS=m
+CONFIG_VMWARE_VMCI_VSOCKETS=m
+CONFIG_NETLINK_MMAP=y
+CONFIG_NETLINK_DIAG=m
 CONFIG_RPS=y
 CONFIG_RFS_ACCEL=y
 CONFIG_XPS=y
+CONFIG_NETPRIO_CGROUP=m
+CONFIG_BQL=y
 
 #
 # Network testing
 #
 # CONFIG_NET_PKTGEN is not set
+# CONFIG_NET_DROP_MONITOR is not set
 # CONFIG_HAMRADIO is not set
 # CONFIG_CAN is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-CONFIG_IRTTY_SIR=m
-
-#
-# Dongle support
-#
-# CONFIG_DONGLE is not set
-CONFIG_KINGSUN_DONGLE=m
-CONFIG_KSDAZZLE_DONGLE=m
-CONFIG_KS959_DONGLE=m
-
-#
-# FIR device drivers
-#
-CONFIG_USB_IRDA=m
-CONFIG_SIGMATEL_FIR=m
-CONFIG_NSC_FIR=m
-CONFIG_WINBOND_FIR=m
-CONFIG_TOSHIBA_FIR=m
-CONFIG_SMC_IRCC_FIR=m
-CONFIG_ALI_FIR=m
-CONFIG_VLSI_FIR=m
-CONFIG_VIA_FIR=m
-CONFIG_MCS_FIR=m
+# CONFIG_IRDA is not set
 CONFIG_BT=m
-CONFIG_BT_L2CAP=y
-CONFIG_BT_SCO=y
 CONFIG_BT_RFCOMM=m
 CONFIG_BT_RFCOMM_TTY=y
 CONFIG_BT_BNEP=m
@@ -1104,11 +1235,12 @@ CONFIG_BT_HCIUART_H4=y
 CONFIG_BT_HCIUART_BCSP=y
 CONFIG_BT_HCIUART_ATH3K=y
 CONFIG_BT_HCIUART_LL=y
+CONFIG_BT_HCIUART_3WIRE=y
 CONFIG_BT_HCIBCM203X=m
 CONFIG_BT_HCIBPA10X=m
 CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
+# CONFIG_BT_HCIDTL1 is not set
+# CONFIG_BT_HCIBT3C is not set
 CONFIG_BT_HCIBLUECARD=m
 CONFIG_BT_HCIBTUART=m
 CONFIG_BT_HCIVHCI=m
@@ -1116,9 +1248,7 @@ CONFIG_BT_MRVL=m
 CONFIG_BT_MRVL_SDIO=m
 CONFIG_BT_ATH3K=m
 CONFIG_BT_WILINK=m
-CONFIG_AF_RXRPC=m
-# CONFIG_AF_RXRPC_DEBUG is not set
-CONFIG_RXKAD=m
+# CONFIG_AF_RXRPC is not set
 CONFIG_FIB_RULES=y
 CONFIG_WIRELESS=y
 CONFIG_WIRELESS_EXT=y
@@ -1130,10 +1260,11 @@ CONFIG_CFG80211=m
 # CONFIG_NL80211_TESTMODE is not set
 # CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
 # CONFIG_CFG80211_REG_DEBUG is not set
-# CONFIG_CFG80211_DEFAULT_PS is not set
+# CONFIG_CFG80211_CERTIFICATION_ONUS is not set
+CONFIG_CFG80211_DEFAULT_PS=y
+# CONFIG_CFG80211_DEBUGFS is not set
 # CONFIG_CFG80211_INTERNAL_REGDB is not set
 CONFIG_CFG80211_WEXT=y
-CONFIG_WIRELESS_EXT_SYSFS=y
 CONFIG_LIB80211=m
 CONFIG_LIB80211_CRYPT_WEP=m
 CONFIG_LIB80211_CRYPT_CCMP=m
@@ -1141,23 +1272,24 @@ CONFIG_LIB80211_CRYPT_TKIP=m
 # CONFIG_LIB80211_DEBUG is not set
 CONFIG_MAC80211=m
 CONFIG_MAC80211_HAS_RC=y
+# CONFIG_MAC80211_RC_PID is not set
 CONFIG_MAC80211_RC_MINSTREL=y
 CONFIG_MAC80211_RC_MINSTREL_HT=y
 CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
 CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
 CONFIG_MAC80211_MESH=y
 CONFIG_MAC80211_LEDS=y
+# CONFIG_MAC80211_DEBUGFS is not set
+# CONFIG_MAC80211_MESSAGE_TRACING is not set
 # CONFIG_MAC80211_DEBUG_MENU is not set
 # CONFIG_WIMAX is not set
 CONFIG_RFKILL=m
 CONFIG_RFKILL_LEDS=y
 CONFIG_RFKILL_INPUT=y
-CONFIG_RFKILL_REGULATOR=m
+CONFIG_RFKILL_GPIO=m
 # CONFIG_NET_9P is not set
 # CONFIG_CAIF is not set
-CONFIG_CEPH_LIB=m
-# CONFIG_CEPH_LIB_PRETTYDEBUG is not set
-# CONFIG_CEPH_LIB_USE_DNS_RESOLVER is not set
+# CONFIG_CEPH_LIB is not set
 # CONFIG_NFC is not set
 
 #
@@ -1167,100 +1299,30 @@ CONFIG_CEPH_LIB=m
 #
 # Generic Driver Options
 #
-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
-# CONFIG_DEVTMPFS is not set
-# CONFIG_STANDALONE is not set
-# CONFIG_PREVENT_FIRMWARE_BUILD is not set
+CONFIG_UEVENT_HELPER_PATH=""
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
 CONFIG_FW_LOADER=y
 # CONFIG_FIRMWARE_IN_KERNEL is not set
 CONFIG_EXTRA_FIRMWARE=""
+CONFIG_FW_LOADER_USER_HELPER=y
 # CONFIG_DEBUG_DRIVER is not set
 # CONFIG_DEBUG_DEVRES is not set
 CONFIG_SYS_HYPERVISOR=y
+# CONFIG_GENERIC_CPU_DEVICES is not set
 CONFIG_REGMAP=y
 CONFIG_REGMAP_I2C=m
-CONFIG_CONNECTOR=m
-CONFIG_MTD=m
-CONFIG_MTD_TESTS=m
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_AR7_PARTS=m
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=m
-CONFIG_MTD_BLKDEVS=m
-CONFIG_MTD_BLOCK=m
-# CONFIG_MTD_BLOCK_RO is not set
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-# CONFIG_SSFDC is not set
-CONFIG_SM_FTL=m
-# CONFIG_MTD_OOPS is not set
-# CONFIG_MTD_SWAP is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-CONFIG_MTD_PHYSMAP=m
-# CONFIG_MTD_PHYSMAP_COMPAT is not set
-# CONFIG_MTD_TS5500 is not set
-# CONFIG_MTD_INTEL_VR_NOR is not set
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-# CONFIG_MTD_DOCG3 is not set
-CONFIG_MTD_NAND_ECC=m
-# CONFIG_MTD_NAND_ECC_SMC is not set
-# CONFIG_MTD_NAND is not set
-# CONFIG_MTD_ONENAND is not set
-
-#
-# LPDDR flash memory drivers
-#
-CONFIG_MTD_LPDDR=m
-CONFIG_MTD_QINFO_PROBE=m
-CONFIG_MTD_UBI=m
-CONFIG_MTD_UBI_WL_THRESHOLD=4096
-CONFIG_MTD_UBI_BEB_RESERVE=1
-# CONFIG_MTD_UBI_GLUEBI is not set
-# CONFIG_MTD_UBI_DEBUG is not set
+CONFIG_REGMAP_IRQ=y
+CONFIG_DMA_SHARED_BUFFER=y
+
+#
+# Bus devices
+#
+CONFIG_CONNECTOR=y
+CONFIG_PROC_EVENTS=y
+# CONFIG_MTD is not set
 CONFIG_PARPORT=m
 CONFIG_PARPORT_PC=m
 CONFIG_PARPORT_SERIAL=m
@@ -1279,67 +1341,75 @@ CONFIG_PNP=y
 #
 CONFIG_ISAPNP=y
 CONFIG_PNPBIOS=y
-CONFIG_PNPBIOS_PROC_FS=y
+# CONFIG_PNPBIOS_PROC_FS is not set
 CONFIG_PNPACPI=y
 CONFIG_BLK_DEV=y
 CONFIG_BLK_DEV_FD=m
-# CONFIG_BLK_DEV_XD is not set
 # CONFIG_PARIDE is not set
+CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m
 CONFIG_BLK_CPQ_DA=m
 CONFIG_BLK_CPQ_CISS_DA=m
 # CONFIG_CISS_SCSI_TAPE is not set
 CONFIG_BLK_DEV_DAC960=m
-# CONFIG_BLK_DEV_UMEM is not set
+CONFIG_BLK_DEV_UMEM=m
 # CONFIG_BLK_DEV_COW_COMMON is not set
 CONFIG_BLK_DEV_LOOP=y
 CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
 CONFIG_BLK_DEV_CRYPTOLOOP=m
 # CONFIG_BLK_DEV_DRBD is not set
-CONFIG_BLK_DEV_NBD=m
-CONFIG_BLK_DEV_OSD=m
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_NVME=m
+# CONFIG_BLK_DEV_OSD is not set
 CONFIG_BLK_DEV_SX8=m
-# CONFIG_BLK_DEV_UB is not set
 CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=8
+CONFIG_BLK_DEV_RAM_COUNT=16
 CONFIG_BLK_DEV_RAM_SIZE=16384
 # CONFIG_BLK_DEV_XIP is not set
 # CONFIG_CDROM_PKTCDVD is not set
-CONFIG_ATA_OVER_ETH=m
-CONFIG_XEN_BLKDEV_FRONTEND=y
-CONFIG_XEN_BLKDEV_BACKEND=y
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_XEN_BLKDEV_FRONTEND=m
+CONFIG_XEN_BLKDEV_BACKEND=m
 CONFIG_VIRTIO_BLK=m
 # CONFIG_BLK_DEV_HD is not set
-CONFIG_BLK_DEV_RBD=m
+# CONFIG_BLK_DEV_RBD is not set
+CONFIG_BLK_DEV_RSXX=m
+
+#
+# Misc devices
+#
 CONFIG_SENSORS_LIS3LV02D=m
-CONFIG_MISC_DEVICES=y
 # CONFIG_AD525X_DPOT is not set
-# CONFIG_IBM_ASM is not set
+# CONFIG_ATMEL_PWM is not set
+CONFIG_DUMMY_IRQ=m
+CONFIG_IBM_ASM=m
 # CONFIG_PHANTOM is not set
 # CONFIG_INTEL_MID_PTI is not set
 # CONFIG_SGI_IOC4 is not set
 CONFIG_TIFM_CORE=m
 CONFIG_TIFM_7XX1=m
 CONFIG_ICS932S401=m
+# CONFIG_ATMEL_SSC is not set
 CONFIG_ENCLOSURE_SERVICES=m
 CONFIG_CS5535_MFGPT=m
 CONFIG_CS5535_MFGPT_DEFAULT_IRQ=7
 CONFIG_CS5535_CLOCK_EVENT_SRC=m
 CONFIG_HP_ILO=m
-CONFIG_APDS9802ALS=m
-CONFIG_ISL29003=m
-CONFIG_ISL29020=m
-CONFIG_SENSORS_TSL2550=m
-CONFIG_SENSORS_BH1780=m
-CONFIG_SENSORS_BH1770=m
-CONFIG_SENSORS_APDS990X=m
-CONFIG_HMC6352=m
+# CONFIG_APDS9802ALS is not set
+# CONFIG_ISL29003 is not set
+# CONFIG_ISL29020 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_SENSORS_BH1780 is not set
+# CONFIG_SENSORS_BH1770 is not set
+# CONFIG_SENSORS_APDS990X is not set
+# CONFIG_HMC6352 is not set
 CONFIG_DS1682=m
 CONFIG_VMWARE_BALLOON=m
-CONFIG_BMP085=m
+CONFIG_BMP085=y
+CONFIG_BMP085_I2C=m
 CONFIG_PCH_PHUB=m
 CONFIG_USB_SWITCH_FSA9480=m
-CONFIG_C2PORT=m
-CONFIG_C2PORT_DURAMAR_2150=m
+# CONFIG_SRAM is not set
+# CONFIG_C2PORT is not set
 
 #
 # EEPROM support
@@ -1351,62 +1421,63 @@ CONFIG_EEPROM_93CX6=m
 CONFIG_CB710_CORE=m
 # CONFIG_CB710_DEBUG is not set
 CONFIG_CB710_DEBUG_ASSUMPTIONS=y
-CONFIG_IWMC3200TOP=m
-# CONFIG_IWMC3200TOP_DEBUG is not set
-# CONFIG_IWMC3200TOP_DEBUGFS is not set
 
 #
 # Texas Instruments shared transport line discipline
 #
 CONFIG_TI_ST=m
-CONFIG_SENSORS_LIS3_I2C=m
+# CONFIG_SENSORS_LIS3_I2C is not set
 
 #
 # Altera FPGA firmware download module
 #
-# CONFIG_ALTERA_STAPL is not set
+CONFIG_ALTERA_STAPL=m
+CONFIG_INTEL_MEI=m
+CONFIG_INTEL_MEI_ME=m
+CONFIG_VMWARE_VMCI=m
 CONFIG_HAVE_IDE=y
 # CONFIG_IDE is not set
 
 #
 # SCSI device support
 #
-CONFIG_SCSI_MOD=m
+CONFIG_SCSI_MOD=y
 CONFIG_RAID_ATTRS=m
-CONFIG_SCSI=m
+CONFIG_SCSI=y
 CONFIG_SCSI_DMA=y
-# CONFIG_SCSI_TGT is not set
+CONFIG_SCSI_TGT=m
 CONFIG_SCSI_NETLINK=y
 CONFIG_SCSI_PROC_FS=y
 
 #
 # SCSI support type (disk, tape, CD-ROM)
 #
-CONFIG_BLK_DEV_SD=m
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-CONFIG_BLK_DEV_SR=m
+CONFIG_BLK_DEV_SD=y
+CONFIG_CHR_DEV_ST=m
+CONFIG_CHR_DEV_OSST=m
+CONFIG_BLK_DEV_SR=y
 CONFIG_BLK_DEV_SR_VENDOR=y
-CONFIG_CHR_DEV_SG=m
+CONFIG_CHR_DEV_SG=y
 CONFIG_CHR_DEV_SCH=m
 CONFIG_SCSI_ENCLOSURE=m
 CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-CONFIG_SCSI_WAIT_SCAN=m
+CONFIG_SCSI_CONSTANTS=y
+CONFIG_SCSI_LOGGING=y
+CONFIG_SCSI_SCAN_ASYNC=y
 
 #
 # SCSI Transports
 #
 CONFIG_SCSI_SPI_ATTRS=m
 CONFIG_SCSI_FC_ATTRS=m
+CONFIG_SCSI_FC_TGT_ATTRS=y
 CONFIG_SCSI_ISCSI_ATTRS=m
 CONFIG_SCSI_SAS_ATTRS=m
 CONFIG_SCSI_SAS_LIBSAS=m
 CONFIG_SCSI_SAS_ATA=y
 CONFIG_SCSI_SAS_HOST_SMP=y
 CONFIG_SCSI_SRP_ATTRS=m
+CONFIG_SCSI_SRP_TGT_ATTRS=y
 CONFIG_SCSI_LOWLEVEL=y
 CONFIG_ISCSI_TCP=m
 CONFIG_ISCSI_BOOT_SYSFS=m
@@ -1426,25 +1497,23 @@ CONFIG_SCSI_AHA1542=m
 CONFIG_SCSI_AHA1740=m
 CONFIG_SCSI_AACRAID=m
 CONFIG_SCSI_AIC7XXX=m
-CONFIG_AIC7XXX_CMDS_PER_DEVICE=253
-CONFIG_AIC7XXX_RESET_DELAY_MS=15000
-# CONFIG_AIC7XXX_BUILD_FIRMWARE is not set
-# CONFIG_AIC7XXX_DEBUG_ENABLE is not set
+CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
+CONFIG_AIC7XXX_RESET_DELAY_MS=5000
+CONFIG_AIC7XXX_DEBUG_ENABLE=y
 CONFIG_AIC7XXX_DEBUG_MASK=0
-# CONFIG_AIC7XXX_REG_PRETTY_PRINT is not set
+CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
 # CONFIG_SCSI_AIC7XXX_OLD is not set
 CONFIG_SCSI_AIC79XX=m
 CONFIG_AIC79XX_CMDS_PER_DEVICE=32
-CONFIG_AIC79XX_RESET_DELAY_MS=15000
-# CONFIG_AIC79XX_BUILD_FIRMWARE is not set
+CONFIG_AIC79XX_RESET_DELAY_MS=4000
 # CONFIG_AIC79XX_DEBUG_ENABLE is not set
 CONFIG_AIC79XX_DEBUG_MASK=0
 # CONFIG_AIC79XX_REG_PRETTY_PRINT is not set
 CONFIG_SCSI_AIC94XX=m
 # CONFIG_AIC94XX_DEBUG is not set
 CONFIG_SCSI_MVSAS=m
-CONFIG_SCSI_MVSAS_DEBUG=y
-# CONFIG_SCSI_MVSAS_TASKLET is not set
+# CONFIG_SCSI_MVSAS_DEBUG is not set
+CONFIG_SCSI_MVSAS_TASKLET=y
 CONFIG_SCSI_MVUMI=m
 CONFIG_SCSI_DPT_I2O=m
 CONFIG_SCSI_ADVANSYS=m
@@ -1458,9 +1527,15 @@ CONFIG_MEGARAID_SAS=m
 CONFIG_SCSI_MPT2SAS=m
 CONFIG_SCSI_MPT2SAS_MAX_SGE=128
 # CONFIG_SCSI_MPT2SAS_LOGGING is not set
+CONFIG_SCSI_MPT3SAS=m
+CONFIG_SCSI_MPT3SAS_MAX_SGE=128
+# CONFIG_SCSI_MPT3SAS_LOGGING is not set
+CONFIG_SCSI_UFSHCD=m
+CONFIG_SCSI_UFSHCD_PCI=m
+CONFIG_SCSI_UFSHCD_PLATFORM=m
 CONFIG_SCSI_HPTIOP=m
 CONFIG_SCSI_BUSLOGIC=m
-CONFIG_SCSI_FLASHPOINT=y
+# CONFIG_SCSI_FLASHPOINT is not set
 CONFIG_VMWARE_PVSCSI=m
 CONFIG_LIBFC=m
 CONFIG_LIBFCOE=m
@@ -1470,18 +1545,14 @@ CONFIG_SCSI_DMX3191D=m
 CONFIG_SCSI_DTC3280=m
 CONFIG_SCSI_EATA=m
 CONFIG_SCSI_EATA_TAGGED_QUEUE=y
-CONFIG_SCSI_EATA_LINKED_COMMANDS=y
+# CONFIG_SCSI_EATA_LINKED_COMMANDS is not set
 CONFIG_SCSI_EATA_MAX_TAGS=16
 CONFIG_SCSI_FUTURE_DOMAIN=m
-CONFIG_SCSI_FD_MCS=m
 CONFIG_SCSI_GDTH=m
 CONFIG_SCSI_ISCI=m
 CONFIG_SCSI_GENERIC_NCR5380=m
 CONFIG_SCSI_GENERIC_NCR5380_MMIO=m
-CONFIG_SCSI_GENERIC_NCR53C400=y
-CONFIG_SCSI_IBMMCA=m
-# CONFIG_IBMMCA_SCSI_ORDER_STANDARD is not set
-# CONFIG_IBMMCA_SCSI_DEV_RESET is not set
+# CONFIG_SCSI_GENERIC_NCR53C400 is not set
 CONFIG_SCSI_IPS=m
 CONFIG_SCSI_INITIO=m
 CONFIG_SCSI_INIA100=m
@@ -1490,7 +1561,6 @@ CONFIG_SCSI_IMM=m
 # CONFIG_SCSI_IZIP_EPP16 is not set
 # CONFIG_SCSI_IZIP_SLOW_CTR is not set
 CONFIG_SCSI_NCR53C406A=m
-CONFIG_SCSI_NCR_D700=m
 CONFIG_SCSI_STEX=m
 CONFIG_SCSI_SYM53C8XX_2=m
 CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
@@ -1500,24 +1570,21 @@ CONFIG_SCSI_SYM53C8XX_MMIO=y
 CONFIG_SCSI_IPR=m
 CONFIG_SCSI_IPR_TRACE=y
 CONFIG_SCSI_IPR_DUMP=y
-CONFIG_SCSI_NCR_Q720=m
-CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8
-CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32
-CONFIG_SCSI_NCR53C8XX_SYNC=20
 CONFIG_SCSI_PAS16=m
 CONFIG_SCSI_QLOGIC_FAS=m
 CONFIG_SCSI_QLOGIC_1280=m
 CONFIG_SCSI_QLA_FC=m
 CONFIG_SCSI_QLA_ISCSI=m
 CONFIG_SCSI_LPFC=m
+# CONFIG_SCSI_LPFC_DEBUG_FS is not set
 CONFIG_SCSI_SIM710=m
 CONFIG_SCSI_SYM53C416=m
 CONFIG_SCSI_DC395x=m
 CONFIG_SCSI_DC390T=m
 CONFIG_SCSI_T128=m
 CONFIG_SCSI_U14_34F=m
-CONFIG_SCSI_U14_34F_TAGGED_QUEUE=y
-CONFIG_SCSI_U14_34F_LINKED_COMMANDS=y
+# CONFIG_SCSI_U14_34F_TAGGED_QUEUE is not set
+# CONFIG_SCSI_U14_34F_LINKED_COMMANDS is not set
 CONFIG_SCSI_U14_34F_MAX_TAGS=8
 CONFIG_SCSI_ULTRASTOR=m
 CONFIG_SCSI_NSP32=m
@@ -1526,13 +1593,15 @@ CONFIG_SCSI_PMCRAID=m
 CONFIG_SCSI_PM8001=m
 # CONFIG_SCSI_SRP is not set
 CONFIG_SCSI_BFA_FC=m
+CONFIG_SCSI_VIRTIO=m
+CONFIG_SCSI_CHELSIO_FCOE=m
 CONFIG_SCSI_LOWLEVEL_PCMCIA=y
 CONFIG_PCMCIA_AHA152X=m
 CONFIG_PCMCIA_FDOMAIN=m
 CONFIG_PCMCIA_NINJA_SCSI=m
 CONFIG_PCMCIA_QLOGIC=m
 CONFIG_PCMCIA_SYM53C500=m
-CONFIG_SCSI_DH=m
+CONFIG_SCSI_DH=y
 CONFIG_SCSI_DH_RDAC=m
 CONFIG_SCSI_DH_HP_SW=m
 CONFIG_SCSI_DH_EMC=m
@@ -1541,16 +1610,17 @@ CONFIG_SCSI_OSD_INITIATOR=m
 CONFIG_SCSI_OSD_ULD=m
 CONFIG_SCSI_OSD_DPRINT_SENSE=1
 # CONFIG_SCSI_OSD_DEBUG is not set
-CONFIG_ATA=m
+CONFIG_ATA=y
 # CONFIG_ATA_NONSTANDARD is not set
 CONFIG_ATA_VERBOSE_ERROR=y
 CONFIG_ATA_ACPI=y
+CONFIG_SATA_ZPODD=y
 CONFIG_SATA_PMP=y
 
 #
 # Controllers with non-SFF native interface
 #
-CONFIG_SATA_AHCI=m
+CONFIG_SATA_AHCI=y
 CONFIG_SATA_AHCI_PLATFORM=m
 CONFIG_SATA_INIC162X=m
 CONFIG_SATA_ACARD_AHCI=m
@@ -1568,7 +1638,8 @@ CONFIG_ATA_BMDMA=y
 #
 # SATA SFF controllers with BMDMA
 #
-CONFIG_ATA_PIIX=m
+CONFIG_ATA_PIIX=y
+CONFIG_SATA_HIGHBANK=m
 CONFIG_SATA_MV=m
 CONFIG_SATA_NV=m
 CONFIG_SATA_PROMISE=m
@@ -1591,7 +1662,7 @@ CONFIG_PATA_ATP867X=m
 CONFIG_PATA_CMD64X=m
 CONFIG_PATA_CS5520=m
 CONFIG_PATA_CS5530=m
-CONFIG_PATA_CS5535=m
+# CONFIG_PATA_CS5535 is not set
 CONFIG_PATA_CS5536=m
 CONFIG_PATA_CYPRESS=m
 CONFIG_PATA_EFAR=m
@@ -1599,7 +1670,7 @@ CONFIG_PATA_HPT366=m
 CONFIG_PATA_HPT37X=m
 CONFIG_PATA_HPT3X2N=m
 CONFIG_PATA_HPT3X3=m
-CONFIG_PATA_HPT3X3_DMA=y
+# CONFIG_PATA_HPT3X3_DMA is not set
 CONFIG_PATA_IT8213=m
 CONFIG_PATA_IT821X=m
 CONFIG_PATA_JMICRON=m
@@ -1632,6 +1703,7 @@ CONFIG_PATA_MPIIX=m
 CONFIG_PATA_NS87410=m
 CONFIG_PATA_OPTI=m
 CONFIG_PATA_PCMCIA=m
+CONFIG_PATA_PLATFORM=m
 CONFIG_PATA_QDI=m
 CONFIG_PATA_RZ1000=m
 CONFIG_PATA_WINBOND_VLB=m
@@ -1643,75 +1715,93 @@ CONFIG_PATA_ACPI=m
 CONFIG_ATA_GENERIC=m
 CONFIG_PATA_LEGACY=m
 CONFIG_MD=y
-CONFIG_BLK_DEV_MD=m
+CONFIG_BLK_DEV_MD=y
+CONFIG_MD_AUTODETECT=y
 CONFIG_MD_LINEAR=m
 CONFIG_MD_RAID0=m
 CONFIG_MD_RAID1=m
 CONFIG_MD_RAID10=m
 CONFIG_MD_RAID456=m
-# CONFIG_MULTICORE_RAID456 is not set
 CONFIG_MD_MULTIPATH=m
-# CONFIG_MD_FAULTY is not set
-CONFIG_BLK_DEV_DM=m
+CONFIG_MD_FAULTY=m
+CONFIG_BCACHE=m
+# CONFIG_BCACHE_DEBUG is not set
+# CONFIG_BCACHE_EDEBUG is not set
+# CONFIG_BCACHE_CLOSURES_DEBUG is not set
+CONFIG_BLK_DEV_DM=y
 # CONFIG_DM_DEBUG is not set
 CONFIG_DM_BUFIO=m
+CONFIG_DM_BIO_PRISON=m
 CONFIG_DM_PERSISTENT_DATA=m
 CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_THIN_PROVISIONING=m
-# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
-# CONFIG_DM_DEBUG_SPACE_MAPS is not set
-CONFIG_DM_MIRROR=m
+CONFIG_DM_SNAPSHOT=y
+# CONFIG_DM_THIN_PROVISIONING is not set
+CONFIG_DM_CACHE=m
+CONFIG_DM_CACHE_MQ=m
+CONFIG_DM_CACHE_CLEANER=m
+CONFIG_DM_MIRROR=y
 CONFIG_DM_RAID=m
 CONFIG_DM_LOG_USERSPACE=m
-CONFIG_DM_ZERO=m
+CONFIG_DM_ZERO=y
 CONFIG_DM_MULTIPATH=m
 CONFIG_DM_MULTIPATH_QL=m
 CONFIG_DM_MULTIPATH_ST=m
-CONFIG_DM_DELAY=m
+# CONFIG_DM_DELAY is not set
 CONFIG_DM_UEVENT=y
-CONFIG_DM_FLAKEY=m
+# CONFIG_DM_FLAKEY is not set
+CONFIG_DM_VERITY=m
 # CONFIG_TARGET_CORE is not set
 CONFIG_FUSION=y
 CONFIG_FUSION_SPI=m
 CONFIG_FUSION_FC=m
 CONFIG_FUSION_SAS=m
-CONFIG_FUSION_MAX_SGE=128
+CONFIG_FUSION_MAX_SGE=40
 CONFIG_FUSION_CTL=m
-# CONFIG_FUSION_LOGGING is not set
+CONFIG_FUSION_LOGGING=y
 
 #
 # IEEE 1394 (FireWire) support
 #
 CONFIG_FIREWIRE=m
 CONFIG_FIREWIRE_OHCI=m
-CONFIG_FIREWIRE_OHCI_DEBUG=y
 CONFIG_FIREWIRE_SBP2=m
-CONFIG_FIREWIRE_NET=m
+# CONFIG_FIREWIRE_NET is not set
 # CONFIG_FIREWIRE_NOSY is not set
-# CONFIG_I2O is not set
-# CONFIG_MACINTOSH_DRIVERS is not set
+CONFIG_I2O=m
+# CONFIG_I2O_LCT_NOTIFY_ON_CHANGES is not set
+CONFIG_I2O_EXT_ADAPTEC=y
+CONFIG_I2O_EXT_ADAPTEC_DMA64=y
+CONFIG_I2O_CONFIG=m
+CONFIG_I2O_CONFIG_OLD_IOCTL=y
+CONFIG_I2O_BUS=m
+CONFIG_I2O_BLOCK=m
+CONFIG_I2O_SCSI=m
+CONFIG_I2O_PROC=m
+CONFIG_MACINTOSH_DRIVERS=y
+# CONFIG_MAC_EMUMOUSEBTN is not set
 CONFIG_NETDEVICES=y
 CONFIG_NET_CORE=y
 CONFIG_BONDING=m
 CONFIG_DUMMY=m
-CONFIG_EQUALIZER=m
+# CONFIG_EQUALIZER is not set
+# CONFIG_NET_FC is not set
+CONFIG_MII=m
+CONFIG_IFB=m
+# CONFIG_NET_TEAM is not set
+CONFIG_MACVLAN=m
+CONFIG_MACVTAP=m
+CONFIG_VXLAN=m
+CONFIG_NETCONSOLE=m
+CONFIG_NETCONSOLE_DYNAMIC=y
+CONFIG_NETPOLL=y
+CONFIG_NETPOLL_TRAP=y
+CONFIG_NET_POLL_CONTROLLER=y
 CONFIG_IMQ=m
 # CONFIG_IMQ_BEHAVIOR_AA is not set
 CONFIG_IMQ_BEHAVIOR_AB=y
 # CONFIG_IMQ_BEHAVIOR_BA is not set
 # CONFIG_IMQ_BEHAVIOR_BB is not set
 CONFIG_IMQ_NUM_DEVS=2
-# CONFIG_NET_FC is not set
-CONFIG_MII=m
-CONFIG_IEEE802154_DRIVERS=m
-CONFIG_IEEE802154_FAKEHARD=m
-CONFIG_IFB=m
-CONFIG_MACVLAN=m
-CONFIG_MACVTAP=m
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
 CONFIG_TUN=m
 CONFIG_VETH=m
 CONFIG_VIRTIO_NET=m
@@ -1722,22 +1812,14 @@ CONFIG_ATM_DRIVERS=y
 CONFIG_ATM_TCP=m
 CONFIG_ATM_LANAI=m
 CONFIG_ATM_ENI=m
-CONFIG_ATM_ENI_DEBUG=y
-CONFIG_ATM_ENI_TUNE_BURST=y
-CONFIG_ATM_ENI_BURST_TX_16W=y
-CONFIG_ATM_ENI_BURST_TX_8W=y
-CONFIG_ATM_ENI_BURST_TX_4W=y
-CONFIG_ATM_ENI_BURST_TX_2W=y
-CONFIG_ATM_ENI_BURST_RX_16W=y
-CONFIG_ATM_ENI_BURST_RX_8W=y
-CONFIG_ATM_ENI_BURST_RX_4W=y
-CONFIG_ATM_ENI_BURST_RX_2W=y
+# CONFIG_ATM_ENI_DEBUG is not set
+# CONFIG_ATM_ENI_TUNE_BURST is not set
 CONFIG_ATM_FIRESTREAM=m
 CONFIG_ATM_ZATM=m
 # CONFIG_ATM_ZATM_DEBUG is not set
 CONFIG_ATM_NICSTAR=m
-CONFIG_ATM_NICSTAR_USE_SUNI=y
-CONFIG_ATM_NICSTAR_USE_IDT77105=y
+# CONFIG_ATM_NICSTAR_USE_SUNI is not set
+# CONFIG_ATM_NICSTAR_USE_IDT77105 is not set
 CONFIG_ATM_IDT77252=m
 # CONFIG_ATM_IDT77252_DEBUG is not set
 # CONFIG_ATM_IDT77252_RCV_ALL is not set
@@ -1749,20 +1831,30 @@ CONFIG_ATM_HORIZON=m
 CONFIG_ATM_IA=m
 # CONFIG_ATM_IA_DEBUG is not set
 CONFIG_ATM_FORE200E=m
-CONFIG_ATM_FORE200E_USE_TASKLET=y
+# CONFIG_ATM_FORE200E_USE_TASKLET is not set
 CONFIG_ATM_FORE200E_TX_RETRY=16
 CONFIG_ATM_FORE200E_DEBUG=0
 CONFIG_ATM_HE=m
-CONFIG_ATM_HE_USE_SUNI=y
+# CONFIG_ATM_HE_USE_SUNI is not set
 CONFIG_ATM_SOLOS=m
 
 #
 # CAIF transport drivers
 #
+CONFIG_VHOST_NET=m
+CONFIG_VHOST_RING=m
+
+#
+# Distributed Switch Architecture drivers
+#
+CONFIG_NET_DSA_MV88E6XXX=y
+CONFIG_NET_DSA_MV88E6060=y
+CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y
+CONFIG_NET_DSA_MV88E6131=y
+CONFIG_NET_DSA_MV88E6123_61_65=y
 CONFIG_ETHERNET=y
 CONFIG_MDIO=m
 CONFIG_NET_VENDOR_3COM=y
-CONFIG_EL1=m
 CONFIG_EL3=m
 CONFIG_3C515=m
 CONFIG_PCMCIA_3C574=m
@@ -1778,7 +1870,6 @@ CONFIG_NET_VENDOR_AMD=y
 CONFIG_AMD8111_ETH=m
 CONFIG_LANCE=m
 CONFIG_PCNET32=m
-CONFIG_DEPCA=m
 CONFIG_PCMCIA_NMCLAN=m
 CONFIG_NI65=m
 CONFIG_NET_VENDOR_ATHEROS=y
@@ -1786,6 +1877,10 @@ CONFIG_ATL2=m
 CONFIG_ATL1=m
 CONFIG_ATL1E=m
 CONFIG_ATL1C=m
+CONFIG_ALX=m
+CONFIG_NET_CADENCE=y
+CONFIG_ARM_AT91_ETHER=m
+CONFIG_MACB=m
 CONFIG_NET_VENDOR_BROADCOM=y
 CONFIG_B44=m
 CONFIG_B44_PCI_AUTOSELECT=y
@@ -1795,8 +1890,10 @@ CONFIG_BNX2=m
 CONFIG_CNIC=m
 CONFIG_TIGON3=m
 CONFIG_BNX2X=m
+CONFIG_BNX2X_SRIOV=y
 CONFIG_NET_VENDOR_BROCADE=y
 CONFIG_BNA=m
+CONFIG_NET_CALXEDA_XGMAC=m
 CONFIG_NET_VENDOR_CHELSIO=y
 CONFIG_CHELSIO_T1=m
 CONFIG_CHELSIO_T1_1G=y
@@ -1805,26 +1902,25 @@ CONFIG_CHELSIO_T4=m
 CONFIG_CHELSIO_T4VF=m
 CONFIG_NET_VENDOR_CIRRUS=y
 CONFIG_CS89x0=m
+# CONFIG_CS89x0_PLATFORM is not set
 CONFIG_NET_VENDOR_CISCO=y
 CONFIG_ENIC=m
 CONFIG_DNET=m
 CONFIG_NET_VENDOR_DEC=y
-CONFIG_EWRK3=m
 CONFIG_NET_TULIP=y
 CONFIG_DE2104X=m
 CONFIG_DE2104X_DSL=0
 CONFIG_TULIP=m
 # CONFIG_TULIP_MWI is not set
-# CONFIG_TULIP_MMIO is not set
-# CONFIG_TULIP_NAPI is not set
+CONFIG_TULIP_MMIO=y
+CONFIG_TULIP_NAPI=y
+CONFIG_TULIP_NAPI_HW_MITIGATION=y
 CONFIG_DE4X5=m
 CONFIG_WINBOND_840=m
 CONFIG_DM9102=m
 CONFIG_ULI526X=m
 CONFIG_PCMCIA_XIRCOM=m
 CONFIG_NET_VENDOR_DLINK=y
-CONFIG_DE600=m
-CONFIG_DE620=m
 CONFIG_DL2K=m
 CONFIG_SUNDANCE=m
 # CONFIG_SUNDANCE_MMIO is not set
@@ -1835,47 +1931,32 @@ CONFIG_S2IO=m
 CONFIG_VXGE=m
 # CONFIG_VXGE_DEBUG_TRACE_ALL is not set
 CONFIG_NET_VENDOR_FUJITSU=y
-CONFIG_AT1700=m
 CONFIG_PCMCIA_FMVJ18X=m
-CONFIG_ETH16I=m
 CONFIG_NET_VENDOR_HP=y
 CONFIG_HP100=m
-CONFIG_NET_VENDOR_IBM=y
-# CONFIG_IBM_EMAC_ZMII is not set
-# CONFIG_IBM_EMAC_RGMII is not set
-# CONFIG_IBM_EMAC_TAH is not set
-# CONFIG_IBM_EMAC_EMAC4 is not set
-# CONFIG_IBM_EMAC_NO_FLOW_CTRL is not set
-# CONFIG_IBM_EMAC_MAL_CLR_ICINTSTAT is not set
-# CONFIG_IBM_EMAC_MAL_COMMON_ERR is not set
 CONFIG_NET_VENDOR_INTEL=y
 CONFIG_E100=m
 CONFIG_E1000=m
 CONFIG_E1000E=m
 CONFIG_IGB=m
+CONFIG_IGB_HWMON=y
 CONFIG_IGB_DCA=y
 CONFIG_IGBVF=m
 CONFIG_IXGB=m
 CONFIG_IXGBE=m
+CONFIG_IXGBE_HWMON=y
 CONFIG_IXGBE_DCA=y
 CONFIG_IXGBEVF=m
 CONFIG_NET_VENDOR_I825XX=y
-CONFIG_ELPLUS=m
-CONFIG_EL16=m
-CONFIG_ELMC=m
-CONFIG_ELMC_II=m
-CONFIG_APRICOT=m
-CONFIG_EEXPRESS=m
-CONFIG_EEXPRESS_PRO=m
-CONFIG_LP486E=m
-CONFIG_NI52=m
-CONFIG_ZNET=m
 CONFIG_IP1000=m
 CONFIG_JME=m
 CONFIG_NET_VENDOR_MARVELL=y
+CONFIG_MVMDIO=m
 CONFIG_SKGE=m
+# CONFIG_SKGE_DEBUG is not set
 CONFIG_SKGE_GENESIS=y
 CONFIG_SKY2=m
+# CONFIG_SKY2_DEBUG is not set
 CONFIG_NET_VENDOR_MELLANOX=y
 CONFIG_MLX4_EN=m
 CONFIG_MLX4_CORE=m
@@ -1889,61 +1970,47 @@ CONFIG_MYRI10GE=m
 CONFIG_MYRI10GE_DCA=y
 CONFIG_FEALNX=m
 CONFIG_NET_VENDOR_NATSEMI=y
-CONFIG_IBMLANA=m
 CONFIG_NATSEMI=m
 CONFIG_NS83820=m
 CONFIG_NET_VENDOR_8390=y
-CONFIG_EL2=m
-CONFIG_AC3200=m
 CONFIG_PCMCIA_AXNET=m
-CONFIG_E2100=m
-CONFIG_ES3210=m
-CONFIG_HPLAN_PLUS=m
-CONFIG_HPLAN=m
-CONFIG_LNE390=m
 CONFIG_NE2000=m
-CONFIG_NE2_MCA=m
 CONFIG_NE2K_PCI=m
-CONFIG_NE3210=m
 CONFIG_PCMCIA_PCNET=m
-CONFIG_ULTRAMCA=m
 CONFIG_ULTRA=m
-CONFIG_ULTRA32=m
 CONFIG_WD80x3=m
 CONFIG_NET_VENDOR_NVIDIA=y
 CONFIG_FORCEDETH=m
 CONFIG_NET_VENDOR_OKI=y
 CONFIG_PCH_GBE=m
 CONFIG_ETHOC=m
-CONFIG_NET_PACKET_ENGINE=y
-CONFIG_HAMACHI=m
-CONFIG_YELLOWFIN=m
+# CONFIG_NET_PACKET_ENGINE is not set
 CONFIG_NET_VENDOR_QLOGIC=y
 CONFIG_QLA3XXX=m
 CONFIG_QLCNIC=m
+CONFIG_QLCNIC_SRIOV=y
 CONFIG_QLGE=m
 CONFIG_NETXEN_NIC=m
-CONFIG_NET_VENDOR_RACAL=y
 CONFIG_NET_VENDOR_REALTEK=y
 CONFIG_ATP=m
 CONFIG_8139CP=m
 CONFIG_8139TOO=m
 # CONFIG_8139TOO_PIO is not set
-CONFIG_8139TOO_TUNE_TWISTER=y
+# CONFIG_8139TOO_TUNE_TWISTER is not set
 CONFIG_8139TOO_8129=y
 # CONFIG_8139_OLD_RX_RESET is not set
 CONFIG_R8169=m
 CONFIG_NET_VENDOR_RDC=y
 CONFIG_R6040=m
 CONFIG_NET_VENDOR_SEEQ=y
-CONFIG_SEEQ8005=m
 CONFIG_NET_VENDOR_SILAN=y
 CONFIG_SC92031=m
 CONFIG_NET_VENDOR_SIS=y
 CONFIG_SIS900=m
 CONFIG_SIS190=m
 CONFIG_SFC=m
-CONFIG_SFC_MTD=y
+CONFIG_SFC_MCDI_MON=y
+CONFIG_SFC_SRIOV=y
 CONFIG_NET_VENDOR_SMSC=y
 CONFIG_SMC9194=m
 CONFIG_PCMCIA_SMC91C92=m
@@ -1951,9 +2018,10 @@ CONFIG_EPIC100=m
 CONFIG_SMSC9420=m
 CONFIG_NET_VENDOR_STMICRO=y
 CONFIG_STMMAC_ETH=m
+CONFIG_STMMAC_PLATFORM=y
+CONFIG_STMMAC_PCI=y
+# CONFIG_STMMAC_DEBUG_FS is not set
 # CONFIG_STMMAC_DA is not set
-CONFIG_STMMAC_RING=y
-# CONFIG_STMMAC_CHAINED is not set
 CONFIG_NET_VENDOR_SUN=y
 CONFIG_HAPPYMEAL=m
 CONFIG_SUNGEM=m
@@ -1967,16 +2035,24 @@ CONFIG_NET_VENDOR_VIA=y
 CONFIG_VIA_RHINE=m
 CONFIG_VIA_RHINE_MMIO=y
 CONFIG_VIA_VELOCITY=m
+CONFIG_NET_VENDOR_WIZNET=y
+CONFIG_WIZNET_W5100=m
+CONFIG_WIZNET_W5300=m
+# CONFIG_WIZNET_BUS_DIRECT is not set
+# CONFIG_WIZNET_BUS_INDIRECT is not set
+CONFIG_WIZNET_BUS_ANY=y
 CONFIG_NET_VENDOR_XIRCOM=y
 CONFIG_PCMCIA_XIRC2PS=m
 # CONFIG_FDDI is not set
 # CONFIG_HIPPI is not set
-CONFIG_NET_SB1000=m
+# CONFIG_NET_SB1000 is not set
 CONFIG_PHYLIB=y
 
 #
 # MII PHY device drivers
 #
+CONFIG_AT803X_PHY=m
+CONFIG_AMD_PHY=m
 CONFIG_MARVELL_PHY=m
 CONFIG_DAVICOM_PHY=m
 CONFIG_QSEMI_PHY=m
@@ -1985,15 +2061,16 @@ CONFIG_CICADA_PHY=m
 CONFIG_VITESSE_PHY=m
 CONFIG_SMSC_PHY=m
 CONFIG_BROADCOM_PHY=m
+CONFIG_BCM87XX_PHY=m
 CONFIG_ICPLUS_PHY=m
 CONFIG_REALTEK_PHY=m
 CONFIG_NATIONAL_PHY=m
 CONFIG_STE10XP=m
 CONFIG_LSI_ET1011C_PHY=m
 CONFIG_MICREL_PHY=m
-# CONFIG_FIXED_PHY is not set
+CONFIG_FIXED_PHY=y
 CONFIG_MDIO_BITBANG=m
-CONFIG_MDIO_GPIO=m
+# CONFIG_MDIO_GPIO is not set
 # CONFIG_PLIP is not set
 CONFIG_PPP=m
 CONFIG_PPP_BSDCOMP=m
@@ -2007,12 +2084,8 @@ CONFIG_PPTP=m
 CONFIG_PPPOL2TP=m
 CONFIG_PPP_ASYNC=m
 CONFIG_PPP_SYNC_TTY=m
-CONFIG_SLIP=m
+# CONFIG_SLIP is not set
 CONFIG_SLHC=m
-CONFIG_SLIP_COMPRESSED=y
-CONFIG_SLIP_SMART=y
-CONFIG_SLIP_MODE_SLIP6=y
-# CONFIG_TR is not set
 
 #
 # USB Network Adapters
@@ -2021,11 +2094,14 @@ CONFIG_USB_CATC=m
 CONFIG_USB_KAWETH=m
 CONFIG_USB_PEGASUS=m
 CONFIG_USB_RTL8150=m
+CONFIG_USB_RTL8152=m
 CONFIG_USB_USBNET=m
 CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_AX88179_178A=m
 CONFIG_USB_NET_CDCETHER=m
 CONFIG_USB_NET_CDC_EEM=m
 CONFIG_USB_NET_CDC_NCM=m
+CONFIG_USB_NET_CDC_MBIM=m
 CONFIG_USB_NET_DM9601=m
 CONFIG_USB_NET_SMSC75XX=m
 CONFIG_USB_NET_SMSC95XX=m
@@ -2044,14 +2120,17 @@ CONFIG_USB_KC2190=y
 CONFIG_USB_NET_ZAURUS=m
 CONFIG_USB_NET_CX82310_ETH=m
 CONFIG_USB_NET_KALMIA=m
+CONFIG_USB_NET_QMI_WWAN=m
 CONFIG_USB_HSO=m
 CONFIG_USB_NET_INT51X1=m
-# CONFIG_USB_IPHETH is not set
+CONFIG_USB_IPHETH=m
 CONFIG_USB_SIERRA_NET=m
 CONFIG_USB_VL600=m
 CONFIG_WLAN=y
-CONFIG_PCMCIA_RAYCS=m
-# CONFIG_LIBERTAS_THINFIRM is not set
+# CONFIG_PCMCIA_RAYCS is not set
+CONFIG_LIBERTAS_THINFIRM=m
+# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set
+CONFIG_LIBERTAS_THINFIRM_USB=m
 CONFIG_AIRO=m
 CONFIG_ATMEL=m
 CONFIG_PCI_ATMEL=m
@@ -2062,73 +2141,175 @@ CONFIG_PCMCIA_WL3501=m
 # CONFIG_PRISM54 is not set
 CONFIG_USB_ZD1201=m
 CONFIG_USB_NET_RNDIS_WLAN=m
-# CONFIG_RTL8180 is not set
-# CONFIG_RTL8187 is not set
-# CONFIG_ADM8211 is not set
-# CONFIG_MAC80211_HWSIM is not set
-# CONFIG_MWL8K is not set
-# CONFIG_ATH_COMMON is not set
-# CONFIG_B43 is not set
-# CONFIG_B43LEGACY is not set
-# CONFIG_BRCMFMAC is not set
+CONFIG_RTL8180=m
+CONFIG_RTL8187=m
+CONFIG_RTL8187_LEDS=y
+CONFIG_ADM8211=m
+CONFIG_MAC80211_HWSIM=m
+CONFIG_MWL8K=m
+CONFIG_ATH_COMMON=m
+CONFIG_ATH_CARDS=m
+# CONFIG_ATH_DEBUG is not set
+CONFIG_ATH5K=m
+CONFIG_ATH5K_DEBUG=y
+# CONFIG_ATH5K_TRACER is not set
+CONFIG_ATH5K_PCI=y
+CONFIG_ATH9K_HW=m
+CONFIG_ATH9K_COMMON=m
+CONFIG_ATH9K_BTCOEX_SUPPORT=y
+CONFIG_ATH9K=m
+CONFIG_ATH9K_PCI=y
+CONFIG_ATH9K_AHB=y
+# CONFIG_ATH9K_DEBUGFS is not set
+# CONFIG_ATH9K_LEGACY_RATE_CONTROL is not set
+CONFIG_ATH9K_HTC=m
+# CONFIG_ATH9K_HTC_DEBUGFS is not set
+CONFIG_CARL9170=m
+CONFIG_CARL9170_LEDS=y
+CONFIG_CARL9170_WPC=y
+# CONFIG_CARL9170_HWRNG is not set
+# CONFIG_ATH6KL is not set
+CONFIG_AR5523=m
+CONFIG_WIL6210=m
+CONFIG_WIL6210_ISR_COR=y
+CONFIG_B43=m
+CONFIG_B43_SSB=y
+CONFIG_B43_PCI_AUTOSELECT=y
+CONFIG_B43_PCICORE_AUTOSELECT=y
+# CONFIG_B43_PCMCIA is not set
+CONFIG_B43_SDIO=y
+CONFIG_B43_PIO=y
+CONFIG_B43_PHY_N=y
+CONFIG_B43_PHY_LP=y
+CONFIG_B43_LEDS=y
+CONFIG_B43_HWRNG=y
+# CONFIG_B43_DEBUG is not set
+CONFIG_B43LEGACY=m
+CONFIG_B43LEGACY_PCI_AUTOSELECT=y
+CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y
+CONFIG_B43LEGACY_LEDS=y
+CONFIG_B43LEGACY_HWRNG=y
+# CONFIG_B43LEGACY_DEBUG is not set
+CONFIG_B43LEGACY_DMA=y
+CONFIG_B43LEGACY_PIO=y
+CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
+# CONFIG_B43LEGACY_DMA_MODE is not set
+# CONFIG_B43LEGACY_PIO_MODE is not set
+CONFIG_BRCMUTIL=m
+CONFIG_BRCMFMAC=m
+CONFIG_BRCMFMAC_SDIO=y
+# CONFIG_BRCMFMAC_USB is not set
+# CONFIG_BRCM_TRACING is not set
+# CONFIG_BRCMDBG is not set
 CONFIG_HOSTAP=m
 CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
+CONFIG_HOSTAP_FIRMWARE_NVRAM=y
 CONFIG_HOSTAP_PLX=m
 CONFIG_HOSTAP_PCI=m
 CONFIG_HOSTAP_CS=m
-# CONFIG_IPW2100 is not set
-# CONFIG_IPW2200 is not set
-# CONFIG_IWLWIFI is not set
-# CONFIG_IWL4965 is not set
-# CONFIG_IWL3945 is not set
-# CONFIG_IWM is not set
-# CONFIG_LIBERTAS is not set
-# CONFIG_HERMES is not set
-# CONFIG_P54_COMMON is not set
-# CONFIG_RT2X00 is not set
-# CONFIG_RTL8192CE is not set
-# CONFIG_RTL8192SE is not set
-# CONFIG_RTL8192DE is not set
-# CONFIG_RTL8192CU is not set
-# CONFIG_WL1251 is not set
-# CONFIG_WL12XX_MENU is not set
-# CONFIG_ZD1211RW is not set
-# CONFIG_MWIFIEX is not set
+CONFIG_IPW2100=m
+CONFIG_IPW2100_MONITOR=y
+# CONFIG_IPW2100_DEBUG is not set
+CONFIG_IPW2200=m
+CONFIG_IPW2200_MONITOR=y
+CONFIG_IPW2200_RADIOTAP=y
+CONFIG_IPW2200_PROMISCUOUS=y
+CONFIG_IPW2200_QOS=y
+# CONFIG_IPW2200_DEBUG is not set
+CONFIG_LIBIPW=m
+# CONFIG_LIBIPW_DEBUG is not set
+CONFIG_IWLWIFI=m
+CONFIG_IWLDVM=m
+CONFIG_IWLMVM=m
+CONFIG_IWLWIFI_OPMODE_MODULAR=y
+
+#
+# Debugging Options
+#
+# CONFIG_IWLWIFI_DEBUG is not set
+# CONFIG_IWLWIFI_DEVICE_TRACING is not set
+CONFIG_IWLWIFI_P2P=y
+CONFIG_IWLEGACY=m
+CONFIG_IWL4965=m
+CONFIG_IWL3945=m
+
+#
+# iwl3945 / iwl4965 Debugging Options
+#
+# CONFIG_IWLEGACY_DEBUG is not set
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
+CONFIG_LIBERTAS_CS=m
+CONFIG_LIBERTAS_SDIO=m
+# CONFIG_LIBERTAS_DEBUG is not set
+CONFIG_LIBERTAS_MESH=y
+CONFIG_HERMES=m
+# CONFIG_HERMES_PRISM is not set
+CONFIG_HERMES_CACHE_FW_ON_INIT=y
+CONFIG_PLX_HERMES=m
+CONFIG_TMD_HERMES=m
+CONFIG_NORTEL_HERMES=m
+CONFIG_PCMCIA_HERMES=m
+CONFIG_PCMCIA_SPECTRUM=m
+CONFIG_ORINOCO_USB=m
+CONFIG_P54_COMMON=m
+CONFIG_P54_USB=m
+CONFIG_P54_PCI=m
+CONFIG_P54_LEDS=y
+CONFIG_RT2X00=m
+CONFIG_RT2400PCI=m
+CONFIG_RT2500PCI=m
+CONFIG_RT61PCI=m
+CONFIG_RT2800PCI=m
+CONFIG_RT2800PCI_RT33XX=y
+CONFIG_RT2800PCI_RT35XX=y
+CONFIG_RT2800PCI_RT53XX=y
+CONFIG_RT2800PCI_RT3290=y
+CONFIG_RT2500USB=m
+CONFIG_RT73USB=m
+CONFIG_RT2800USB=m
+CONFIG_RT2800USB_RT33XX=y
+CONFIG_RT2800USB_RT35XX=y
+CONFIG_RT2800USB_RT53XX=y
+CONFIG_RT2800USB_RT55XX=y
+CONFIG_RT2800USB_UNKNOWN=y
+CONFIG_RT2800_LIB=m
+CONFIG_RT2X00_LIB_MMIO=m
+CONFIG_RT2X00_LIB_PCI=m
+CONFIG_RT2X00_LIB_USB=m
+CONFIG_RT2X00_LIB=m
+CONFIG_RT2X00_LIB_FIRMWARE=y
+CONFIG_RT2X00_LIB_CRYPTO=y
+CONFIG_RT2X00_LIB_LEDS=y
+# CONFIG_RT2X00_DEBUG is not set
+CONFIG_RTLWIFI=m
+# CONFIG_RTLWIFI_DEBUG is not set
+CONFIG_RTL8192CE=m
+CONFIG_RTL8192SE=m
+CONFIG_RTL8192DE=m
+CONFIG_RTL8723AE=m
+CONFIG_RTL8188EE=m
+CONFIG_RTL8192CU=m
+CONFIG_RTL8192C_COMMON=m
+CONFIG_WL_TI=y
+CONFIG_WL1251=m
+CONFIG_WL1251_SDIO=m
+CONFIG_WL12XX=m
+CONFIG_WL18XX=m
+CONFIG_WLCORE=m
+CONFIG_WLCORE_SDIO=m
+CONFIG_WILINK_PLATFORM_DATA=y
+CONFIG_ZD1211RW=m
+# CONFIG_ZD1211RW_DEBUG is not set
+CONFIG_MWIFIEX=m
+CONFIG_MWIFIEX_SDIO=m
+CONFIG_MWIFIEX_PCIE=m
+CONFIG_MWIFIEX_USB=m
 
 #
 # Enable WiMAX (Networking options) to see the WiMAX drivers
 #
-CONFIG_WAN=y
-CONFIG_HOSTESS_SV11=m
-CONFIG_COSA=m
-CONFIG_LANMEDIA=m
-CONFIG_SEALEVEL_4021=m
-CONFIG_HDLC=m
-CONFIG_HDLC_RAW=m
-CONFIG_HDLC_RAW_ETH=m
-CONFIG_HDLC_CISCO=m
-CONFIG_HDLC_FR=m
-CONFIG_HDLC_PPP=m
-
-#
-# X.25/LAPB support is disabled
-#
-CONFIG_PCI200SYN=m
-CONFIG_WANXL=m
-# CONFIG_WANXL_BUILD_FIRMWARE is not set
-CONFIG_PC300TOO=m
-CONFIG_N2=m
-CONFIG_C101=m
-CONFIG_FARSYNC=m
-CONFIG_DSCC4=m
-CONFIG_DSCC4_PCISYNC=y
-CONFIG_DSCC4_PCI_RST=y
-CONFIG_DLCI=m
-CONFIG_DLCI_MAX=8
-CONFIG_SDLA=m
-CONFIG_SBNI=m
-CONFIG_SBNI_MULTILINE=y
+# CONFIG_WAN is not set
 CONFIG_XEN_NETDEV_FRONTEND=m
 CONFIG_XEN_NETDEV_BACKEND=m
 CONFIG_VMXNET3=m
@@ -2161,9 +2342,9 @@ CONFIG_ISDN_DRV_HISAX=m
 #
 CONFIG_HISAX_EURO=y
 CONFIG_DE_AOC=y
-# CONFIG_HISAX_NO_SENDCOMPLETE is not set
-# CONFIG_HISAX_NO_LLC is not set
-# CONFIG_HISAX_NO_KEYPAD is not set
+CONFIG_HISAX_NO_SENDCOMPLETE=y
+CONFIG_HISAX_NO_LLC=y
+CONFIG_HISAX_NO_KEYPAD=y
 CONFIG_HISAX_1TR6=y
 CONFIG_HISAX_NI1=y
 CONFIG_HISAX_MAX_CARDS=8
@@ -2171,27 +2352,27 @@ CONFIG_HISAX_MAX_CARDS=8
 #
 # HiSax supported cards
 #
-CONFIG_HISAX_16_0=y
+# CONFIG_HISAX_16_0 is not set
 CONFIG_HISAX_16_3=y
 CONFIG_HISAX_TELESPCI=y
 CONFIG_HISAX_S0BOX=y
-CONFIG_HISAX_AVM_A1=y
+# CONFIG_HISAX_AVM_A1 is not set
 CONFIG_HISAX_FRITZPCI=y
 CONFIG_HISAX_AVM_A1_PCMCIA=y
 CONFIG_HISAX_ELSA=y
-CONFIG_HISAX_IX1MICROR2=y
+# CONFIG_HISAX_IX1MICROR2 is not set
 CONFIG_HISAX_DIEHLDIVA=y
-CONFIG_HISAX_ASUSCOM=y
-CONFIG_HISAX_TELEINT=y
-CONFIG_HISAX_HFCS=y
+# CONFIG_HISAX_ASUSCOM is not set
+# CONFIG_HISAX_TELEINT is not set
+# CONFIG_HISAX_HFCS is not set
 CONFIG_HISAX_SEDLBAUER=y
-CONFIG_HISAX_SPORTSTER=y
-CONFIG_HISAX_MIC=y
+# CONFIG_HISAX_SPORTSTER is not set
+# CONFIG_HISAX_MIC is not set
 CONFIG_HISAX_NETJET=y
 CONFIG_HISAX_NETJET_U=y
 CONFIG_HISAX_NICCY=y
-CONFIG_HISAX_ISURF=y
-CONFIG_HISAX_HSTSAPHIR=y
+# CONFIG_HISAX_ISURF is not set
+# CONFIG_HISAX_HSTSAPHIR is not set
 CONFIG_HISAX_BKM_A4T=y
 CONFIG_HISAX_SCT_QUADRO=y
 CONFIG_HISAX_GAZEL=y
@@ -2199,15 +2380,15 @@ CONFIG_HISAX_HFC_PCI=y
 CONFIG_HISAX_W6692=y
 CONFIG_HISAX_HFC_SX=y
 CONFIG_HISAX_ENTERNOW_PCI=y
-CONFIG_HISAX_DEBUG=y
+# CONFIG_HISAX_DEBUG is not set
 
 #
 # HiSax PCMCIA card service modules
 #
-CONFIG_HISAX_SEDLBAUER_CS=m
-CONFIG_HISAX_ELSA_CS=m
-CONFIG_HISAX_AVM_A1_CS=m
-CONFIG_HISAX_TELES_CS=m
+# CONFIG_HISAX_SEDLBAUER_CS is not set
+# CONFIG_HISAX_ELSA_CS is not set
+# CONFIG_HISAX_AVM_A1_CS is not set
+# CONFIG_HISAX_TELES_CS is not set
 
 #
 # HiSax sub driver modules
@@ -2220,10 +2401,10 @@ CONFIG_HISAX_FRITZ_PCIPNP=m
 #
 # Active cards
 #
-CONFIG_ISDN_DRV_ICN=m
-CONFIG_ISDN_DRV_PCBIT=m
-CONFIG_ISDN_DRV_SC=m
-CONFIG_ISDN_DRV_ACT2000=m
+# CONFIG_ISDN_DRV_ICN is not set
+# CONFIG_ISDN_DRV_PCBIT is not set
+# CONFIG_ISDN_DRV_SC is not set
+# CONFIG_ISDN_DRV_ACT2000 is not set
 CONFIG_ISDN_CAPI=m
 CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
 CONFIG_CAPI_TRACE=y
@@ -2235,12 +2416,11 @@ CONFIG_ISDN_CAPI_CAPIDRV=m
 # CAPI hardware drivers
 #
 CONFIG_CAPI_AVM=y
-CONFIG_ISDN_DRV_AVMB1_B1ISA=m
+# CONFIG_ISDN_DRV_AVMB1_B1ISA is not set
 CONFIG_ISDN_DRV_AVMB1_B1PCI=m
 CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
-CONFIG_ISDN_DRV_AVMB1_T1ISA=m
-CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
-CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
+# CONFIG_ISDN_DRV_AVMB1_T1ISA is not set
+# CONFIG_ISDN_DRV_AVMB1_B1PCMCIA is not set
 CONFIG_ISDN_DRV_AVMB1_T1PCI=m
 CONFIG_ISDN_DRV_AVMB1_C4=m
 CONFIG_CAPI_EICON=y
@@ -2278,15 +2458,15 @@ CONFIG_MISDN_NETJET=m
 CONFIG_MISDN_IPAC=m
 CONFIG_MISDN_ISAR=m
 CONFIG_ISDN_HDLC=m
-# CONFIG_PHONE is not set
 
 #
 # Input device support
 #
 CONFIG_INPUT=y
-CONFIG_INPUT_FF_MEMLESS=m
+# CONFIG_INPUT_FF_MEMLESS is not set
 CONFIG_INPUT_POLLDEV=m
 CONFIG_INPUT_SPARSEKMAP=m
+CONFIG_INPUT_MATRIXKMAP=m
 
 #
 # Userland interfaces
@@ -2296,59 +2476,85 @@ CONFIG_INPUT_MOUSEDEV=y
 CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
 CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
 # CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_EVDEV is not set
+CONFIG_INPUT_EVDEV=y
 # CONFIG_INPUT_EVBUG is not set
 
 #
 # Input Device Drivers
 #
 CONFIG_INPUT_KEYBOARD=y
-CONFIG_KEYBOARD_ADP5588=m
-CONFIG_KEYBOARD_ADP5589=m
+# CONFIG_KEYBOARD_ADP5588 is not set
+# CONFIG_KEYBOARD_ADP5589 is not set
 CONFIG_KEYBOARD_ATKBD=y
-CONFIG_KEYBOARD_QT1070=m
-CONFIG_KEYBOARD_QT2160=m
-CONFIG_KEYBOARD_LKKBD=m
+# CONFIG_KEYBOARD_QT1070 is not set
+# CONFIG_KEYBOARD_QT2160 is not set
+# CONFIG_KEYBOARD_LKKBD is not set
 CONFIG_KEYBOARD_GPIO=m
 CONFIG_KEYBOARD_GPIO_POLLED=m
-CONFIG_KEYBOARD_TCA6416=m
-CONFIG_KEYBOARD_MATRIX=m
-CONFIG_KEYBOARD_LM8323=m
-CONFIG_KEYBOARD_MAX7359=m
-CONFIG_KEYBOARD_MCS=m
-CONFIG_KEYBOARD_MPR121=m
-CONFIG_KEYBOARD_NEWTON=m
-CONFIG_KEYBOARD_OPENCORES=m
-CONFIG_KEYBOARD_STOWAWAY=m
-CONFIG_KEYBOARD_SUNKBD=m
-CONFIG_KEYBOARD_XTKBD=m
-# CONFIG_INPUT_MOUSE is not set
+# CONFIG_KEYBOARD_TCA6416 is not set
+# CONFIG_KEYBOARD_TCA8418 is not set
+# CONFIG_KEYBOARD_MATRIX is not set
+# CONFIG_KEYBOARD_LM8323 is not set
+CONFIG_KEYBOARD_LM8333=m
+# CONFIG_KEYBOARD_MAX7359 is not set
+# CONFIG_KEYBOARD_MCS is not set
+# CONFIG_KEYBOARD_MPR121 is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_OPENCORES is not set
+# CONFIG_KEYBOARD_SAMSUNG is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=m
+CONFIG_MOUSE_PS2_ALPS=y
+CONFIG_MOUSE_PS2_LOGIPS2PP=y
+CONFIG_MOUSE_PS2_SYNAPTICS=y
+CONFIG_MOUSE_PS2_CYPRESS=y
+CONFIG_MOUSE_PS2_LIFEBOOK=y
+CONFIG_MOUSE_PS2_TRACKPOINT=y
+CONFIG_MOUSE_PS2_ELANTECH=y
+CONFIG_MOUSE_PS2_SENTELIC=y
+CONFIG_MOUSE_PS2_TOUCHKIT=y
+CONFIG_MOUSE_SERIAL=m
+CONFIG_MOUSE_APPLETOUCH=m
+CONFIG_MOUSE_BCM5974=m
+CONFIG_MOUSE_CYAPA=m
+# CONFIG_MOUSE_INPORT is not set
+# CONFIG_MOUSE_LOGIBM is not set
+# CONFIG_MOUSE_PC110PAD is not set
+CONFIG_MOUSE_VSXXXAA=m
+# CONFIG_MOUSE_GPIO is not set
+CONFIG_MOUSE_SYNAPTICS_I2C=m
+CONFIG_MOUSE_SYNAPTICS_USB=m
 # CONFIG_INPUT_JOYSTICK is not set
 # CONFIG_INPUT_TABLET is not set
 # CONFIG_INPUT_TOUCHSCREEN is not set
 CONFIG_INPUT_MISC=y
-CONFIG_INPUT_AD714X=m
-CONFIG_INPUT_AD714X_I2C=m
-CONFIG_INPUT_BMA150=m
+# CONFIG_INPUT_AD714X is not set
+# CONFIG_INPUT_BMA150 is not set
 CONFIG_INPUT_PCSPKR=m
 # CONFIG_INPUT_MMA8450 is not set
 # CONFIG_INPUT_MPU3050 is not set
 CONFIG_INPUT_APANEL=m
+# CONFIG_INPUT_GP2A is not set
+# CONFIG_INPUT_GPIO_TILT_POLLED is not set
 # CONFIG_INPUT_WISTRON_BTNS is not set
-# CONFIG_INPUT_ATLAS_BTNS is not set
+CONFIG_INPUT_ATLAS_BTNS=m
 CONFIG_INPUT_ATI_REMOTE2=m
 CONFIG_INPUT_KEYSPAN_REMOTE=m
 # CONFIG_INPUT_KXTJ9 is not set
 CONFIG_INPUT_POWERMATE=m
 CONFIG_INPUT_YEALINK=m
 CONFIG_INPUT_CM109=m
-# CONFIG_INPUT_UINPUT is not set
-CONFIG_INPUT_PCF50633_PMU=m
-CONFIG_INPUT_PCF8574=m
+CONFIG_INPUT_RETU_PWRBUTTON=m
+CONFIG_INPUT_UINPUT=m
+# CONFIG_INPUT_PCF8574 is not set
 CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
 # CONFIG_INPUT_ADXL34X is not set
+# CONFIG_INPUT_IMS_PCU is not set
 # CONFIG_INPUT_CMA3000 is not set
-CONFIG_INPUT_XEN_KBDDEV_FRONTEND=m
+CONFIG_INPUT_XEN_KBDDEV_FRONTEND=y
 
 #
 # Hardware I/O ports
@@ -2360,125 +2566,136 @@ CONFIG_SERIO_SERPORT=y
 # CONFIG_SERIO_PARKBD is not set
 # CONFIG_SERIO_PCIPS2 is not set
 CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
+CONFIG_SERIO_RAW=m
 CONFIG_SERIO_ALTERA_PS2=m
-CONFIG_SERIO_PS2MULT=m
+# CONFIG_SERIO_PS2MULT is not set
+CONFIG_SERIO_ARC_PS2=m
 # CONFIG_GAMEPORT is not set
 
 #
 # Character devices
 #
+CONFIG_TTY=y
 CONFIG_VT=y
 CONFIG_CONSOLE_TRANSLATIONS=y
 CONFIG_VT_CONSOLE=y
 CONFIG_VT_CONSOLE_SLEEP=y
 CONFIG_HW_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
+CONFIG_VT_HW_CONSOLE_BINDING=y
 CONFIG_UNIX98_PTYS=y
-# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
+CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
 # CONFIG_LEGACY_PTYS is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
+CONFIG_SERIAL_NONSTANDARD=y
+CONFIG_ROCKETPORT=m
+CONFIG_CYCLADES=m
+# CONFIG_CYZ_INTR is not set
+# CONFIG_MOXA_INTELLIO is not set
+# CONFIG_MOXA_SMARTIO is not set
+CONFIG_SYNCLINK=m
+CONFIG_SYNCLINKMP=m
+CONFIG_SYNCLINK_GT=m
 CONFIG_NOZOMI=m
+# CONFIG_ISI is not set
+CONFIG_N_HDLC=m
 CONFIG_N_GSM=m
 # CONFIG_TRACE_SINK is not set
-CONFIG_DEVKMEM=y
+# CONFIG_DEVKMEM is not set
+# CONFIG_STALDRV is not set
 
 #
 # Serial drivers
 #
 CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
+CONFIG_SERIAL_8250_PNP=y
 CONFIG_SERIAL_8250_CONSOLE=y
 CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_SERIAL_8250_DMA=y
 CONFIG_SERIAL_8250_PCI=y
-CONFIG_SERIAL_8250_PNP=y
-CONFIG_SERIAL_8250_CS=m
+# CONFIG_SERIAL_8250_CS is not set
 CONFIG_SERIAL_8250_NR_UARTS=4
 CONFIG_SERIAL_8250_RUNTIME_UARTS=4
 CONFIG_SERIAL_8250_EXTENDED=y
 CONFIG_SERIAL_8250_MANY_PORTS=y
-CONFIG_SERIAL_8250_FOURPORT=m
-CONFIG_SERIAL_8250_ACCENT=m
-CONFIG_SERIAL_8250_BOCA=m
-CONFIG_SERIAL_8250_EXAR_ST16C554=m
-CONFIG_SERIAL_8250_HUB6=m
+# CONFIG_SERIAL_8250_FOURPORT is not set
+# CONFIG_SERIAL_8250_ACCENT is not set
+# CONFIG_SERIAL_8250_BOCA is not set
+# CONFIG_SERIAL_8250_EXAR_ST16C554 is not set
+# CONFIG_SERIAL_8250_HUB6 is not set
 CONFIG_SERIAL_8250_SHARE_IRQ=y
-CONFIG_SERIAL_8250_DETECT_IRQ=y
+# CONFIG_SERIAL_8250_DETECT_IRQ is not set
 CONFIG_SERIAL_8250_RSA=y
-# CONFIG_SERIAL_8250_MCA is not set
+CONFIG_SERIAL_8250_DW=m
 
 #
 # Non-8250 serial port support
 #
-CONFIG_SERIAL_MFD_HSU=m
-CONFIG_SERIAL_UARTLITE=m
+# CONFIG_SERIAL_MFD_HSU is not set
 CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
-# CONFIG_SERIAL_JSM is not set
-CONFIG_SERIAL_TIMBERDALE=m
-CONFIG_SERIAL_ALTERA_JTAGUART=m
-CONFIG_SERIAL_ALTERA_UART=m
-CONFIG_SERIAL_ALTERA_UART_MAXPORTS=4
-CONFIG_SERIAL_ALTERA_UART_BAUDRATE=115200
-CONFIG_SERIAL_PCH_UART=m
-CONFIG_SERIAL_XILINX_PS_UART=m
+CONFIG_SERIAL_JSM=m
+CONFIG_SERIAL_SCCNXP=m
+# CONFIG_SERIAL_TIMBERDALE is not set
+# CONFIG_SERIAL_ALTERA_JTAGUART is not set
+# CONFIG_SERIAL_ALTERA_UART is not set
+# CONFIG_SERIAL_PCH_UART is not set
+CONFIG_SERIAL_ARC=m
+CONFIG_SERIAL_ARC_NR_PORTS=1
+CONFIG_SERIAL_RP2=m
+CONFIG_SERIAL_RP2_NR_UARTS=32
+# CONFIG_TTY_PRINTK is not set
 CONFIG_PRINTER=m
-# CONFIG_LP_CONSOLE is not set
+CONFIG_LP_CONSOLE=y
 CONFIG_PPDEV=m
 CONFIG_HVC_DRIVER=y
 CONFIG_HVC_IRQ=y
 CONFIG_HVC_XEN=y
+CONFIG_HVC_XEN_FRONTEND=y
 CONFIG_VIRTIO_CONSOLE=y
 CONFIG_IPMI_HANDLER=m
-CONFIG_IPMI_PANIC_EVENT=y
-# CONFIG_IPMI_PANIC_STRING is not set
+# CONFIG_IPMI_PANIC_EVENT is not set
 CONFIG_IPMI_DEVICE_INTERFACE=m
 CONFIG_IPMI_SI=m
 CONFIG_IPMI_WATCHDOG=m
 CONFIG_IPMI_POWEROFF=m
-CONFIG_HW_RANDOM=m
+CONFIG_HW_RANDOM=y
 CONFIG_HW_RANDOM_TIMERIOMEM=m
 CONFIG_HW_RANDOM_INTEL=m
 CONFIG_HW_RANDOM_AMD=m
+CONFIG_HW_RANDOM_ATMEL=m
 CONFIG_HW_RANDOM_GEODE=m
 CONFIG_HW_RANDOM_VIA=m
 CONFIG_HW_RANDOM_VIRTIO=m
-CONFIG_NVRAM=m
+CONFIG_HW_RANDOM_EXYNOS=m
+CONFIG_NVRAM=y
 # CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
+CONFIG_R3964=m
 # CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
+CONFIG_SONYPI=m
 
 #
 # PCMCIA character devices
 #
-CONFIG_SYNCLINK_CS=m
+# CONFIG_SYNCLINK_CS is not set
 # CONFIG_CARDMAN_4000 is not set
 # CONFIG_CARDMAN_4040 is not set
-CONFIG_IPWIRELESS=m
+# CONFIG_IPWIRELESS is not set
 CONFIG_MWAVE=m
-CONFIG_SCx200_GPIO=m
 CONFIG_PC8736x_GPIO=m
 CONFIG_NSC_GPIO=m
-# CONFIG_RAW_DRIVER is not set
+CONFIG_RAW_DRIVER=y
+CONFIG_MAX_RAW_DEVS=8192
 CONFIG_HPET=y
-CONFIG_HPET_MMAP=y
+# CONFIG_HPET_MMAP is not set
 CONFIG_HANGCHECK_TIMER=m
 # CONFIG_TCG_TPM is not set
 # CONFIG_TELCLOCK is not set
 CONFIG_DEVPORT=y
-# CONFIG_RAMOOPS is not set
 CONFIG_I2C=m
 CONFIG_I2C_BOARDINFO=y
 CONFIG_I2C_COMPAT=y
 CONFIG_I2C_CHARDEV=m
-CONFIG_I2C_MUX=m
-
-#
-# Multiplexer I2C Chip support
-#
-CONFIG_I2C_MUX_GPIO=m
-CONFIG_I2C_MUX_PCA9541=m
-CONFIG_I2C_MUX_PCA954x=m
+# CONFIG_I2C_MUX is not set
 CONFIG_I2C_HELPER_AUTO=y
 CONFIG_I2C_SMBUS=m
 CONFIG_I2C_ALGOBIT=m
@@ -2499,6 +2716,7 @@ CONFIG_I2C_AMD756_S4882=m
 CONFIG_I2C_AMD8111=m
 CONFIG_I2C_I801=m
 CONFIG_I2C_ISCH=m
+CONFIG_I2C_ISMT=m
 CONFIG_I2C_PIIX4=m
 CONFIG_I2C_NFORCE2=m
 CONFIG_I2C_NFORCE2_S4985=m
@@ -2516,16 +2734,18 @@ CONFIG_I2C_SCMI=m
 #
 # I2C system bus drivers (mostly embedded / system-on-chip)
 #
+CONFIG_I2C_CBUS_GPIO=m
 CONFIG_I2C_DESIGNWARE_CORE=m
-CONFIG_I2C_DESIGNWARE_PCI=m
-CONFIG_I2C_GPIO=m
-CONFIG_I2C_INTEL_MID=m
-CONFIG_I2C_OCORES=m
+CONFIG_I2C_DESIGNWARE_PLATFORM=m
+# CONFIG_I2C_DESIGNWARE_PCI is not set
+# CONFIG_I2C_EG20T is not set
+# CONFIG_I2C_GPIO is not set
+# CONFIG_I2C_INTEL_MID is not set
+# CONFIG_I2C_OCORES is not set
 CONFIG_I2C_PCA_PLATFORM=m
 # CONFIG_I2C_PXA_PCI is not set
 CONFIG_I2C_SIMTEC=m
-CONFIG_I2C_XILINX=m
-CONFIG_I2C_EG20T=m
+# CONFIG_I2C_XILINX is not set
 
 #
 # External I2C/SMBus adapter drivers
@@ -2533,21 +2753,33 @@ CONFIG_I2C_EG20T=m
 CONFIG_I2C_DIOLAN_U2C=m
 CONFIG_I2C_PARPORT=m
 CONFIG_I2C_PARPORT_LIGHT=m
-CONFIG_I2C_TAOS_EVM=m
+# CONFIG_I2C_TAOS_EVM is not set
 CONFIG_I2C_TINY_USB=m
+CONFIG_I2C_VIPERBOARD=m
 
 #
 # Other I2C/SMBus bus drivers
 #
-CONFIG_I2C_PCA_ISA=m
-CONFIG_I2C_STUB=m
-# CONFIG_SCx200_I2C is not set
+# CONFIG_I2C_PCA_ISA is not set
 CONFIG_SCx200_ACB=m
+# CONFIG_I2C_STUB is not set
 # CONFIG_I2C_DEBUG_CORE is not set
 # CONFIG_I2C_DEBUG_ALGO is not set
 # CONFIG_I2C_DEBUG_BUS is not set
 # CONFIG_SPI is not set
 
+#
+# Qualcomm MSM SSBI bus support
+#
+# CONFIG_SSBI is not set
+CONFIG_HSI=m
+CONFIG_HSI_BOARDINFO=y
+
+#
+# HSI clients
+#
+CONFIG_HSI_CHAR=m
+
 #
 # PPS support
 #
@@ -2570,67 +2802,76 @@ CONFIG_PPS=m
 # PTP clock support
 #
 CONFIG_PTP_1588_CLOCK=m
-CONFIG_DP83640_PHY=m
+
+#
+# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.
+#
+CONFIG_PTP_1588_CLOCK_PCH=m
 CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
+CONFIG_GPIO_DEVRES=y
 CONFIG_GPIOLIB=y
+CONFIG_GPIO_ACPI=y
 # CONFIG_DEBUG_GPIO is not set
 CONFIG_GPIO_SYSFS=y
-CONFIG_GPIO_GENERIC=m
-CONFIG_GPIO_MAX730X=m
 
 #
 # Memory mapped GPIO drivers:
 #
-CONFIG_GPIO_GENERIC_PLATFORM=m
-CONFIG_GPIO_IT8761E=m
+# CONFIG_GPIO_GENERIC_PLATFORM is not set
+# CONFIG_GPIO_IT8761E is not set
+CONFIG_GPIO_TS5500=m
 CONFIG_GPIO_SCH=m
-CONFIG_GPIO_VX855=m
+CONFIG_GPIO_ICH=m
+# CONFIG_GPIO_VX855 is not set
+# CONFIG_GPIO_LYNXPOINT is not set
 
 #
 # I2C GPIO expanders:
 #
-CONFIG_GPIO_MAX7300=m
-CONFIG_GPIO_MAX732X=m
-CONFIG_GPIO_PCA953X=m
-CONFIG_GPIO_PCF857X=m
-CONFIG_GPIO_ADP5588=m
+# CONFIG_GPIO_MAX7300 is not set
+# CONFIG_GPIO_MAX732X is not set
+# CONFIG_GPIO_PCA953X is not set
+# CONFIG_GPIO_PCF857X is not set
+# CONFIG_GPIO_ADP5588 is not set
 
 #
 # PCI GPIO expanders:
 #
-CONFIG_GPIO_CS5535=m
-# CONFIG_GPIO_BT8XX is not set
+# CONFIG_GPIO_CS5535 is not set
+# CONFIG_GPIO_AMD8111 is not set
 # CONFIG_GPIO_LANGWELL is not set
-CONFIG_GPIO_PCH=m
-CONFIG_GPIO_ML_IOH=m
-# CONFIG_GPIO_TIMBERDALE is not set
-CONFIG_GPIO_RDC321X=m
+# CONFIG_GPIO_PCH is not set
+# CONFIG_GPIO_ML_IOH is not set
+# CONFIG_GPIO_RDC321X is not set
 
 #
 # SPI GPIO expanders:
 #
-CONFIG_GPIO_MCP23S08=m
+# CONFIG_GPIO_MCP23S08 is not set
 
 #
 # AC97 GPIO expanders:
 #
-# CONFIG_GPIO_UCB1400 is not set
 
 #
 # MODULbus GPIO expanders:
 #
-CONFIG_GPIO_JANZ_TTL=m
+
+#
+# USB GPIO expanders:
+#
+CONFIG_GPIO_VIPERBOARD=m
 CONFIG_W1=m
 CONFIG_W1_CON=y
 
 #
 # 1-wire Bus Masters
 #
-CONFIG_W1_MASTER_MATROX=m
+# CONFIG_W1_MASTER_MATROX is not set
 CONFIG_W1_MASTER_DS2490=m
 CONFIG_W1_MASTER_DS2482=m
 CONFIG_W1_MASTER_DS1WM=m
-CONFIG_W1_MASTER_GPIO=m
+# CONFIG_W1_MASTER_GPIO is not set
 
 #
 # 1-wire Slaves
@@ -2638,29 +2879,39 @@ CONFIG_W1_MASTER_GPIO=m
 CONFIG_W1_SLAVE_THERM=m
 CONFIG_W1_SLAVE_SMEM=m
 CONFIG_W1_SLAVE_DS2408=m
+CONFIG_W1_SLAVE_DS2408_READBACK=y
+CONFIG_W1_SLAVE_DS2413=m
 CONFIG_W1_SLAVE_DS2423=m
 CONFIG_W1_SLAVE_DS2431=m
 CONFIG_W1_SLAVE_DS2433=m
 CONFIG_W1_SLAVE_DS2433_CRC=y
 CONFIG_W1_SLAVE_DS2760=m
 CONFIG_W1_SLAVE_DS2780=m
+CONFIG_W1_SLAVE_DS2781=m
+CONFIG_W1_SLAVE_DS28E04=m
 CONFIG_W1_SLAVE_BQ27000=m
 CONFIG_POWER_SUPPLY=y
 # CONFIG_POWER_SUPPLY_DEBUG is not set
 # CONFIG_PDA_POWER is not set
+CONFIG_GENERIC_ADC_BATTERY=m
 # CONFIG_TEST_POWER is not set
 # CONFIG_BATTERY_DS2760 is not set
 # CONFIG_BATTERY_DS2780 is not set
+# CONFIG_BATTERY_DS2781 is not set
 # CONFIG_BATTERY_DS2782 is not set
-# CONFIG_BATTERY_BQ20Z75 is not set
+# CONFIG_BATTERY_SBS is not set
 # CONFIG_BATTERY_BQ27x00 is not set
 # CONFIG_BATTERY_MAX17040 is not set
 # CONFIG_BATTERY_MAX17042 is not set
-# CONFIG_CHARGER_PCF50633 is not set
-# CONFIG_CHARGER_ISP1704 is not set
 # CONFIG_CHARGER_MAX8903 is not set
+# CONFIG_CHARGER_LP8727 is not set
 # CONFIG_CHARGER_GPIO is not set
-CONFIG_HWMON=m
+# CONFIG_CHARGER_BQ2415X is not set
+# CONFIG_CHARGER_SMB347 is not set
+# CONFIG_BATTERY_GOLDFISH is not set
+CONFIG_POWER_RESET=y
+CONFIG_POWER_AVS=y
+CONFIG_HWMON=y
 CONFIG_HWMON_VID=m
 # CONFIG_HWMON_DEBUG_CHIP is not set
 
@@ -2677,6 +2928,8 @@ CONFIG_SENSORS_ADM1026=m
 CONFIG_SENSORS_ADM1029=m
 CONFIG_SENSORS_ADM1031=m
 CONFIG_SENSORS_ADM9240=m
+CONFIG_SENSORS_ADT7X10=m
+CONFIG_SENSORS_ADT7410=m
 CONFIG_SENSORS_ADT7411=m
 CONFIG_SENSORS_ADT7462=m
 CONFIG_SENSORS_ADT7470=m
@@ -2697,12 +2950,14 @@ CONFIG_SENSORS_FSCHMD=m
 CONFIG_SENSORS_G760A=m
 CONFIG_SENSORS_GL518SM=m
 CONFIG_SENSORS_GL520SM=m
-CONFIG_SENSORS_GPIO_FAN=m
+# CONFIG_SENSORS_GPIO_FAN is not set
+CONFIG_SENSORS_HIH6130=m
 CONFIG_SENSORS_CORETEMP=m
 CONFIG_SENSORS_IBMAEM=m
 CONFIG_SENSORS_IBMPEX=m
+# CONFIG_SENSORS_IIO_HWMON is not set
 CONFIG_SENSORS_IT87=m
-CONFIG_SENSORS_JC42=m
+# CONFIG_SENSORS_JC42 is not set
 CONFIG_SENSORS_LINEAGE=m
 CONFIG_SENSORS_LM63=m
 CONFIG_SENSORS_LM73=m
@@ -2720,14 +2975,19 @@ CONFIG_SENSORS_LTC4151=m
 CONFIG_SENSORS_LTC4215=m
 CONFIG_SENSORS_LTC4245=m
 CONFIG_SENSORS_LTC4261=m
+CONFIG_SENSORS_LM95234=m
 CONFIG_SENSORS_LM95241=m
 CONFIG_SENSORS_LM95245=m
 CONFIG_SENSORS_MAX16065=m
 CONFIG_SENSORS_MAX1619=m
 CONFIG_SENSORS_MAX1668=m
+CONFIG_SENSORS_MAX197=m
 CONFIG_SENSORS_MAX6639=m
 CONFIG_SENSORS_MAX6642=m
 CONFIG_SENSORS_MAX6650=m
+CONFIG_SENSORS_MAX6697=m
+CONFIG_SENSORS_MCP3021=m
+CONFIG_SENSORS_NCT6775=m
 CONFIG_SENSORS_NTC_THERMISTOR=m
 CONFIG_SENSORS_PC87360=m
 CONFIG_SENSORS_PC87427=m
@@ -2736,20 +2996,20 @@ CONFIG_PMBUS=m
 CONFIG_SENSORS_PMBUS=m
 CONFIG_SENSORS_ADM1275=m
 CONFIG_SENSORS_LM25066=m
-CONFIG_SENSORS_LTC2978=m
+# CONFIG_SENSORS_LTC2978 is not set
 CONFIG_SENSORS_MAX16064=m
 CONFIG_SENSORS_MAX34440=m
 CONFIG_SENSORS_MAX8688=m
 CONFIG_SENSORS_UCD9000=m
 CONFIG_SENSORS_UCD9200=m
-CONFIG_SENSORS_ZL6100=m
+# CONFIG_SENSORS_ZL6100 is not set
 CONFIG_SENSORS_SHT15=m
 CONFIG_SENSORS_SHT21=m
 CONFIG_SENSORS_SIS5595=m
-CONFIG_SENSORS_SMM665=m
+# CONFIG_SENSORS_SMM665 is not set
 CONFIG_SENSORS_DME1737=m
 CONFIG_SENSORS_EMC1403=m
-CONFIG_SENSORS_EMC2103=m
+# CONFIG_SENSORS_EMC2103 is not set
 CONFIG_SENSORS_EMC6W201=m
 CONFIG_SENSORS_SMSC47M1=m
 CONFIG_SENSORS_SMSC47M192=m
@@ -2760,6 +3020,8 @@ CONFIG_SENSORS_SCH5636=m
 CONFIG_SENSORS_ADS1015=m
 CONFIG_SENSORS_ADS7828=m
 CONFIG_SENSORS_AMC6821=m
+CONFIG_SENSORS_INA209=m
+CONFIG_SENSORS_INA2XX=m
 CONFIG_SENSORS_THMC50=m
 CONFIG_SENSORS_TMP102=m
 CONFIG_SENSORS_TMP401=m
@@ -2786,51 +3048,63 @@ CONFIG_SENSORS_APPLESMC=m
 CONFIG_SENSORS_ACPI_POWER=m
 CONFIG_SENSORS_ATK0110=m
 CONFIG_THERMAL=y
+CONFIG_THERMAL_HWMON=y
+CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
+# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set
+# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
+CONFIG_THERMAL_GOV_FAIR_SHARE=y
+CONFIG_THERMAL_GOV_STEP_WISE=y
+CONFIG_THERMAL_GOV_USER_SPACE=y
+CONFIG_CPU_THERMAL=y
+CONFIG_THERMAL_EMULATION=y
+CONFIG_INTEL_POWERCLAMP=m
 CONFIG_WATCHDOG=y
 CONFIG_WATCHDOG_CORE=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
+CONFIG_WATCHDOG_NOWAYOUT=y
 
 #
 # Watchdog Device Drivers
 #
 CONFIG_SOFT_WATCHDOG=m
-CONFIG_ACQUIRE_WDT=m
-CONFIG_ADVANTECH_WDT=m
+CONFIG_RETU_WATCHDOG=m
+# CONFIG_ACQUIRE_WDT is not set
+# CONFIG_ADVANTECH_WDT is not set
 CONFIG_ALIM1535_WDT=m
 CONFIG_ALIM7101_WDT=m
 CONFIG_F71808E_WDT=m
 CONFIG_SP5100_TCO=m
 CONFIG_GEODE_WDT=m
-CONFIG_SC520_WDT=m
+# CONFIG_SC520_WDT is not set
 CONFIG_SBC_FITPC2_WATCHDOG=m
-CONFIG_EUROTECH_WDT=m
+# CONFIG_EUROTECH_WDT is not set
 CONFIG_IB700_WDT=m
 CONFIG_IBMASR=m
-CONFIG_WAFER_WDT=m
+# CONFIG_WAFER_WDT is not set
 CONFIG_I6300ESB_WDT=m
+CONFIG_IE6XX_WDT=m
 CONFIG_ITCO_WDT=m
 # CONFIG_ITCO_VENDOR_SUPPORT is not set
 CONFIG_IT8712F_WDT=m
 CONFIG_IT87_WDT=m
 CONFIG_HP_WATCHDOG=m
 CONFIG_HPWDT_NMI_DECODING=y
-CONFIG_SC1200_WDT=m
-CONFIG_SCx200_WDT=m
-CONFIG_PC87413_WDT=m
+# CONFIG_SC1200_WDT is not set
+# CONFIG_PC87413_WDT is not set
 CONFIG_NV_TCO=m
-CONFIG_60XX_WDT=m
-CONFIG_SBC8360_WDT=m
-CONFIG_SBC7240_WDT=m
-CONFIG_CPU5_WDT=m
+# CONFIG_60XX_WDT is not set
+# CONFIG_SBC8360_WDT is not set
+# CONFIG_SBC7240_WDT is not set
+# CONFIG_CPU5_WDT is not set
 CONFIG_SMSC_SCH311X_WDT=m
-CONFIG_SMSC37B787_WDT=m
+# CONFIG_SMSC37B787_WDT is not set
+CONFIG_VIA_WDT=m
 CONFIG_W83627HF_WDT=m
 CONFIG_W83697HF_WDT=m
 CONFIG_W83697UG_WDT=m
 CONFIG_W83877F_WDT=m
 CONFIG_W83977F_WDT=m
 CONFIG_MACHZ_WDT=m
-CONFIG_SBC_EPX_C3_WATCHDOG=m
+# CONFIG_SBC_EPX_C3_WATCHDOG is not set
 CONFIG_XEN_WDT=m
 
 #
@@ -2857,397 +3131,629 @@ CONFIG_SSB_POSSIBLE=y
 #
 CONFIG_SSB=m
 CONFIG_SSB_SPROM=y
+CONFIG_SSB_BLOCKIO=y
 CONFIG_SSB_PCIHOST_POSSIBLE=y
 CONFIG_SSB_PCIHOST=y
-# CONFIG_SSB_B43_PCI_BRIDGE is not set
+CONFIG_SSB_B43_PCI_BRIDGE=y
 CONFIG_SSB_PCMCIAHOST_POSSIBLE=y
 CONFIG_SSB_PCMCIAHOST=y
 CONFIG_SSB_SDIOHOST_POSSIBLE=y
 CONFIG_SSB_SDIOHOST=y
-# CONFIG_SSB_DEBUG is not set
+CONFIG_SSB_SILENT=y
 CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
 CONFIG_SSB_DRIVER_PCICORE=y
+CONFIG_SSB_DRIVER_GPIO=y
 CONFIG_BCMA_POSSIBLE=y
 
 #
 # Broadcom specific AMBA
 #
-CONFIG_BCMA=m
-CONFIG_BCMA_HOST_PCI_POSSIBLE=y
-# CONFIG_BCMA_HOST_PCI is not set
-# CONFIG_BCMA_DEBUG is not set
+# CONFIG_BCMA is not set
 
 #
 # Multifunction device drivers
 #
 CONFIG_MFD_CORE=m
-CONFIG_MFD_SM501=m
-# CONFIG_MFD_SM501_GPIO is not set
-CONFIG_HTC_PASIC3=m
-CONFIG_UCB1400_CORE=m
-CONFIG_TPS6105X=m
-CONFIG_TPS65010=m
-CONFIG_TPS6507X=m
-# CONFIG_MFD_TMIO is not set
-CONFIG_MFD_WM8400=m
-CONFIG_MFD_PCF50633=m
-CONFIG_PCF50633_ADC=m
-CONFIG_PCF50633_GPIO=m
-# CONFIG_ABX500_CORE is not set
 CONFIG_MFD_CS5535=m
-CONFIG_MFD_TIMBERDALE=m
+# CONFIG_MFD_CROS_EC is not set
+# CONFIG_MFD_MC13XXX_I2C is not set
+# CONFIG_HTC_PASIC3 is not set
+CONFIG_LPC_ICH=m
 CONFIG_LPC_SCH=m
-CONFIG_MFD_RDC321X=m
-CONFIG_MFD_JANZ_CMODIO=m
-CONFIG_MFD_VX855=m
+# CONFIG_MFD_JANZ_CMODIO is not set
+CONFIG_MFD_VIPERBOARD=m
+CONFIG_MFD_RETU=m
+# CONFIG_MFD_PCF50633 is not set
+# CONFIG_UCB1400_CORE is not set
+# CONFIG_MFD_RDC321X is not set
+CONFIG_MFD_RTSX_PCI=m
+# CONFIG_MFD_SI476X_CORE is not set
+CONFIG_MFD_SM501=m
+CONFIG_MFD_SM501_GPIO=y
+# CONFIG_ABX500_CORE is not set
+# CONFIG_MFD_SYSCON is not set
+# CONFIG_MFD_TI_AM335X_TSCADC is not set
+# CONFIG_TPS6105X is not set
+# CONFIG_TPS65010 is not set
+# CONFIG_TPS6507X is not set
+# CONFIG_MFD_TPS65217 is not set
+# CONFIG_MFD_TPS65912 is not set
 CONFIG_MFD_WL1273_CORE=m
-CONFIG_REGULATOR=y
-# CONFIG_REGULATOR_DEBUG is not set
-# CONFIG_REGULATOR_DUMMY is not set
-CONFIG_REGULATOR_FIXED_VOLTAGE=m
-# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
-# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
-CONFIG_REGULATOR_GPIO=m
-# CONFIG_REGULATOR_BQ24022 is not set
-# CONFIG_REGULATOR_MAX1586 is not set
-# CONFIG_REGULATOR_MAX8649 is not set
-# CONFIG_REGULATOR_MAX8660 is not set
-# CONFIG_REGULATOR_MAX8952 is not set
-# CONFIG_REGULATOR_WM8400 is not set
-# CONFIG_REGULATOR_PCF50633 is not set
-# CONFIG_REGULATOR_LP3971 is not set
-# CONFIG_REGULATOR_LP3972 is not set
-# CONFIG_REGULATOR_TPS6105X is not set
-# CONFIG_REGULATOR_TPS65023 is not set
-# CONFIG_REGULATOR_TPS6507X is not set
-# CONFIG_REGULATOR_ISL6271A is not set
-# CONFIG_REGULATOR_AD5398 is not set
+CONFIG_MFD_LM3533=m
+# CONFIG_MFD_TIMBERDALE is not set
+# CONFIG_MFD_TMIO is not set
+CONFIG_MFD_VX855=m
+# CONFIG_MFD_ARIZONA_I2C is not set
+# CONFIG_REGULATOR is not set
 CONFIG_MEDIA_SUPPORT=m
 
 #
 # Multimedia core support
 #
+CONFIG_MEDIA_CAMERA_SUPPORT=y
+CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
+CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
+# CONFIG_MEDIA_RADIO_SUPPORT is not set
+CONFIG_MEDIA_RC_SUPPORT=y
 CONFIG_MEDIA_CONTROLLER=y
 CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L2_COMMON=m
 CONFIG_VIDEO_V4L2_SUBDEV_API=y
+CONFIG_VIDEO_V4L2=m
+# CONFIG_VIDEO_ADV_DEBUG is not set
+# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
+CONFIG_VIDEO_TUNER=m
+CONFIG_V4L2_MEM2MEM_DEV=m
+CONFIG_VIDEOBUF_GEN=m
+CONFIG_VIDEOBUF_DMA_SG=m
+CONFIG_VIDEOBUF_VMALLOC=m
+CONFIG_VIDEOBUF_DMA_CONTIG=m
+CONFIG_VIDEOBUF_DVB=m
+CONFIG_VIDEOBUF2_CORE=m
+CONFIG_VIDEOBUF2_MEMOPS=m
+CONFIG_VIDEOBUF2_DMA_CONTIG=m
+CONFIG_VIDEOBUF2_VMALLOC=m
+CONFIG_VIDEO_V4L2_INT_DEVICE=m
 CONFIG_DVB_CORE=m
 CONFIG_DVB_NET=y
-CONFIG_VIDEO_MEDIA=m
+CONFIG_TTPCI_EEPROM=m
+CONFIG_DVB_MAX_ADAPTERS=8
+CONFIG_DVB_DYNAMIC_MINORS=y
 
 #
-# Multimedia drivers
+# Media drivers
 #
 CONFIG_RC_CORE=m
-CONFIG_LIRC=m
 CONFIG_RC_MAP=m
-# CONFIG_IR_NEC_DECODER is not set
-# CONFIG_IR_RC5_DECODER is not set
-# CONFIG_IR_RC6_DECODER is not set
-# CONFIG_IR_JVC_DECODER is not set
-# CONFIG_IR_SONY_DECODER is not set
-# CONFIG_IR_RC5_SZ_DECODER is not set
-# CONFIG_IR_MCE_KBD_DECODER is not set
-# CONFIG_IR_LIRC_CODEC is not set
-# CONFIG_RC_ATI_REMOTE is not set
-# CONFIG_IR_ENE is not set
-# CONFIG_IR_IMON is not set
-# CONFIG_IR_MCEUSB is not set
-# CONFIG_IR_ITE_CIR is not set
-# CONFIG_IR_FINTEK is not set
-# CONFIG_IR_NUVOTON is not set
-# CONFIG_IR_REDRAT3 is not set
-# CONFIG_IR_STREAMZAP is not set
-# CONFIG_IR_WINBOND_CIR is not set
-# CONFIG_RC_LOOPBACK is not set
-CONFIG_MEDIA_ATTACH=y
-CONFIG_MEDIA_TUNER=m
-# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
-CONFIG_MEDIA_TUNER_SIMPLE=m
-CONFIG_MEDIA_TUNER_TDA8290=m
-CONFIG_MEDIA_TUNER_TDA827X=m
-CONFIG_MEDIA_TUNER_TDA18271=m
-CONFIG_MEDIA_TUNER_TDA9887=m
-CONFIG_MEDIA_TUNER_TEA5761=m
-CONFIG_MEDIA_TUNER_TEA5767=m
-CONFIG_MEDIA_TUNER_MT20XX=m
-CONFIG_MEDIA_TUNER_XC2028=m
-CONFIG_MEDIA_TUNER_XC5000=m
-CONFIG_MEDIA_TUNER_XC4000=m
-CONFIG_MEDIA_TUNER_MC44S803=m
-CONFIG_VIDEO_V4L2=m
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
-# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set
-CONFIG_VIDEO_IR_I2C=m
-
-#
-# Encoders, decoders, sensors and other helper chips
-#
-
-#
-# Audio decoders, processors and mixers
-#
-# CONFIG_VIDEO_TVAUDIO is not set
-# CONFIG_VIDEO_TDA7432 is not set
-# CONFIG_VIDEO_TDA9840 is not set
-# CONFIG_VIDEO_TEA6415C is not set
-# CONFIG_VIDEO_TEA6420 is not set
-# CONFIG_VIDEO_MSP3400 is not set
-# CONFIG_VIDEO_CS5345 is not set
-# CONFIG_VIDEO_CS53L32A is not set
-# CONFIG_VIDEO_TLV320AIC23B is not set
-# CONFIG_VIDEO_WM8775 is not set
-# CONFIG_VIDEO_WM8739 is not set
-# CONFIG_VIDEO_VP27SMPX is not set
-
-#
-# RDS decoders
-#
-# CONFIG_VIDEO_SAA6588 is not set
-
-#
-# Video decoders
-#
-# CONFIG_VIDEO_ADV7180 is not set
-# CONFIG_VIDEO_BT819 is not set
-# CONFIG_VIDEO_BT856 is not set
-# CONFIG_VIDEO_BT866 is not set
-# CONFIG_VIDEO_KS0127 is not set
-# CONFIG_VIDEO_SAA7110 is not set
-# CONFIG_VIDEO_SAA711X is not set
-# CONFIG_VIDEO_SAA7191 is not set
-# CONFIG_VIDEO_TVP514X is not set
-# CONFIG_VIDEO_TVP5150 is not set
-# CONFIG_VIDEO_TVP7002 is not set
-# CONFIG_VIDEO_VPX3220 is not set
-
-#
-# Video and audio decoders
-#
-# CONFIG_VIDEO_SAA717X is not set
-# CONFIG_VIDEO_CX25840 is not set
-
-#
-# MPEG video encoders
-#
-# CONFIG_VIDEO_CX2341X is not set
-
-#
-# Video encoders
-#
-# CONFIG_VIDEO_SAA7127 is not set
-# CONFIG_VIDEO_SAA7185 is not set
-# CONFIG_VIDEO_ADV7170 is not set
-# CONFIG_VIDEO_ADV7175 is not set
-# CONFIG_VIDEO_ADV7343 is not set
-# CONFIG_VIDEO_AK881X is not set
+CONFIG_RC_DECODERS=y
+CONFIG_LIRC=m
+CONFIG_IR_LIRC_CODEC=m
+CONFIG_IR_NEC_DECODER=m
+CONFIG_IR_RC5_DECODER=m
+CONFIG_IR_RC6_DECODER=m
+CONFIG_IR_JVC_DECODER=m
+CONFIG_IR_SONY_DECODER=m
+CONFIG_IR_RC5_SZ_DECODER=m
+CONFIG_IR_SANYO_DECODER=m
+CONFIG_IR_MCE_KBD_DECODER=m
+CONFIG_RC_DEVICES=y
+CONFIG_RC_ATI_REMOTE=m
+CONFIG_IR_ENE=m
+CONFIG_IR_IMON=m
+CONFIG_IR_MCEUSB=m
+CONFIG_IR_ITE_CIR=m
+CONFIG_IR_FINTEK=m
+CONFIG_IR_NUVOTON=m
+CONFIG_IR_REDRAT3=m
+CONFIG_IR_STREAMZAP=m
+CONFIG_IR_WINBOND_CIR=m
+CONFIG_IR_IGUANA=m
+CONFIG_IR_TTUSBIR=m
+CONFIG_RC_LOOPBACK=m
+CONFIG_IR_GPIO_CIR=m
+CONFIG_MEDIA_USB_SUPPORT=y
+
+#
+# Webcam devices
+#
+CONFIG_USB_VIDEO_CLASS=m
+CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
+CONFIG_USB_GSPCA=m
+CONFIG_USB_M5602=m
+CONFIG_USB_STV06XX=m
+CONFIG_USB_GL860=m
+CONFIG_USB_GSPCA_BENQ=m
+CONFIG_USB_GSPCA_CONEX=m
+CONFIG_USB_GSPCA_CPIA1=m
+CONFIG_USB_GSPCA_ETOMS=m
+CONFIG_USB_GSPCA_FINEPIX=m
+CONFIG_USB_GSPCA_JEILINJ=m
+CONFIG_USB_GSPCA_JL2005BCD=m
+CONFIG_USB_GSPCA_KINECT=m
+CONFIG_USB_GSPCA_KONICA=m
+CONFIG_USB_GSPCA_MARS=m
+CONFIG_USB_GSPCA_MR97310A=m
+CONFIG_USB_GSPCA_NW80X=m
+CONFIG_USB_GSPCA_OV519=m
+CONFIG_USB_GSPCA_OV534=m
+CONFIG_USB_GSPCA_OV534_9=m
+CONFIG_USB_GSPCA_PAC207=m
+CONFIG_USB_GSPCA_PAC7302=m
+CONFIG_USB_GSPCA_PAC7311=m
+CONFIG_USB_GSPCA_SE401=m
+CONFIG_USB_GSPCA_SN9C2028=m
+CONFIG_USB_GSPCA_SN9C20X=m
+CONFIG_USB_GSPCA_SONIXB=m
+CONFIG_USB_GSPCA_SONIXJ=m
+CONFIG_USB_GSPCA_SPCA500=m
+CONFIG_USB_GSPCA_SPCA501=m
+CONFIG_USB_GSPCA_SPCA505=m
+CONFIG_USB_GSPCA_SPCA506=m
+CONFIG_USB_GSPCA_SPCA508=m
+CONFIG_USB_GSPCA_SPCA561=m
+CONFIG_USB_GSPCA_SPCA1528=m
+CONFIG_USB_GSPCA_SQ905=m
+CONFIG_USB_GSPCA_SQ905C=m
+CONFIG_USB_GSPCA_SQ930X=m
+CONFIG_USB_GSPCA_STK014=m
+CONFIG_USB_GSPCA_STV0680=m
+CONFIG_USB_GSPCA_SUNPLUS=m
+CONFIG_USB_GSPCA_T613=m
+CONFIG_USB_GSPCA_TOPRO=m
+CONFIG_USB_GSPCA_TV8532=m
+CONFIG_USB_GSPCA_VC032X=m
+CONFIG_USB_GSPCA_VICAM=m
+CONFIG_USB_GSPCA_XIRLINK_CIT=m
+CONFIG_USB_GSPCA_ZC3XX=m
+CONFIG_USB_PWC=m
+# CONFIG_USB_PWC_DEBUG is not set
+CONFIG_USB_PWC_INPUT_EVDEV=y
+CONFIG_VIDEO_CPIA2=m
+CONFIG_USB_ZR364XX=m
+CONFIG_USB_STKWEBCAM=m
+CONFIG_USB_S2255=m
+CONFIG_USB_SN9C102=m
+
+#
+# Analog TV USB devices
+#
+CONFIG_VIDEO_PVRUSB2=m
+CONFIG_VIDEO_PVRUSB2_SYSFS=y
+CONFIG_VIDEO_PVRUSB2_DVB=y
+# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
+CONFIG_VIDEO_HDPVR=m
+CONFIG_VIDEO_TLG2300=m
+CONFIG_VIDEO_USBVISION=m
+CONFIG_VIDEO_STK1160=m
+CONFIG_VIDEO_STK1160_AC97=y
+
+#
+# Analog/digital TV USB devices
+#
+CONFIG_VIDEO_AU0828=m
+CONFIG_VIDEO_AU0828_V4L2=y
+CONFIG_VIDEO_CX231XX=m
+CONFIG_VIDEO_CX231XX_RC=y
+CONFIG_VIDEO_CX231XX_ALSA=m
+CONFIG_VIDEO_CX231XX_DVB=m
+CONFIG_VIDEO_TM6000=m
+CONFIG_VIDEO_TM6000_ALSA=m
+CONFIG_VIDEO_TM6000_DVB=m
+
+#
+# Digital TV USB devices
+#
+CONFIG_DVB_USB=m
+# CONFIG_DVB_USB_DEBUG is not set
+CONFIG_DVB_USB_A800=m
+CONFIG_DVB_USB_DIBUSB_MB=m
+CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y
+CONFIG_DVB_USB_DIBUSB_MC=m
+CONFIG_DVB_USB_DIB0700=m
+CONFIG_DVB_USB_UMT_010=m
+CONFIG_DVB_USB_CXUSB=m
+CONFIG_DVB_USB_M920X=m
+CONFIG_DVB_USB_DIGITV=m
+CONFIG_DVB_USB_VP7045=m
+CONFIG_DVB_USB_VP702X=m
+CONFIG_DVB_USB_GP8PSK=m
+CONFIG_DVB_USB_NOVA_T_USB2=m
+CONFIG_DVB_USB_TTUSB2=m
+CONFIG_DVB_USB_DTT200U=m
+CONFIG_DVB_USB_OPERA1=m
+CONFIG_DVB_USB_AF9005=m
+CONFIG_DVB_USB_AF9005_REMOTE=m
+CONFIG_DVB_USB_PCTV452E=m
+CONFIG_DVB_USB_DW2102=m
+CONFIG_DVB_USB_CINERGY_T2=m
+CONFIG_DVB_USB_DTV5100=m
+CONFIG_DVB_USB_FRIIO=m
+CONFIG_DVB_USB_AZ6027=m
+CONFIG_DVB_USB_TECHNISAT_USB2=m
+CONFIG_DVB_USB_V2=m
+CONFIG_DVB_USB_AF9015=m
+CONFIG_DVB_USB_AF9035=m
+CONFIG_DVB_USB_ANYSEE=m
+CONFIG_DVB_USB_AU6610=m
+CONFIG_DVB_USB_AZ6007=m
+CONFIG_DVB_USB_CE6230=m
+CONFIG_DVB_USB_EC168=m
+CONFIG_DVB_USB_GL861=m
+CONFIG_DVB_USB_IT913X=m
+CONFIG_DVB_USB_LME2510=m
+CONFIG_DVB_USB_MXL111SF=m
+CONFIG_DVB_USB_RTL28XXU=m
+CONFIG_DVB_USB_DVBSKY=m
+CONFIG_DVB_TTUSB_BUDGET=m
+CONFIG_DVB_TTUSB_DEC=m
+CONFIG_SMS_USB_DRV=m
+CONFIG_DVB_B2C2_FLEXCOP_USB=m
+# CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set
+
+#
+# Webcam, TV (analog/digital) USB devices
+#
+CONFIG_VIDEO_EM28XX=m
+CONFIG_VIDEO_EM28XX_ALSA=m
+CONFIG_VIDEO_EM28XX_DVB=m
+CONFIG_VIDEO_EM28XX_RC=m
+CONFIG_MEDIA_PCI_SUPPORT=y
+
+#
+# Media capture support
+#
+CONFIG_VIDEO_MEYE=m
+
+#
+# Media capture/analog TV support
+#
+CONFIG_VIDEO_IVTV=m
+CONFIG_VIDEO_IVTV_ALSA=m
+CONFIG_VIDEO_FB_IVTV=m
+CONFIG_VIDEO_ZORAN=m
+CONFIG_VIDEO_ZORAN_DC30=m
+CONFIG_VIDEO_ZORAN_ZR36060=m
+CONFIG_VIDEO_ZORAN_BUZ=m
+CONFIG_VIDEO_ZORAN_DC10=m
+CONFIG_VIDEO_ZORAN_LML33=m
+CONFIG_VIDEO_ZORAN_LML33R10=m
+CONFIG_VIDEO_ZORAN_AVS6EYES=m
+CONFIG_VIDEO_HEXIUM_GEMINI=m
+CONFIG_VIDEO_HEXIUM_ORION=m
+CONFIG_VIDEO_MXB=m
+
+#
+# Media capture/analog/hybrid TV support
+#
+CONFIG_VIDEO_CX18=m
+CONFIG_VIDEO_CX18_ALSA=m
+CONFIG_VIDEO_CX23885=m
+CONFIG_MEDIA_ALTERA_CI=m
+CONFIG_VIDEO_CX25821=m
+CONFIG_VIDEO_CX25821_ALSA=m
+CONFIG_VIDEO_CX88=m
+CONFIG_VIDEO_CX88_ALSA=m
+CONFIG_VIDEO_CX88_BLACKBIRD=m
+CONFIG_VIDEO_CX88_DVB=m
+CONFIG_VIDEO_CX88_VP3054=m
+CONFIG_VIDEO_CX88_MPEG=m
+CONFIG_VIDEO_BT848=m
+CONFIG_DVB_BT8XX=m
+CONFIG_VIDEO_SAA7134=m
+CONFIG_VIDEO_SAA7134_ALSA=m
+CONFIG_VIDEO_SAA7134_RC=y
+CONFIG_VIDEO_SAA7134_DVB=m
+CONFIG_VIDEO_SAA7164=m
+
+#
+# Media digital TV PCI Adapters
+#
+CONFIG_DVB_AV7110=m
+CONFIG_DVB_AV7110_OSD=y
+CONFIG_DVB_BUDGET_CORE=m
+CONFIG_DVB_BUDGET=m
+CONFIG_DVB_BUDGET_CI=m
+CONFIG_DVB_BUDGET_AV=m
+CONFIG_DVB_BUDGET_PATCH=m
+CONFIG_DVB_B2C2_FLEXCOP_PCI=m
+# CONFIG_DVB_B2C2_FLEXCOP_PCI_DEBUG is not set
+CONFIG_DVB_PLUTO2=m
+CONFIG_DVB_DM1105=m
+CONFIG_DVB_PT1=m
+CONFIG_MANTIS_CORE=m
+CONFIG_DVB_MANTIS=m
+CONFIG_DVB_HOPPER=m
+CONFIG_DVB_NGENE=m
+CONFIG_DVB_DDBRIDGE=m
+CONFIG_V4L_PLATFORM_DRIVERS=y
+CONFIG_VIDEO_CAFE_CCIC=m
+# CONFIG_VIDEO_VIA_CAMERA is not set
+CONFIG_VIDEO_TIMBERDALE=m
+CONFIG_SOC_CAMERA=m
+CONFIG_SOC_CAMERA_PLATFORM=m
+CONFIG_VIDEO_SH_MOBILE_CSI2=m
+CONFIG_VIDEO_SH_MOBILE_CEU=m
+CONFIG_V4L_MEM2MEM_DRIVERS=y
+CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m
+CONFIG_VIDEO_SH_VEU=m
+# CONFIG_V4L_TEST_DRIVERS is not set
 
 #
-# Camera sensor devices
+# Supported MMC/SDIO adapters
 #
-# CONFIG_VIDEO_OV7670 is not set
-# CONFIG_VIDEO_MT9P031 is not set
-# CONFIG_VIDEO_MT9T001 is not set
-# CONFIG_VIDEO_MT9V011 is not set
-# CONFIG_VIDEO_MT9V032 is not set
-# CONFIG_VIDEO_TCM825X is not set
-# CONFIG_VIDEO_SR030PC30 is not set
-# CONFIG_VIDEO_NOON010PC30 is not set
-# CONFIG_VIDEO_M5MOLS is not set
-# CONFIG_VIDEO_S5K6AA is not set
+# CONFIG_SMS_SDIO_DRV is not set
+# CONFIG_MEDIA_PARPORT_SUPPORT is not set
 
 #
-# Flash devices
-#
-# CONFIG_VIDEO_ADP1653 is not set
-
-#
-# Video improvement chips
+# Supported FireWire (IEEE 1394) Adapters
 #
-# CONFIG_VIDEO_UPD64031A is not set
-# CONFIG_VIDEO_UPD64083 is not set
+CONFIG_DVB_FIREDTV=m
+CONFIG_DVB_FIREDTV_INPUT=y
+CONFIG_MEDIA_COMMON_OPTIONS=y
 
 #
-# Miscelaneous helper chips
+# common driver options
 #
-# CONFIG_VIDEO_THS7303 is not set
-# CONFIG_VIDEO_M52790 is not set
-# CONFIG_VIDEO_VIVI is not set
-# CONFIG_VIDEO_BT848 is not set
-# CONFIG_VIDEO_PMS is not set
-# CONFIG_VIDEO_BWQCAM is not set
-# CONFIG_VIDEO_CQCAM is not set
-# CONFIG_VIDEO_W9966 is not set
-# CONFIG_VIDEO_CPIA2 is not set
-# CONFIG_VIDEO_ZORAN is not set
-# CONFIG_VIDEO_MEYE is not set
-# CONFIG_VIDEO_SAA7134 is not set
-# CONFIG_VIDEO_MXB is not set
-# CONFIG_VIDEO_HEXIUM_ORION is not set
-# CONFIG_VIDEO_HEXIUM_GEMINI is not set
-# CONFIG_VIDEO_TIMBERDALE is not set
-# CONFIG_VIDEO_CX88 is not set
-# CONFIG_VIDEO_CX23885 is not set
-# CONFIG_VIDEO_CX25821 is not set
-# CONFIG_VIDEO_AU0828 is not set
-# CONFIG_VIDEO_IVTV is not set
-# CONFIG_VIDEO_CX18 is not set
-# CONFIG_VIDEO_SAA7164 is not set
-# CONFIG_VIDEO_CAFE_CCIC is not set
-# CONFIG_VIDEO_VIA_CAMERA is not set
-# CONFIG_SOC_CAMERA is not set
-CONFIG_V4L_USB_DRIVERS=y
-# CONFIG_USB_VIDEO_CLASS is not set
-CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
-# CONFIG_USB_GSPCA is not set
-# CONFIG_VIDEO_PVRUSB2 is not set
-# CONFIG_VIDEO_HDPVR is not set
-# CONFIG_VIDEO_EM28XX is not set
-# CONFIG_VIDEO_TLG2300 is not set
-# CONFIG_VIDEO_CX231XX is not set
-# CONFIG_VIDEO_TM6000 is not set
-# CONFIG_VIDEO_USBVISION is not set
-# CONFIG_USB_ET61X251 is not set
-# CONFIG_USB_SN9C102 is not set
-# CONFIG_USB_PWC is not set
-# CONFIG_USB_ZR364XX is not set
-# CONFIG_USB_STKWEBCAM is not set
-# CONFIG_USB_S2255 is not set
-# CONFIG_V4L_MEM2MEM_DRIVERS is not set
-CONFIG_RADIO_ADAPTERS=y
-# CONFIG_RADIO_CADET is not set
-# CONFIG_RADIO_RTRACK is not set
-# CONFIG_RADIO_RTRACK2 is not set
-# CONFIG_RADIO_AZTECH is not set
-# CONFIG_RADIO_GEMTEK is not set
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_RADIO_MIROPCM20 is not set
-# CONFIG_RADIO_SF16FMI is not set
-# CONFIG_RADIO_SF16FMR2 is not set
-# CONFIG_RADIO_TERRATEC is not set
-# CONFIG_RADIO_TRUST is not set
-# CONFIG_RADIO_TYPHOON is not set
-# CONFIG_RADIO_ZOLTRIX is not set
-# CONFIG_I2C_SI4713 is not set
-# CONFIG_RADIO_SI4713 is not set
-# CONFIG_USB_DSBR is not set
-# CONFIG_RADIO_SI470X is not set
-# CONFIG_USB_MR800 is not set
-# CONFIG_RADIO_TEA5764 is not set
-# CONFIG_RADIO_SAA7706H is not set
-# CONFIG_RADIO_TEF6862 is not set
-# CONFIG_RADIO_TIMBERDALE is not set
-# CONFIG_RADIO_WL1273 is not set
-
-#
-# Texas Instruments WL128x FM driver (ST based)
-#
-# CONFIG_RADIO_WL128X is not set
-CONFIG_DVB_MAX_ADAPTERS=8
-# CONFIG_DVB_DYNAMIC_MINORS is not set
-CONFIG_DVB_CAPTURE_DRIVERS=y
+CONFIG_VIDEO_CX2341X=m
+CONFIG_VIDEO_BTCX=m
+CONFIG_VIDEO_TVEEPROM=m
+CONFIG_CYPRESS_FIRMWARE=m
+CONFIG_DVB_B2C2_FLEXCOP=m
+CONFIG_VIDEO_SAA7146=m
+CONFIG_VIDEO_SAA7146_VV=m
+CONFIG_SMS_SIANO_MDTV=m
+CONFIG_SMS_SIANO_RC=y
+# CONFIG_SMS_SIANO_DEBUGFS is not set
 
 #
-# Supported SAA7146 based PCI Adapters
+# Media ancillary drivers (tuners, sensors, i2c, frontends)
 #
-# CONFIG_TTPCI_EEPROM is not set
-# CONFIG_DVB_AV7110 is not set
-# CONFIG_DVB_BUDGET_CORE is not set
+CONFIG_MEDIA_SUBDRV_AUTOSELECT=y
+CONFIG_MEDIA_ATTACH=y
+CONFIG_VIDEO_IR_I2C=m
 
 #
-# Supported USB Adapters
+# Audio decoders, processors and mixers
 #
-# CONFIG_DVB_USB is not set
-# CONFIG_DVB_TTUSB_BUDGET is not set
-# CONFIG_DVB_TTUSB_DEC is not set
-# CONFIG_SMS_SIANO_MDTV is not set
+CONFIG_VIDEO_TVAUDIO=m
+CONFIG_VIDEO_TDA7432=m
+CONFIG_VIDEO_TDA9840=m
+CONFIG_VIDEO_TEA6415C=m
+CONFIG_VIDEO_TEA6420=m
+CONFIG_VIDEO_MSP3400=m
+CONFIG_VIDEO_CS5345=m
+CONFIG_VIDEO_CS53L32A=m
+CONFIG_VIDEO_WM8775=m
+CONFIG_VIDEO_WM8739=m
+CONFIG_VIDEO_VP27SMPX=m
 
 #
-# Supported FlexCopII (B2C2) Adapters
+# RDS decoders
 #
-# CONFIG_DVB_B2C2_FLEXCOP is not set
+CONFIG_VIDEO_SAA6588=m
 
 #
-# Supported BT878 Adapters
+# Video decoders
 #
+CONFIG_VIDEO_ADV7180=m
+CONFIG_VIDEO_BT819=m
+CONFIG_VIDEO_BT856=m
+CONFIG_VIDEO_BT866=m
+CONFIG_VIDEO_KS0127=m
+CONFIG_VIDEO_SAA7110=m
+CONFIG_VIDEO_SAA711X=m
+CONFIG_VIDEO_TVP5150=m
+CONFIG_VIDEO_VPX3220=m
 
 #
-# Supported Pluto2 Adapters
+# Video and audio decoders
 #
-# CONFIG_DVB_PLUTO2 is not set
+CONFIG_VIDEO_SAA717X=m
+CONFIG_VIDEO_CX25840=m
 
 #
-# Supported SDMC DM1105 Adapters
+# Video encoders
 #
-# CONFIG_DVB_DM1105 is not set
+CONFIG_VIDEO_SAA7127=m
+CONFIG_VIDEO_SAA7185=m
+CONFIG_VIDEO_ADV7170=m
+CONFIG_VIDEO_ADV7175=m
 
 #
-# Supported FireWire (IEEE 1394) Adapters
+# Camera sensor devices
 #
-# CONFIG_DVB_FIREDTV is not set
+CONFIG_VIDEO_OV7670=m
+CONFIG_VIDEO_MT9V011=m
 
 #
-# Supported Earthsoft PT1 Adapters
+# Flash devices
 #
-# CONFIG_DVB_PT1 is not set
 
 #
-# Supported Mantis Adapters
+# Video improvement chips
 #
-# CONFIG_MANTIS_CORE is not set
+CONFIG_VIDEO_UPD64031A=m
+CONFIG_VIDEO_UPD64083=m
 
 #
-# Supported nGene Adapters
+# Miscelaneous helper chips
 #
-# CONFIG_DVB_NGENE is not set
+CONFIG_VIDEO_M52790=m
 
 #
-# Supported ddbridge ('Octopus') Adapters
+# Sensors used on soc_camera driver
 #
-# CONFIG_DVB_DDBRIDGE is not set
 
 #
-# Supported DVB Frontends
+# soc_camera sensor drivers
 #
-# CONFIG_DVB_FE_CUSTOMISE is not set
+CONFIG_SOC_CAMERA_IMX074=m
+CONFIG_SOC_CAMERA_MT9M001=m
+CONFIG_SOC_CAMERA_MT9M111=m
+CONFIG_SOC_CAMERA_MT9T031=m
+CONFIG_SOC_CAMERA_MT9T112=m
+CONFIG_SOC_CAMERA_MT9V022=m
+CONFIG_SOC_CAMERA_OV2640=m
+CONFIG_SOC_CAMERA_OV5642=m
+CONFIG_SOC_CAMERA_OV6650=m
+CONFIG_SOC_CAMERA_OV772X=m
+CONFIG_SOC_CAMERA_OV9640=m
+CONFIG_SOC_CAMERA_OV9740=m
+CONFIG_SOC_CAMERA_RJ54N1=m
+CONFIG_SOC_CAMERA_TW9910=m
+CONFIG_MEDIA_TUNER=m
+CONFIG_MEDIA_TUNER_SIMPLE=m
+CONFIG_MEDIA_TUNER_TDA8290=m
+CONFIG_MEDIA_TUNER_TDA827X=m
+CONFIG_MEDIA_TUNER_TDA18271=m
+CONFIG_MEDIA_TUNER_TDA9887=m
+CONFIG_MEDIA_TUNER_MT20XX=m
+CONFIG_MEDIA_TUNER_MT2060=m
+CONFIG_MEDIA_TUNER_MT2063=m
+CONFIG_MEDIA_TUNER_MT2266=m
+CONFIG_MEDIA_TUNER_MT2131=m
+CONFIG_MEDIA_TUNER_QT1010=m
+CONFIG_MEDIA_TUNER_XC2028=m
+CONFIG_MEDIA_TUNER_XC5000=m
+CONFIG_MEDIA_TUNER_XC4000=m
+CONFIG_MEDIA_TUNER_MXL5005S=m
+CONFIG_MEDIA_TUNER_MXL5007T=m
+CONFIG_MEDIA_TUNER_MC44S803=m
+CONFIG_MEDIA_TUNER_MAX2165=m
+CONFIG_MEDIA_TUNER_TDA18218=m
+CONFIG_MEDIA_TUNER_FC0011=m
+CONFIG_MEDIA_TUNER_FC0012=m
+CONFIG_MEDIA_TUNER_FC0013=m
+CONFIG_MEDIA_TUNER_TDA18212=m
+CONFIG_MEDIA_TUNER_E4000=m
+CONFIG_MEDIA_TUNER_FC2580=m
+CONFIG_MEDIA_TUNER_TUA9001=m
+CONFIG_MEDIA_TUNER_IT913X=m
+CONFIG_MEDIA_TUNER_R820T=m
 
 #
 # Multistandard (satellite) frontends
 #
+CONFIG_DVB_STB0899=m
+CONFIG_DVB_STB6100=m
+CONFIG_DVB_STV090x=m
+CONFIG_DVB_STV6110x=m
 
 #
 # Multistandard (cable + terrestrial) frontends
 #
+CONFIG_DVB_DRXK=m
+CONFIG_DVB_TDA18271C2DD=m
 
 #
 # DVB-S (satellite) frontends
 #
+CONFIG_DVB_CX24110=m
+CONFIG_DVB_CX24123=m
+CONFIG_DVB_MT312=m
+CONFIG_DVB_ZL10036=m
+CONFIG_DVB_ZL10039=m
+CONFIG_DVB_S5H1420=m
+CONFIG_DVB_STV0288=m
+CONFIG_DVB_STB6000=m
+CONFIG_DVB_STV0299=m
+CONFIG_DVB_STV6110=m
+CONFIG_DVB_STV0900=m
+CONFIG_DVB_TDA8083=m
+CONFIG_DVB_TDA10086=m
+CONFIG_DVB_TDA8261=m
+CONFIG_DVB_VES1X93=m
+CONFIG_DVB_TUNER_ITD1000=m
+CONFIG_DVB_TUNER_CX24113=m
+CONFIG_DVB_TDA826X=m
+CONFIG_DVB_TUA6100=m
+CONFIG_DVB_CX24116=m
+CONFIG_DVB_M88DS3103=m
+CONFIG_DVB_M88DC2800=m
+CONFIG_DVB_SI21XX=m
+CONFIG_DVB_TS2020=m
+CONFIG_DVB_DS3000=m
+CONFIG_DVB_MB86A16=m
+CONFIG_DVB_TDA10071=m
 
 #
 # DVB-T (terrestrial) frontends
 #
+CONFIG_DVB_SP8870=m
+CONFIG_DVB_SP887X=m
+CONFIG_DVB_CX22700=m
+CONFIG_DVB_CX22702=m
+CONFIG_DVB_DRXD=m
+CONFIG_DVB_L64781=m
+CONFIG_DVB_TDA1004X=m
+CONFIG_DVB_NXT6000=m
+CONFIG_DVB_MT352=m
+CONFIG_DVB_ZL10353=m
+CONFIG_DVB_DIB3000MB=m
+CONFIG_DVB_DIB3000MC=m
+CONFIG_DVB_DIB7000M=m
+CONFIG_DVB_DIB7000P=m
+CONFIG_DVB_TDA10048=m
+CONFIG_DVB_AF9013=m
+CONFIG_DVB_EC100=m
+CONFIG_DVB_STV0367=m
+CONFIG_DVB_CXD2820R=m
+CONFIG_DVB_RTL2830=m
+CONFIG_DVB_RTL2832=m
 
 #
 # DVB-C (cable) frontends
 #
+CONFIG_DVB_VES1820=m
+CONFIG_DVB_TDA10021=m
+CONFIG_DVB_TDA10023=m
+CONFIG_DVB_STV0297=m
 
 #
 # ATSC (North American/Korean Terrestrial/Cable DTV) frontends
 #
+CONFIG_DVB_NXT200X=m
+CONFIG_DVB_OR51211=m
+CONFIG_DVB_OR51132=m
+CONFIG_DVB_BCM3510=m
+CONFIG_DVB_LGDT330X=m
+CONFIG_DVB_LGDT3305=m
+CONFIG_DVB_LG2160=m
+CONFIG_DVB_S5H1409=m
+CONFIG_DVB_AU8522=m
+CONFIG_DVB_AU8522_DTV=m
+CONFIG_DVB_AU8522_V4L=m
+CONFIG_DVB_S5H1411=m
 
 #
 # ISDB-T (terrestrial) frontends
 #
+CONFIG_DVB_S921=m
+CONFIG_DVB_DIB8000=m
+CONFIG_DVB_MB86A20S=m
 
 #
 # Digital terrestrial only tuners/PLL
 #
+CONFIG_DVB_PLL=m
+CONFIG_DVB_TUNER_DIB0070=m
+CONFIG_DVB_TUNER_DIB0090=m
 
 #
 # SEC control devices for DVB-S
 #
+CONFIG_DVB_LNBP21=m
+CONFIG_DVB_LNBP22=m
+CONFIG_DVB_ISL6405=m
+CONFIG_DVB_ISL6421=m
+CONFIG_DVB_ISL6423=m
+CONFIG_DVB_A8293=m
+CONFIG_DVB_LGS8GXX=m
+CONFIG_DVB_ATBM8830=m
+CONFIG_DVB_TDA665x=m
+CONFIG_DVB_IX2505V=m
+CONFIG_DVB_IT913X_FE=m
+CONFIG_DVB_M88RS2000=m
+CONFIG_DVB_AF9033=m
 
 #
 # Tools to develop new frontends
@@ -3257,27 +3763,40 @@ CONFIG_DVB_CAPTURE_DRIVERS=y
 #
 # Graphics support
 #
-CONFIG_AGP=m
-CONFIG_AGP_ALI=m
-CONFIG_AGP_ATI=m
-CONFIG_AGP_AMD=m
-CONFIG_AGP_AMD64=m
-CONFIG_AGP_INTEL=m
-CONFIG_AGP_NVIDIA=m
-CONFIG_AGP_SIS=m
-CONFIG_AGP_SWORKS=m
-CONFIG_AGP_VIA=m
-CONFIG_AGP_EFFICEON=m
+CONFIG_AGP=y
+# CONFIG_AGP_ALI is not set
+# CONFIG_AGP_ATI is not set
+# CONFIG_AGP_AMD is not set
+CONFIG_AGP_AMD64=y
+CONFIG_AGP_INTEL=y
+# CONFIG_AGP_NVIDIA is not set
+CONFIG_AGP_SIS=y
+# CONFIG_AGP_SWORKS is not set
+CONFIG_AGP_VIA=y
+# CONFIG_AGP_EFFICEON is not set
 CONFIG_VGA_ARB=y
 CONFIG_VGA_ARB_MAX_GPUS=16
-# CONFIG_VGA_SWITCHEROO is not set
+CONFIG_VGA_SWITCHEROO=y
 CONFIG_DRM=m
+CONFIG_DRM_USB=m
 CONFIG_DRM_KMS_HELPER=m
+# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
 CONFIG_DRM_TTM=m
+
+#
+# I2C encoder or helper chips
+#
+CONFIG_DRM_I2C_CH7006=m
+CONFIG_DRM_I2C_SIL164=m
+CONFIG_DRM_I2C_NXP_TDA998X=m
 CONFIG_DRM_TDFX=m
 CONFIG_DRM_R128=m
 CONFIG_DRM_RADEON=m
-CONFIG_DRM_RADEON_KMS=y
+# CONFIG_DRM_RADEON_UMS is not set
+CONFIG_DRM_NOUVEAU=m
+CONFIG_NOUVEAU_DEBUG=5
+CONFIG_NOUVEAU_DEBUG_DEFAULT=3
+CONFIG_DRM_NOUVEAU_BACKLIGHT=y
 CONFIG_DRM_I810=m
 CONFIG_DRM_I915=m
 CONFIG_DRM_I915_KMS=y
@@ -3286,9 +3805,18 @@ CONFIG_DRM_SIS=m
 CONFIG_DRM_VIA=m
 CONFIG_DRM_SAVAGE=m
 CONFIG_DRM_VMWGFX=m
-CONFIG_STUB_POULSBO=m
+# CONFIG_DRM_VMWGFX_FBCON is not set
+CONFIG_DRM_GMA500=m
+CONFIG_DRM_GMA600=y
+CONFIG_DRM_GMA3600=y
+CONFIG_DRM_UDL=m
+CONFIG_DRM_AST=m
+CONFIG_DRM_MGAG200=m
+CONFIG_DRM_CIRRUS_QEMU=m
+CONFIG_DRM_QXL=m
 CONFIG_VGASTATE=m
 CONFIG_VIDEO_OUTPUT_CONTROL=m
+CONFIG_HDMI=y
 CONFIG_FB=y
 CONFIG_FIRMWARE_EDID=y
 CONFIG_FB_DDC=m
@@ -3302,7 +3830,6 @@ CONFIG_FB_SYS_COPYAREA=m
 CONFIG_FB_SYS_IMAGEBLIT=m
 # CONFIG_FB_FOREIGN_ENDIAN is not set
 CONFIG_FB_SYS_FOPS=m
-# CONFIG_FB_WMT_GE_ROPS is not set
 CONFIG_FB_DEFERRED_IO=y
 CONFIG_FB_SVGALIB=m
 # CONFIG_FB_MACMODES is not set
@@ -3313,45 +3840,38 @@ CONFIG_FB_TILEBLITTING=y
 #
 # Frame buffer hardware drivers
 #
-CONFIG_FB_CIRRUS=m
+# CONFIG_FB_CIRRUS is not set
 CONFIG_FB_PM2=m
-CONFIG_FB_PM2_FIFO_DISCONNECT=y
+# CONFIG_FB_PM2_FIFO_DISCONNECT is not set
 CONFIG_FB_CYBER2000=m
 CONFIG_FB_CYBER2000_DDC=y
-# CONFIG_FB_ARC is not set
-CONFIG_FB_ASILIANT=y
+CONFIG_FB_ARC=m
+# CONFIG_FB_ASILIANT is not set
 # CONFIG_FB_IMSTT is not set
-# CONFIG_FB_VGA16 is not set
-CONFIG_FB_UVESA=m
+CONFIG_FB_VGA16=m
+# CONFIG_FB_UVESA is not set
 CONFIG_FB_VESA=y
+CONFIG_FB_EFI=y
 # CONFIG_FB_N411 is not set
-# CONFIG_FB_HGA is not set
+CONFIG_FB_HGA=m
 # CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_NVIDIA=m
-CONFIG_FB_NVIDIA_I2C=y
-# CONFIG_FB_NVIDIA_DEBUG is not set
-CONFIG_FB_NVIDIA_BACKLIGHT=y
+# CONFIG_FB_NVIDIA is not set
 CONFIG_FB_RIVA=m
 CONFIG_FB_RIVA_I2C=y
 # CONFIG_FB_RIVA_DEBUG is not set
 CONFIG_FB_RIVA_BACKLIGHT=y
-CONFIG_FB_I810=m
-CONFIG_FB_I810_GTF=y
-CONFIG_FB_I810_I2C=y
+CONFIG_FB_I740=m
+# CONFIG_FB_I810 is not set
 CONFIG_FB_LE80578=m
 CONFIG_FB_CARILLO_RANCH=m
+# CONFIG_FB_INTEL is not set
 CONFIG_FB_MATROX=m
 CONFIG_FB_MATROX_MILLENIUM=y
 CONFIG_FB_MATROX_MYSTIQUE=y
-CONFIG_FB_MATROX_G=y
-CONFIG_FB_MATROX_I2C=m
-CONFIG_FB_MATROX_MAVEN=m
-CONFIG_FB_RADEON=m
-CONFIG_FB_RADEON_I2C=y
-CONFIG_FB_RADEON_BACKLIGHT=y
-# CONFIG_FB_RADEON_DEBUG is not set
-CONFIG_FB_ATY128=m
-CONFIG_FB_ATY128_BACKLIGHT=y
+# CONFIG_FB_MATROX_G is not set
+# CONFIG_FB_MATROX_I2C is not set
+# CONFIG_FB_RADEON is not set
+# CONFIG_FB_ATY128 is not set
 CONFIG_FB_ATY=m
 CONFIG_FB_ATY_CT=y
 # CONFIG_FB_ATY_GENERIC_LCD is not set
@@ -3362,17 +3882,13 @@ CONFIG_FB_S3_DDC=y
 CONFIG_FB_SAVAGE=m
 CONFIG_FB_SAVAGE_I2C=y
 CONFIG_FB_SAVAGE_ACCEL=y
-CONFIG_FB_SIS=m
-CONFIG_FB_SIS_300=y
-CONFIG_FB_SIS_315=y
+# CONFIG_FB_SIS is not set
 CONFIG_FB_VIA=m
 # CONFIG_FB_VIA_DIRECT_PROCFS is not set
 # CONFIG_FB_VIA_X_COMPATIBILITY is not set
 CONFIG_FB_NEOMAGIC=m
 CONFIG_FB_KYRO=m
-CONFIG_FB_3DFX=m
-CONFIG_FB_3DFX_ACCEL=y
-CONFIG_FB_3DFX_I2C=y
+# CONFIG_FB_3DFX is not set
 CONFIG_FB_VOODOO1=m
 CONFIG_FB_VT8623=m
 CONFIG_FB_TRIDENT=m
@@ -3383,44 +3899,39 @@ CONFIG_FB_GEODE=y
 CONFIG_FB_GEODE_LX=m
 CONFIG_FB_GEODE_GX=m
 CONFIG_FB_GEODE_GX1=m
-CONFIG_FB_TMIO=m
-CONFIG_FB_TMIO_ACCELL=y
-CONFIG_FB_SM501=m
+# CONFIG_FB_TMIO is not set
+# CONFIG_FB_SM501 is not set
 CONFIG_FB_SMSCUFX=m
-# CONFIG_FB_UDL is not set
+CONFIG_FB_UDL=m
+# CONFIG_FB_GOLDFISH is not set
 # CONFIG_FB_VIRTUAL is not set
 CONFIG_XEN_FBDEV_FRONTEND=m
-CONFIG_FB_METRONOME=m
+# CONFIG_FB_METRONOME is not set
 # CONFIG_FB_MB862XX is not set
 # CONFIG_FB_BROADSHEET is not set
+# CONFIG_FB_AUO_K190X is not set
+# CONFIG_EXYNOS_VIDEO is not set
 CONFIG_BACKLIGHT_LCD_SUPPORT=y
 CONFIG_LCD_CLASS_DEVICE=m
 CONFIG_LCD_PLATFORM=m
 CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_GENERIC=m
-CONFIG_BACKLIGHT_PROGEAR=m
-CONFIG_BACKLIGHT_CARILLO_RANCH=m
+# CONFIG_BACKLIGHT_GENERIC is not set
+# CONFIG_BACKLIGHT_LM3533 is not set
+# CONFIG_BACKLIGHT_CARILLO_RANCH is not set
 CONFIG_BACKLIGHT_APPLE=m
-CONFIG_BACKLIGHT_SAHARA=m
-CONFIG_BACKLIGHT_ADP8860=m
-CONFIG_BACKLIGHT_ADP8870=m
-CONFIG_BACKLIGHT_PCF50633=m
-
-#
-# Display device support
-#
-CONFIG_DISPLAY_SUPPORT=m
-
-#
-# Display hardware drivers
-#
+# CONFIG_BACKLIGHT_SAHARA is not set
+# CONFIG_BACKLIGHT_ADP8860 is not set
+# CONFIG_BACKLIGHT_ADP8870 is not set
+# CONFIG_BACKLIGHT_LM3630 is not set
+# CONFIG_BACKLIGHT_LM3639 is not set
+# CONFIG_BACKLIGHT_LP855X is not set
 
 #
 # Console display driver support
 #
 CONFIG_VGA_CONSOLE=y
 # CONFIG_VGACON_SOFT_SCROLLBACK is not set
-# CONFIG_MDA_CONSOLE is not set
+CONFIG_MDA_CONSOLE=m
 CONFIG_DUMMY_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
@@ -3429,8 +3940,8 @@ CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
 CONFIG_FONT_8x8=y
 CONFIG_FONT_8x16=y
 CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
 CONFIG_LOGO_LINUX_CLUT224=y
 CONFIG_SOUND=m
 CONFIG_SOUND_OSS_CORE=y
@@ -3453,9 +3964,12 @@ CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
 CONFIG_SND_DYNAMIC_MINORS=y
 # CONFIG_SND_SUPPORT_OLD_API is not set
 CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
+CONFIG_SND_VERBOSE_PRINTK=y
+CONFIG_SND_DEBUG=y
+# CONFIG_SND_DEBUG_VERBOSE is not set
+CONFIG_SND_PCM_XRUN_DEBUG=y
 CONFIG_SND_VMASTER=y
+CONFIG_SND_KCTL_JACK=y
 CONFIG_SND_DMA_SGBUF=y
 CONFIG_SND_RAWMIDI_SEQ=m
 CONFIG_SND_OPL3_LIB_SEQ=m
@@ -3468,7 +3982,7 @@ CONFIG_SND_OPL4_LIB=m
 CONFIG_SND_VX_LIB=m
 CONFIG_SND_AC97_CODEC=m
 CONFIG_SND_DRIVERS=y
-# CONFIG_SND_PCSP is not set
+CONFIG_SND_PCSP=m
 CONFIG_SND_DUMMY=m
 CONFIG_SND_ALOOP=m
 CONFIG_SND_VIRMIDI=m
@@ -3478,7 +3992,7 @@ CONFIG_SND_SERIAL_U16550=m
 CONFIG_SND_MPU401=m
 CONFIG_SND_PORTMAN2X4=m
 CONFIG_SND_AC97_POWER_SAVE=y
-CONFIG_SND_AC97_POWER_SAVE_DEFAULT=60
+CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0
 CONFIG_SND_WSS_LIB=m
 CONFIG_SND_SB_COMMON=m
 CONFIG_SND_SB8_DSP=m
@@ -3491,6 +4005,7 @@ CONFIG_SND_ALS100=m
 CONFIG_SND_AZT1605=m
 CONFIG_SND_AZT2316=m
 CONFIG_SND_AZT2320=m
+CONFIG_SND_CMI8328=m
 CONFIG_SND_CMI8330=m
 CONFIG_SND_CS4231=m
 CONFIG_SND_CS4236=m
@@ -3528,7 +4043,7 @@ CONFIG_SND_ATIIXP_MODEM=m
 CONFIG_SND_AU8810=m
 CONFIG_SND_AU8820=m
 CONFIG_SND_AU8830=m
-CONFIG_SND_AW2=m
+# CONFIG_SND_AW2 is not set
 CONFIG_SND_AZT3328=m
 CONFIG_SND_BT87X=m
 # CONFIG_SND_BT87X_OVERCLOCK is not set
@@ -3571,11 +4086,10 @@ CONFIG_SND_HDA_PREALLOC_SIZE=64
 CONFIG_SND_HDA_HWDEP=y
 CONFIG_SND_HDA_RECONFIG=y
 CONFIG_SND_HDA_INPUT_BEEP=y
-CONFIG_SND_HDA_INPUT_BEEP_MODE=2
+CONFIG_SND_HDA_INPUT_BEEP_MODE=1
 CONFIG_SND_HDA_INPUT_JACK=y
-CONFIG_SND_HDA_PATCH_LOADER=y
+# CONFIG_SND_HDA_PATCH_LOADER is not set
 CONFIG_SND_HDA_CODEC_REALTEK=y
-CONFIG_SND_HDA_ENABLE_REALTEK_QUIRKS=y
 CONFIG_SND_HDA_CODEC_ANALOG=y
 CONFIG_SND_HDA_CODEC_SIGMATEL=y
 CONFIG_SND_HDA_CODEC_VIA=y
@@ -3584,11 +4098,11 @@ CONFIG_SND_HDA_CODEC_CIRRUS=y
 CONFIG_SND_HDA_CODEC_CONEXANT=y
 CONFIG_SND_HDA_CODEC_CA0110=y
 CONFIG_SND_HDA_CODEC_CA0132=y
+# CONFIG_SND_HDA_CODEC_CA0132_DSP is not set
 CONFIG_SND_HDA_CODEC_CMEDIA=y
 CONFIG_SND_HDA_CODEC_SI3054=y
 CONFIG_SND_HDA_GENERIC=y
-CONFIG_SND_HDA_POWER_SAVE=y
-CONFIG_SND_HDA_POWER_SAVE_DEFAULT=60
+CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
 CONFIG_SND_HDSP=m
 CONFIG_SND_HDSPM=m
 CONFIG_SND_ICE1712=m
@@ -3607,7 +4121,7 @@ CONFIG_SND_RIPTIDE=m
 CONFIG_SND_RME32=m
 CONFIG_SND_RME96=m
 CONFIG_SND_RME9652=m
-CONFIG_SND_SIS7019=m
+# CONFIG_SND_SIS7019 is not set
 CONFIG_SND_SONICVIBES=m
 CONFIG_SND_TRIDENT=m
 CONFIG_SND_VIA82XX=m
@@ -3626,103 +4140,110 @@ CONFIG_SND_USB_6FIRE=m
 CONFIG_SND_FIREWIRE=y
 CONFIG_SND_FIREWIRE_LIB=m
 CONFIG_SND_FIREWIRE_SPEAKERS=m
-CONFIG_SND_ISIGHT=m
+# CONFIG_SND_ISIGHT is not set
+# CONFIG_SND_SCS1X is not set
 CONFIG_SND_PCMCIA=y
-CONFIG_SND_VXPOCKET=m
-CONFIG_SND_PDAUDIOCF=m
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_PDAUDIOCF is not set
 # CONFIG_SND_SOC is not set
 # CONFIG_SOUND_PRIME is not set
 CONFIG_AC97_BUS=m
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=y
-# CONFIG_HIDRAW is not set
 
 #
-# USB Input Devices
+# HID support
 #
-CONFIG_USB_HID=m
-# CONFIG_HID_PID is not set
-CONFIG_USB_HIDDEV=y
+CONFIG_HID=y
+# CONFIG_HID_BATTERY_STRENGTH is not set
+CONFIG_HIDRAW=y
+# CONFIG_UHID is not set
+CONFIG_HID_GENERIC=y
 
 #
 # Special HID drivers
 #
-CONFIG_HID_A4TECH=m
-CONFIG_HID_ACRUX=m
-# CONFIG_HID_ACRUX_FF is not set
-CONFIG_HID_APPLE=m
-CONFIG_HID_BELKIN=m
-CONFIG_HID_CHERRY=m
-CONFIG_HID_CHICONY=m
-CONFIG_HID_PRODIKEYS=m
-CONFIG_HID_CYPRESS=m
-CONFIG_HID_DRAGONRISE=m
-# CONFIG_DRAGONRISE_FF is not set
+CONFIG_HID_A4TECH=y
+# CONFIG_HID_ACRUX is not set
+CONFIG_HID_APPLE=y
+# CONFIG_HID_APPLEIR is not set
+CONFIG_HID_AUREAL=m
+CONFIG_HID_BELKIN=y
+CONFIG_HID_CHERRY=y
+CONFIG_HID_CHICONY=y
+# CONFIG_HID_PRODIKEYS is not set
+CONFIG_HID_CYPRESS=y
+# CONFIG_HID_DRAGONRISE is not set
 # CONFIG_HID_EMS_FF is not set
-CONFIG_HID_ELECOM=m
-CONFIG_HID_EZKEY=m
-CONFIG_HID_HOLTEK=m
-# CONFIG_HOLTEK_FF is not set
+# CONFIG_HID_ELECOM is not set
+CONFIG_HID_EZKEY=y
+# CONFIG_HID_HOLTEK is not set
 CONFIG_HID_KEYTOUCH=m
-CONFIG_HID_KYE=m
-CONFIG_HID_UCLOGIC=m
-CONFIG_HID_WALTOP=m
+CONFIG_HID_KYE=y
+# CONFIG_HID_UCLOGIC is not set
+# CONFIG_HID_WALTOP is not set
 CONFIG_HID_GYRATION=m
+# CONFIG_HID_ICADE is not set
 CONFIG_HID_TWINHAN=m
-CONFIG_HID_KENSINGTON=m
+CONFIG_HID_KENSINGTON=y
 CONFIG_HID_LCPOWER=m
-CONFIG_HID_LOGITECH=m
+CONFIG_HID_LENOVO_TPKBD=m
+CONFIG_HID_LOGITECH=y
 CONFIG_HID_LOGITECH_DJ=m
 # CONFIG_LOGITECH_FF is not set
 # CONFIG_LOGIRUMBLEPAD2_FF is not set
 # CONFIG_LOGIG940_FF is not set
 # CONFIG_LOGIWHEELS_FF is not set
-CONFIG_HID_MAGICMOUSE=m
-CONFIG_HID_MICROSOFT=m
-CONFIG_HID_MONTEREY=m
-CONFIG_HID_MULTITOUCH=m
-CONFIG_HID_NTRIG=m
+# CONFIG_HID_MAGICMOUSE is not set
+CONFIG_HID_MICROSOFT=y
+CONFIG_HID_MONTEREY=y
+# CONFIG_HID_MULTITOUCH is not set
+# CONFIG_HID_NTRIG is not set
 CONFIG_HID_ORTEK=m
-CONFIG_HID_PANTHERLORD=m
-# CONFIG_PANTHERLORD_FF is not set
+# CONFIG_HID_PANTHERLORD is not set
 CONFIG_HID_PETALYNX=m
 CONFIG_HID_PICOLCD=m
 CONFIG_HID_PICOLCD_FB=y
 CONFIG_HID_PICOLCD_BACKLIGHT=y
 CONFIG_HID_PICOLCD_LCD=y
 CONFIG_HID_PICOLCD_LEDS=y
-CONFIG_HID_PRIMAX=m
-CONFIG_HID_QUANTA=m
+CONFIG_HID_PICOLCD_CIR=y
+# CONFIG_HID_PRIMAX is not set
+# CONFIG_HID_PS3REMOTE is not set
 CONFIG_HID_ROCCAT=m
-CONFIG_HID_ROCCAT_COMMON=m
-CONFIG_HID_ROCCAT_ARVO=m
-CONFIG_HID_ROCCAT_KONE=m
-CONFIG_HID_ROCCAT_KONEPLUS=m
-CONFIG_HID_ROCCAT_KOVAPLUS=m
-CONFIG_HID_ROCCAT_PYRA=m
+CONFIG_HID_SAITEK=m
 CONFIG_HID_SAMSUNG=m
-CONFIG_HID_SONY=m
+# CONFIG_HID_SONY is not set
 CONFIG_HID_SPEEDLINK=m
+# CONFIG_HID_STEELSERIES is not set
 CONFIG_HID_SUNPLUS=m
-CONFIG_HID_GREENASIA=m
-# CONFIG_GREENASIA_FF is not set
-CONFIG_HID_SMARTJOYPLUS=m
-# CONFIG_SMARTJOYPLUS_FF is not set
+# CONFIG_HID_GREENASIA is not set
+# CONFIG_HID_SMARTJOYPLUS is not set
+CONFIG_HID_TIVO=m
 CONFIG_HID_TOPSEED=m
-CONFIG_HID_THRUSTMASTER=m
-# CONFIG_THRUSTMASTER_FF is not set
-CONFIG_HID_WACOM=m
-# CONFIG_HID_WACOM_POWER_SUPPLY is not set
-CONFIG_HID_WIIMOTE=m
-CONFIG_HID_ZEROPLUS=m
-# CONFIG_ZEROPLUS_FF is not set
+CONFIG_HID_THINGM=m
+# CONFIG_HID_THRUSTMASTER is not set
+# CONFIG_HID_WACOM is not set
+# CONFIG_HID_WIIMOTE is not set
+# CONFIG_HID_ZEROPLUS is not set
 CONFIG_HID_ZYDACRON=m
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_COMMON=y
-CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_HID_SENSOR_HUB=m
+
+#
+# USB HID support
+#
+CONFIG_USB_HID=y
+CONFIG_HID_PID=y
+CONFIG_USB_HIDDEV=y
+
+#
+# I2C HID support
+#
+CONFIG_I2C_HID=m
 CONFIG_USB_ARCH_HAS_OHCI=y
 CONFIG_USB_ARCH_HAS_EHCI=y
 CONFIG_USB_ARCH_HAS_XHCI=y
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_COMMON=y
+CONFIG_USB_ARCH_HAS_HCD=y
 CONFIG_USB=y
 # CONFIG_USB_DEBUG is not set
 CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
@@ -3730,14 +4251,12 @@ CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
 #
 # Miscellaneous USB options
 #
-CONFIG_USB_DEVICEFS=y
-CONFIG_USB_DEVICE_CLASS=y
-CONFIG_USB_DYNAMIC_MINORS=y
-CONFIG_USB_SUSPEND=y
+CONFIG_USB_DEFAULT_PERSIST=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
 # CONFIG_USB_OTG is not set
-CONFIG_USB_DWC3=m
-# CONFIG_USB_DWC3_DEBUG is not set
-# CONFIG_USB_MON is not set
+# CONFIG_USB_OTG_WHITELIST is not set
+# CONFIG_USB_OTG_BLACKLIST_HUB is not set
+CONFIG_USB_MON=m
 CONFIG_USB_WUSB=m
 CONFIG_USB_WUSB_CBAF=m
 # CONFIG_USB_WUSB_CBAF_DEBUG is not set
@@ -3747,26 +4266,31 @@ CONFIG_USB_WUSB_CBAF=m
 #
 # CONFIG_USB_C67X00_HCD is not set
 CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_XHCI_PLATFORM=m
 # CONFIG_USB_XHCI_HCD_DEBUGGING is not set
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_EHCI_ROOT_HUB_TT=y
 CONFIG_USB_EHCI_TT_NEWSCHED=y
-CONFIG_USB_OXU210HP_HCD=m
-CONFIG_USB_ISP116X_HCD=m
+CONFIG_USB_EHCI_PCI=y
+CONFIG_USB_EHCI_HCD_PLATFORM=y
+# CONFIG_USB_OXU210HP_HCD is not set
+# CONFIG_USB_ISP116X_HCD is not set
 # CONFIG_USB_ISP1760_HCD is not set
 CONFIG_USB_ISP1362_HCD=m
 CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_OHCI_HCD_PLATFORM=y
 # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
 # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
 CONFIG_USB_OHCI_LITTLE_ENDIAN=y
 CONFIG_USB_UHCI_HCD=y
-CONFIG_USB_U132_HCD=m
+# CONFIG_USB_U132_HCD is not set
 CONFIG_USB_SL811_HCD=m
-# CONFIG_USB_SL811_HCD_ISO is not set
+CONFIG_USB_SL811_HCD_ISO=y
 # CONFIG_USB_SL811_CS is not set
-CONFIG_USB_R8A66597_HCD=m
+# CONFIG_USB_R8A66597_HCD is not set
 CONFIG_USB_WHCI_HCD=m
 CONFIG_USB_HWA_HCD=m
+CONFIG_USB_HCD_SSB=m
 
 #
 # USB Device Class drivers
@@ -3783,7 +4307,7 @@ CONFIG_USB_TMC=m
 #
 # also be needed; see USB_STORAGE Help for more info
 #
-CONFIG_USB_STORAGE=m
+CONFIG_USB_STORAGE=y
 # CONFIG_USB_STORAGE_DEBUG is not set
 CONFIG_USB_STORAGE_REALTEK=m
 CONFIG_REALTEK_AUTOPM=y
@@ -3799,20 +4323,24 @@ CONFIG_USB_STORAGE_ONETOUCH=m
 CONFIG_USB_STORAGE_KARMA=m
 CONFIG_USB_STORAGE_CYPRESS_ATACB=m
 CONFIG_USB_STORAGE_ENE_UB6250=m
-# CONFIG_USB_LIBUSUAL is not set
 
 #
 # USB Imaging devices
 #
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
+CONFIG_USB_MDC800=m
+CONFIG_USB_MICROTEK=m
+CONFIG_USB_DWC3=m
+CONFIG_USB_DWC3_HOST=y
+# CONFIG_USB_DWC3_DEBUG is not set
+CONFIG_USB_CHIPIDEA=m
+# CONFIG_USB_CHIPIDEA_HOST is not set
+# CONFIG_USB_CHIPIDEA_DEBUG is not set
 
 #
 # USB port drivers
 #
 CONFIG_USB_USS720=m
 CONFIG_USB_SERIAL=m
-CONFIG_USB_EZUSB=y
 CONFIG_USB_SERIAL_GENERIC=y
 CONFIG_USB_SERIAL_AIRCABLE=m
 CONFIG_USB_SERIAL_ARK3116=m
@@ -3822,7 +4350,7 @@ CONFIG_USB_SERIAL_WHITEHEAT=m
 CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
 CONFIG_USB_SERIAL_CP210X=m
 CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
+# CONFIG_USB_SERIAL_EMPEG is not set
 CONFIG_USB_SERIAL_FTDI_SIO=m
 CONFIG_USB_SERIAL_FUNSOFT=m
 CONFIG_USB_SERIAL_VISOR=m
@@ -3830,16 +4358,18 @@ CONFIG_USB_SERIAL_IPAQ=m
 CONFIG_USB_SERIAL_IR=m
 CONFIG_USB_SERIAL_EDGEPORT=m
 CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_F81232=m
+# CONFIG_USB_SERIAL_GARMIN is not set
 CONFIG_USB_SERIAL_IPW=m
 CONFIG_USB_SERIAL_IUU=m
-# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
 # CONFIG_USB_SERIAL_KEYSPAN is not set
-# CONFIG_USB_SERIAL_KLSI is not set
+CONFIG_USB_SERIAL_KLSI=m
 # CONFIG_USB_SERIAL_KOBIL_SCT is not set
 CONFIG_USB_SERIAL_MCT_U232=m
+# CONFIG_USB_SERIAL_METRO is not set
 CONFIG_USB_SERIAL_MOS7720=m
-# CONFIG_USB_SERIAL_MOS7715_PARPORT is not set
+CONFIG_USB_SERIAL_MOS7715_PARPORT=y
 CONFIG_USB_SERIAL_MOS7840=m
 CONFIG_USB_SERIAL_MOTOROLA=m
 # CONFIG_USB_SERIAL_NAVMAN is not set
@@ -3848,22 +4378,25 @@ CONFIG_USB_SERIAL_OTI6858=m
 CONFIG_USB_SERIAL_QCAUX=m
 CONFIG_USB_SERIAL_QUALCOMM=m
 CONFIG_USB_SERIAL_SPCP8X5=m
-CONFIG_USB_SERIAL_HP4X=m
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
+# CONFIG_USB_SERIAL_HP4X is not set
+# CONFIG_USB_SERIAL_SAFE is not set
 CONFIG_USB_SERIAL_SIEMENS_MPI=m
 CONFIG_USB_SERIAL_SIERRAWIRELESS=m
-CONFIG_USB_SERIAL_SYMBOL=m
-CONFIG_USB_SERIAL_TI=m
+# CONFIG_USB_SERIAL_SYMBOL is not set
+# CONFIG_USB_SERIAL_TI is not set
 # CONFIG_USB_SERIAL_CYBERJACK is not set
 CONFIG_USB_SERIAL_XIRCOM=m
 CONFIG_USB_SERIAL_WWAN=m
 CONFIG_USB_SERIAL_OPTION=m
 # CONFIG_USB_SERIAL_OMNINET is not set
-CONFIG_USB_SERIAL_OPTICON=m
-CONFIG_USB_SERIAL_VIVOPAY_SERIAL=m
-CONFIG_USB_SERIAL_ZIO=m
+# CONFIG_USB_SERIAL_OPTICON is not set
+# CONFIG_USB_SERIAL_VIVOPAY_SERIAL is not set
+# CONFIG_USB_SERIAL_XSENS_MT is not set
+# CONFIG_USB_SERIAL_ZIO is not set
+# CONFIG_USB_SERIAL_WISHBONE is not set
+CONFIG_USB_SERIAL_ZTE=m
 CONFIG_USB_SERIAL_SSU100=m
+CONFIG_USB_SERIAL_QT2=m
 # CONFIG_USB_SERIAL_DEBUG is not set
 
 #
@@ -3871,14 +4404,14 @@ CONFIG_USB_SERIAL_SSU100=m
 #
 CONFIG_USB_EMI62=m
 CONFIG_USB_EMI26=m
-# CONFIG_USB_ADUTUX is not set
+CONFIG_USB_ADUTUX=m
 CONFIG_USB_SEVSEG=m
 # CONFIG_USB_RIO500 is not set
 # CONFIG_USB_LEGOTOWER is not set
 CONFIG_USB_LCD=m
 CONFIG_USB_LED=m
-CONFIG_USB_CYPRESS_CY7C63=m
-CONFIG_USB_CYTHERM=m
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
 # CONFIG_USB_IDMOUSE is not set
 CONFIG_USB_FTDI_ELAN=m
 # CONFIG_USB_APPLEDISPLAY is not set
@@ -3888,21 +4421,17 @@ CONFIG_USB_SISUSBVGA_CON=y
 # CONFIG_USB_TRANCEVIBRATOR is not set
 CONFIG_USB_IOWARRIOR=m
 # CONFIG_USB_TEST is not set
-CONFIG_USB_ISIGHTFW=m
+# CONFIG_USB_ISIGHTFW is not set
 CONFIG_USB_YUREX=m
+CONFIG_USB_EZUSB_FX2=m
+CONFIG_USB_HSIC_USB3503=m
 CONFIG_USB_ATM=m
 CONFIG_USB_SPEEDTOUCH=m
 CONFIG_USB_CXACRU=m
 CONFIG_USB_UEAGLEATM=m
 CONFIG_USB_XUSBATM=m
+# CONFIG_USB_PHY is not set
 # CONFIG_USB_GADGET is not set
-
-#
-# OTG and related infrastructure
-#
-CONFIG_USB_OTG_UTILS=y
-CONFIG_USB_GPIO_VBUS=m
-CONFIG_NOP_USB_XCEIV=m
 CONFIG_UWB=m
 CONFIG_UWB_HWA=m
 CONFIG_UWB_WHCI=m
@@ -3918,23 +4447,27 @@ CONFIG_MMC=m
 CONFIG_MMC_BLOCK=m
 CONFIG_MMC_BLOCK_MINORS=8
 CONFIG_MMC_BLOCK_BOUNCE=y
-CONFIG_SDIO_UART=m
-CONFIG_MMC_TEST=m
+# CONFIG_SDIO_UART is not set
+# CONFIG_MMC_TEST is not set
 
 #
 # MMC/SD/SDIO Host Controller Drivers
 #
 CONFIG_MMC_SDHCI=m
 CONFIG_MMC_SDHCI_PCI=m
-# CONFIG_MMC_RICOH_MMC is not set
+CONFIG_MMC_RICOH_MMC=y
+CONFIG_MMC_SDHCI_ACPI=m
 CONFIG_MMC_SDHCI_PLTFM=m
+CONFIG_MMC_SDHCI_PXAV3=m
+CONFIG_MMC_SDHCI_PXAV2=m
 CONFIG_MMC_WBSD=m
 CONFIG_MMC_TIFM_SD=m
-CONFIG_MMC_SDRICOH_CS=m
+# CONFIG_MMC_SDRICOH_CS is not set
 CONFIG_MMC_CB710=m
 CONFIG_MMC_VIA_SDMMC=m
 CONFIG_MMC_VUB300=m
 CONFIG_MMC_USHC=m
+CONFIG_MMC_REALTEK_PCI=m
 CONFIG_MEMSTICK=m
 # CONFIG_MEMSTICK_DEBUG is not set
 
@@ -3950,6 +4483,7 @@ CONFIG_MSPRO_BLOCK=m
 CONFIG_MEMSTICK_TIFM_MS=m
 CONFIG_MEMSTICK_JMICRON_38X=m
 CONFIG_MEMSTICK_R592=m
+CONFIG_MEMSTICK_REALTEK_PCI=m
 CONFIG_NEW_LEDS=y
 CONFIG_LEDS_CLASS=y
 
@@ -3957,43 +4491,73 @@ CONFIG_LEDS_CLASS=y
 # LED drivers
 #
 CONFIG_LEDS_LM3530=m
-CONFIG_LEDS_NET48XX=m
-CONFIG_LEDS_NET5501=m
-CONFIG_LEDS_WRAP=m
-CONFIG_LEDS_PCA9532=m
-CONFIG_LEDS_PCA9532_GPIO=y
-CONFIG_LEDS_GPIO=m
+CONFIG_LEDS_LM3533=m
+CONFIG_LEDS_LM3642=m
+# CONFIG_LEDS_PCA9532 is not set
+# CONFIG_LEDS_GPIO is not set
 CONFIG_LEDS_LP3944=m
+CONFIG_LEDS_LP55XX_COMMON=m
 CONFIG_LEDS_LP5521=m
 CONFIG_LEDS_LP5523=m
+CONFIG_LEDS_LP5562=m
 CONFIG_LEDS_CLEVO_MAIL=m
-CONFIG_LEDS_PCA955X=m
-CONFIG_LEDS_REGULATOR=m
-CONFIG_LEDS_BD2802=m
+# CONFIG_LEDS_PCA955X is not set
+CONFIG_LEDS_PCA9633=m
+# CONFIG_LEDS_BD2802 is not set
 CONFIG_LEDS_INTEL_SS4200=m
 CONFIG_LEDS_LT3593=m
 CONFIG_LEDS_DELL_NETBOOKS=m
-CONFIG_LEDS_TRIGGERS=y
+# CONFIG_LEDS_RENESAS_TPU is not set
+CONFIG_LEDS_TCA6507=m
+CONFIG_LEDS_LM355x=m
+CONFIG_LEDS_OT200=m
+CONFIG_LEDS_BLINKM=m
 
 #
 # LED Triggers
 #
+CONFIG_LEDS_TRIGGERS=y
 CONFIG_LEDS_TRIGGER_TIMER=m
+CONFIG_LEDS_TRIGGER_ONESHOT=m
 CONFIG_LEDS_TRIGGER_HEARTBEAT=m
 CONFIG_LEDS_TRIGGER_BACKLIGHT=m
+CONFIG_LEDS_TRIGGER_CPU=y
 CONFIG_LEDS_TRIGGER_GPIO=m
 CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
 
 #
 # iptables trigger is under Netfilter config (LED target)
 #
+CONFIG_LEDS_TRIGGER_TRANSIENT=m
+CONFIG_LEDS_TRIGGER_CAMERA=m
 CONFIG_LEDS_TRIGGER_NETDEV=m
 # CONFIG_ACCESSIBILITY is not set
 # CONFIG_INFINIBAND is not set
-# CONFIG_EDAC is not set
+CONFIG_EDAC=y
+# CONFIG_EDAC_LEGACY_SYSFS is not set
+# CONFIG_EDAC_DEBUG is not set
+CONFIG_EDAC_DECODE_MCE=m
+CONFIG_EDAC_MCE_INJ=m
+CONFIG_EDAC_MM_EDAC=m
+# CONFIG_EDAC_AMD76X is not set
+# CONFIG_EDAC_E7XXX is not set
+CONFIG_EDAC_E752X=m
+# CONFIG_EDAC_I82875P is not set
+CONFIG_EDAC_I82975X=m
+CONFIG_EDAC_I3000=m
+CONFIG_EDAC_I3200=m
+CONFIG_EDAC_X38=m
+CONFIG_EDAC_I5400=m
+CONFIG_EDAC_I7CORE=m
+# CONFIG_EDAC_I82860 is not set
+# CONFIG_EDAC_R82600 is not set
+CONFIG_EDAC_I5000=m
+CONFIG_EDAC_I5100=m
+CONFIG_EDAC_I7300=m
 CONFIG_RTC_LIB=y
 CONFIG_RTC_CLASS=y
 CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_SYSTOHC=y
 CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
 # CONFIG_RTC_DEBUG is not set
 
@@ -4018,12 +4582,13 @@ CONFIG_RTC_DRV_RS5C372=m
 CONFIG_RTC_DRV_ISL1208=m
 CONFIG_RTC_DRV_ISL12022=m
 CONFIG_RTC_DRV_X1205=m
+CONFIG_RTC_DRV_PCF8523=m
 CONFIG_RTC_DRV_PCF8563=m
 CONFIG_RTC_DRV_PCF8583=m
 CONFIG_RTC_DRV_M41T80=m
 CONFIG_RTC_DRV_M41T80_WDT=y
 CONFIG_RTC_DRV_BQ32K=m
-CONFIG_RTC_DRV_S35390A=m
+# CONFIG_RTC_DRV_S35390A is not set
 CONFIG_RTC_DRV_FM3130=m
 CONFIG_RTC_DRV_RX8581=m
 CONFIG_RTC_DRV_RX8025=m
@@ -4043,60 +4608,77 @@ CONFIG_RTC_DRV_DS1511=m
 CONFIG_RTC_DRV_DS1553=m
 CONFIG_RTC_DRV_DS1742=m
 CONFIG_RTC_DRV_STK17TA8=m
-CONFIG_RTC_DRV_M48T86=m
+# CONFIG_RTC_DRV_M48T86 is not set
 CONFIG_RTC_DRV_M48T35=m
 CONFIG_RTC_DRV_M48T59=m
 CONFIG_RTC_DRV_MSM6242=m
 CONFIG_RTC_DRV_BQ4802=m
 CONFIG_RTC_DRV_RP5C01=m
 CONFIG_RTC_DRV_V3020=m
-CONFIG_RTC_DRV_PCF50633=m
+CONFIG_RTC_DRV_DS2404=m
 
 #
 # on-CPU RTC drivers
 #
+
+#
+# HID Sensor RTC drivers
+#
+CONFIG_RTC_DRV_HID_SENSOR_TIME=m
 CONFIG_DMADEVICES=y
 # CONFIG_DMADEVICES_DEBUG is not set
 
 #
 # DMA Devices
 #
-CONFIG_INTEL_MID_DMAC=m
+# CONFIG_INTEL_MID_DMAC is not set
 CONFIG_INTEL_IOATDMA=m
+CONFIG_DW_DMAC=m
+# CONFIG_DW_DMAC_BIG_ENDIAN_IO is not set
 CONFIG_TIMB_DMA=m
 CONFIG_PCH_DMA=m
 CONFIG_DMA_ENGINE=y
+CONFIG_DMA_ACPI=y
 
 #
 # DMA Clients
 #
 CONFIG_NET_DMA=y
 CONFIG_ASYNC_TX_DMA=y
-CONFIG_DMATEST=m
+# CONFIG_DMATEST is not set
 CONFIG_DCA=m
 # CONFIG_AUXDISPLAY is not set
 CONFIG_UIO=m
-CONFIG_UIO_CIF=m
-CONFIG_UIO_PDRV=m
-CONFIG_UIO_PDRV_GENIRQ=m
+# CONFIG_UIO_CIF is not set
+# CONFIG_UIO_PDRV is not set
+# CONFIG_UIO_PDRV_GENIRQ is not set
+# CONFIG_UIO_DMEM_GENIRQ is not set
 CONFIG_UIO_AEC=m
 CONFIG_UIO_SERCOS3=m
 CONFIG_UIO_PCI_GENERIC=m
-CONFIG_UIO_NETX=m
+# CONFIG_UIO_NETX is not set
+# CONFIG_VFIO is not set
+CONFIG_VIRT_DRIVERS=y
 CONFIG_VIRTIO=y
-CONFIG_VIRTIO_RING=y
 
 #
 # Virtio drivers
 #
-CONFIG_VIRTIO_PCI=m
+CONFIG_VIRTIO_PCI=y
 CONFIG_VIRTIO_BALLOON=m
 CONFIG_VIRTIO_MMIO=m
+# CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES is not set
+
+#
+# Microsoft Hyper-V guest support
+#
+# CONFIG_HYPERV is not set
 
 #
 # Xen driver support
 #
 CONFIG_XEN_BALLOON=y
+CONFIG_XEN_SELFBALLOONING=y
 CONFIG_XEN_SCRUB_PAGES=y
 CONFIG_XEN_DEV_EVTCHN=m
 CONFIG_XEN_BACKEND=y
@@ -4107,7 +4689,11 @@ CONFIG_XEN_XENBUS_FRONTEND=y
 CONFIG_XEN_GNTDEV=m
 CONFIG_XEN_GRANT_DEV_ALLOC=m
 CONFIG_SWIOTLB_XEN=y
+CONFIG_XEN_TMEM=m
 CONFIG_XEN_PCIDEV_BACKEND=m
+CONFIG_XEN_PRIVCMD=m
+CONFIG_XEN_ACPI_PROCESSOR=m
+CONFIG_XEN_HAVE_PVMMU=y
 CONFIG_STAGING=y
 CONFIG_ET131X=m
 CONFIG_SLICOSS=m
@@ -4117,48 +4703,99 @@ CONFIG_USBIP_HOST=m
 # CONFIG_USBIP_DEBUG is not set
 # CONFIG_W35UND is not set
 # CONFIG_PRISM2_USB is not set
-# CONFIG_ECHO is not set
+CONFIG_ECHO=m
 # CONFIG_COMEDI is not set
 # CONFIG_ASUS_OLED is not set
 # CONFIG_PANEL is not set
 # CONFIG_R8187SE is not set
 # CONFIG_RTL8192U is not set
-# CONFIG_RTL8192E is not set
+# CONFIG_RTLLIB is not set
 # CONFIG_R8712U is not set
-# CONFIG_RTS_PSTOR is not set
 # CONFIG_RTS5139 is not set
 # CONFIG_TRANZPORT is not set
-# CONFIG_POHMELFS is not set
-CONFIG_IDE_PHISON=m
+# CONFIG_IDE_PHISON is not set
 # CONFIG_LINE6_USB is not set
-CONFIG_DRM_NOUVEAU=m
-CONFIG_DRM_NOUVEAU_BACKLIGHT=y
-
-#
-# I2C encoder or helper chips
-#
-# CONFIG_DRM_I2C_CH7006 is not set
-# CONFIG_DRM_I2C_SIL164 is not set
 # CONFIG_USB_SERIAL_QUATECH2 is not set
-# CONFIG_USB_SERIAL_QUATECH_USB2 is not set
 # CONFIG_VT6655 is not set
 # CONFIG_VT6656 is not set
-# CONFIG_HYPERV_STORAGE is not set
-CONFIG_HYPERV_NET=m
-CONFIG_HYPERV_MOUSE=m
-# CONFIG_VME_BUS is not set
 # CONFIG_DX_SEP is not set
-# CONFIG_IIO is not set
-# CONFIG_XVMALLOC is not set
-# CONFIG_ZRAM is not set
+
+#
+# IIO staging drivers
+#
+
+#
+# Accelerometers
+#
+
+#
+# Analog to digital converters
+#
+# CONFIG_AD7291 is not set
+# CONFIG_AD7606 is not set
+# CONFIG_AD799X is not set
+
+#
+# Analog digital bi-direction converters
+#
+# CONFIG_ADT7316 is not set
+
+#
+# Capacitance to digital converters
+#
+# CONFIG_AD7150 is not set
+# CONFIG_AD7152 is not set
+# CONFIG_AD7746 is not set
+
+#
+# Direct Digital Synthesis
+#
+
+#
+# Digital gyroscope sensors
+#
+
+#
+# Network Analyzer, Impedance Converters
+#
+# CONFIG_AD5933 is not set
+
+#
+# Light sensors
+#
+# CONFIG_SENSORS_ISL29018 is not set
+# CONFIG_SENSORS_ISL29028 is not set
+# CONFIG_TSL2583 is not set
+# CONFIG_TSL2x7x is not set
+
+#
+# Magnetometer sensors
+#
+# CONFIG_SENSORS_HMC5843 is not set
+
+#
+# Active energy metering IC
+#
+# CONFIG_ADE7854 is not set
+
+#
+# Resolver to digital converters
+#
+
+#
+# Triggers - standalone
+#
+# CONFIG_IIO_PERIODIC_RTC_TRIGGER is not set
+# CONFIG_IIO_GPIO_TRIGGER is not set
+# CONFIG_IIO_SYSFS_TRIGGER is not set
+# CONFIG_IIO_SIMPLE_DUMMY is not set
+# CONFIG_ZSMALLOC is not set
 # CONFIG_WLAGS49_H2 is not set
 # CONFIG_WLAGS49_H25 is not set
 # CONFIG_FB_SM7XX is not set
 # CONFIG_CRYSTALHD is not set
-# CONFIG_CXT1E1 is not set
 # CONFIG_FB_XGI is not set
 # CONFIG_ACPI_QUICKSTART is not set
-# CONFIG_SBE_2T3E3 is not set
 # CONFIG_USB_ENESTORAGE is not set
 # CONFIG_BCM_WIMAX is not set
 # CONFIG_FT1000 is not set
@@ -4169,17 +4806,32 @@ CONFIG_HYPERV_MOUSE=m
 # CONFIG_SPEAKUP is not set
 # CONFIG_TOUCHSCREEN_CLEARPAD_TM1217 is not set
 # CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4 is not set
-# CONFIG_DRM_PSB is not set
-CONFIG_INTEL_MEI=m
 # CONFIG_STAGING_MEDIA is not set
+
+#
+# Android
+#
+# CONFIG_ANDROID is not set
+# CONFIG_USB_WPAN_HCD is not set
+# CONFIG_WIMAX_GDM72XX is not set
+# CONFIG_CSR_WIFI is not set
+# CONFIG_NET_VENDOR_SILICOM is not set
+# CONFIG_CED1401 is not set
+# CONFIG_DGRP is not set
+# CONFIG_FIREWIRE_SERIAL is not set
+# CONFIG_USB_DWC2 is not set
 CONFIG_X86_PLATFORM_DEVICES=y
 CONFIG_ACER_WMI=m
 CONFIG_ACERHDF=m
 CONFIG_ASUS_LAPTOP=m
+CONFIG_CHROMEOS_LAPTOP=m
+CONFIG_DELL_LAPTOP=m
 CONFIG_DELL_WMI=m
 CONFIG_DELL_WMI_AIO=m
 CONFIG_FUJITSU_LAPTOP=m
-CONFIG_FUJITSU_LAPTOP_DEBUG=y
+# CONFIG_FUJITSU_LAPTOP_DEBUG is not set
+# CONFIG_FUJITSU_TABLET is not set
+CONFIG_AMILO_RFKILL=m
 CONFIG_TC1100_WMI=m
 CONFIG_HP_ACCEL=m
 CONFIG_HP_WMI=m
@@ -4187,7 +4839,7 @@ CONFIG_MSI_LAPTOP=m
 CONFIG_PANASONIC_LAPTOP=m
 CONFIG_COMPAL_LAPTOP=m
 CONFIG_SONY_LAPTOP=m
-# CONFIG_SONYPI_COMPAT is not set
+CONFIG_SONYPI_COMPAT=y
 CONFIG_IDEAPAD_LAPTOP=m
 CONFIG_THINKPAD_ACPI=m
 CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y
@@ -4197,21 +4849,34 @@ CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y
 CONFIG_THINKPAD_ACPI_VIDEO=y
 CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y
 CONFIG_SENSORS_HDAPS=m
-CONFIG_INTEL_MENLOW=m
+# CONFIG_INTEL_MENLOW is not set
+CONFIG_EEEPC_LAPTOP=m
+CONFIG_ASUS_WMI=m
+CONFIG_ASUS_NB_WMI=m
+CONFIG_EEEPC_WMI=m
 CONFIG_ACPI_WMI=m
 CONFIG_MSI_WMI=m
-CONFIG_ACPI_ASUS=m
 CONFIG_TOPSTAR_LAPTOP=m
 CONFIG_ACPI_TOSHIBA=m
 CONFIG_TOSHIBA_BT_RFKILL=m
 CONFIG_ACPI_CMPC=m
 CONFIG_INTEL_IPS=m
-CONFIG_IBM_RTL=m
-CONFIG_XO15_EBOOK=m
+# CONFIG_IBM_RTL is not set
+# CONFIG_XO15_EBOOK is not set
 CONFIG_SAMSUNG_LAPTOP=m
 CONFIG_MXM_WMI=m
 CONFIG_INTEL_OAKTRAIL=m
 CONFIG_SAMSUNG_Q10=m
+# CONFIG_APPLE_GMUX is not set
+CONFIG_PVPANIC=m
+CONFIG_CLKDEV_LOOKUP=y
+CONFIG_HAVE_CLK_PREPARE=y
+CONFIG_COMMON_CLK=y
+
+#
+# Common Clock Framework
+#
+# CONFIG_COMMON_CLK_DEBUG is not set
 
 #
 # Hardware Spinlock drivers
@@ -4220,55 +4885,143 @@ CONFIG_CLKSRC_I8253=y
 CONFIG_CLKEVT_I8253=y
 CONFIG_I8253_LOCK=y
 CONFIG_CLKBLD_I8253=y
+CONFIG_MAILBOX=y
 CONFIG_IOMMU_API=y
 CONFIG_IOMMU_SUPPORT=y
 CONFIG_DMAR_TABLE=y
 CONFIG_INTEL_IOMMU=y
-CONFIG_INTEL_IOMMU_DEFAULT_ON=y
+# CONFIG_INTEL_IOMMU_DEFAULT_ON is not set
 CONFIG_INTEL_IOMMU_FLOPPY_WA=y
-CONFIG_VIRT_DRIVERS=y
-CONFIG_HYPERV=m
-CONFIG_HYPERV_UTILS=m
-CONFIG_PM_DEVFREQ=y
 
 #
-# DEVFREQ Governors
+# Remoteproc drivers
+#
+# CONFIG_STE_MODEM_RPROC is not set
+
+#
+# Rpmsg drivers
 #
-CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
-CONFIG_DEVFREQ_GOV_PERFORMANCE=y
-CONFIG_DEVFREQ_GOV_POWERSAVE=y
-CONFIG_DEVFREQ_GOV_USERSPACE=y
+# CONFIG_PM_DEVFREQ is not set
+# CONFIG_EXTCON is not set
+CONFIG_MEMORY=y
+CONFIG_IIO=m
+CONFIG_IIO_BUFFER=y
+CONFIG_IIO_BUFFER_CB=y
+CONFIG_IIO_KFIFO_BUF=m
+CONFIG_IIO_TRIGGER=y
+CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
 
 #
-# DEVFREQ Drivers
+# Accelerometers
 #
+# CONFIG_HID_SENSOR_ACCEL_3D is not set
+# CONFIG_IIO_ST_ACCEL_3AXIS is not set
+
+#
+# Analog to digital converters
+#
+# CONFIG_MAX1363 is not set
+# CONFIG_TI_ADC081C is not set
+# CONFIG_VIPERBOARD_ADC is not set
+
+#
+# Amplifiers
+#
+
+#
+# Hid Sensor IIO Common
+#
+CONFIG_HID_SENSOR_IIO_COMMON=m
+CONFIG_HID_SENSOR_IIO_TRIGGER=m
+# CONFIG_HID_SENSOR_ENUM_BASE_QUIRKS is not set
+
+#
+# Digital to analog converters
+#
+# CONFIG_AD5064 is not set
+# CONFIG_AD5380 is not set
+# CONFIG_AD5446 is not set
+# CONFIG_MAX517 is not set
+# CONFIG_MCP4725 is not set
+
+#
+# Frequency Synthesizers DDS/PLL
+#
+
+#
+# Clock Generator/Distribution
+#
+
+#
+# Phase-Locked Loop (PLL) frequency synthesizers
+#
+
+#
+# Digital gyroscope sensors
+#
+# CONFIG_HID_SENSOR_GYRO_3D is not set
+# CONFIG_IIO_ST_GYRO_3AXIS is not set
+# CONFIG_ITG3200 is not set
+
+#
+# Inertial measurement units
+#
+# CONFIG_INV_MPU6050_IIO is not set
+
+#
+# Light sensors
+#
+# CONFIG_ADJD_S311 is not set
+# CONFIG_SENSORS_LM3533 is not set
+# CONFIG_SENSORS_TSL2563 is not set
+# CONFIG_VCNL4000 is not set
+# CONFIG_HID_SENSOR_ALS is not set
+
+#
+# Magnetometer sensors
+#
+# CONFIG_AK8975 is not set
+# CONFIG_HID_SENSOR_MAGNETOMETER_3D is not set
+# CONFIG_IIO_ST_MAGN_3AXIS is not set
+# CONFIG_VME_BUS is not set
+# CONFIG_PWM is not set
+# CONFIG_IPACK_BUS is not set
+# CONFIG_RESET_CONTROLLER is not set
 
 #
 # Firmware Drivers
 #
-# CONFIG_EDD is not set
+CONFIG_EDD=m
+# CONFIG_EDD_OFF is not set
 CONFIG_FIRMWARE_MEMMAP=y
-# CONFIG_DELL_RBU is not set
-# CONFIG_DCDBAS is not set
+CONFIG_DELL_RBU=m
+CONFIG_DCDBAS=m
 CONFIG_DMIID=y
-CONFIG_DMI_SYSFS=m
+CONFIG_DMI_SYSFS=y
 CONFIG_ISCSI_IBFT_FIND=y
 CONFIG_ISCSI_IBFT=m
-CONFIG_SIGMA=m
 # CONFIG_GOOGLE_FIRMWARE is not set
 
+#
+# EFI (Extensible Firmware Interface) Support
+#
+CONFIG_EFI_VARS=y
+CONFIG_EFI_VARS_PSTORE=y
+# CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE is not set
+
 #
 # File systems
 #
+CONFIG_DCACHE_WORD_ACCESS=y
 # CONFIG_EXT2_FS is not set
 # CONFIG_EXT3_FS is not set
 CONFIG_EXT4_FS=y
 CONFIG_EXT4_USE_FOR_EXT23=y
-CONFIG_EXT4_FS_XATTR=y
 CONFIG_EXT4_FS_POSIX_ACL=y
 CONFIG_EXT4_FS_SECURITY=y
 # CONFIG_EXT4_DEBUG is not set
 CONFIG_JBD2=y
+# CONFIG_JBD2_DEBUG is not set
 CONFIG_FS_MBCACHE=y
 CONFIG_REISERFS_FS=m
 # CONFIG_REISERFS_CHECK is not set
@@ -4276,43 +5029,47 @@ CONFIG_REISERFS_PROC_INFO=y
 CONFIG_REISERFS_FS_XATTR=y
 CONFIG_REISERFS_FS_POSIX_ACL=y
 CONFIG_REISERFS_FS_SECURITY=y
-CONFIG_JFS_FS=m
-CONFIG_JFS_POSIX_ACL=y
-CONFIG_JFS_SECURITY=y
-# CONFIG_JFS_DEBUG is not set
-CONFIG_JFS_STATISTICS=y
+# CONFIG_JFS_FS is not set
 CONFIG_XFS_FS=m
 CONFIG_XFS_QUOTA=y
 CONFIG_XFS_POSIX_ACL=y
-# CONFIG_XFS_RT is not set
+CONFIG_XFS_RT=y
+# CONFIG_XFS_WARN is not set
 # CONFIG_XFS_DEBUG is not set
 # CONFIG_GFS2_FS is not set
-# CONFIG_BTRFS_FS is not set
+# CONFIG_OCFS2_FS is not set
+CONFIG_BTRFS_FS=m
+CONFIG_BTRFS_FS_POSIX_ACL=y
+# CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set
+# CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set
+# CONFIG_BTRFS_DEBUG is not set
 # CONFIG_NILFS2_FS is not set
 CONFIG_FS_POSIX_ACL=y
-CONFIG_EXPORTFS=m
+CONFIG_EXPORTFS=y
 CONFIG_FILE_LOCKING=y
 CONFIG_FSNOTIFY=y
 CONFIG_DNOTIFY=y
 CONFIG_INOTIFY_USER=y
 CONFIG_FANOTIFY=y
+CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
 CONFIG_QUOTA=y
 CONFIG_QUOTA_NETLINK_INTERFACE=y
-CONFIG_PRINT_QUOTA_WARNING=y
+# CONFIG_PRINT_QUOTA_WARNING is not set
 # CONFIG_QUOTA_DEBUG is not set
-CONFIG_QUOTA_TREE=m
-CONFIG_QFMT_V1=m
-CONFIG_QFMT_V2=m
+CONFIG_QUOTA_TREE=y
+# CONFIG_QFMT_V1 is not set
+CONFIG_QFMT_V2=y
 CONFIG_QUOTACTL=y
-CONFIG_AUTOFS4_FS=m
+CONFIG_AUTOFS4_FS=y
 CONFIG_FUSE_FS=m
 CONFIG_CUSE=m
+CONFIG_GENERIC_ACL=y
 
 #
 # Caches
 #
 CONFIG_FSCACHE=m
-# CONFIG_FSCACHE_STATS is not set
+CONFIG_FSCACHE_STATS=y
 # CONFIG_FSCACHE_HISTOGRAM is not set
 # CONFIG_FSCACHE_DEBUG is not set
 # CONFIG_FSCACHE_OBJECT_LIST is not set
@@ -4323,7 +5080,7 @@ CONFIG_CACHEFILES=m
 #
 # CD-ROM/DVD Filesystems
 #
-CONFIG_ISO9660_FS=m
+CONFIG_ISO9660_FS=y
 CONFIG_JOLIET=y
 CONFIG_ZISOFS=y
 CONFIG_UDF_FS=m
@@ -4333,10 +5090,10 @@ CONFIG_UDF_NLS=y
 # DOS/FAT/NT Filesystems
 #
 CONFIG_FAT_FS=m
-# CONFIG_MSDOS_FS is not set
+CONFIG_MSDOS_FS=m
 CONFIG_VFAT_FS=m
-CONFIG_FAT_DEFAULT_CODEPAGE=850
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
 # CONFIG_NTFS_FS is not set
 
 #
@@ -4345,39 +5102,22 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
 CONFIG_PROC_FS=y
 # CONFIG_PROC_KCORE is not set
 CONFIG_PROC_SYSCTL=y
-CONFIG_PROC_PAGE_MONITOR=y
 CONFIG_SYSFS=y
 CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
+CONFIG_TMPFS_POSIX_ACL=y
 CONFIG_TMPFS_XATTR=y
 # CONFIG_HUGETLBFS is not set
 # CONFIG_HUGETLB_PAGE is not set
-# CONFIG_CONFIGFS_FS is not set
+CONFIG_CONFIGFS_FS=m
 CONFIG_MISC_FILESYSTEMS=y
 # CONFIG_ADFS_FS is not set
 # CONFIG_AFFS_FS is not set
-CONFIG_ECRYPT_FS=m
+# CONFIG_ECRYPT_FS is not set
 # CONFIG_HFS_FS is not set
 # CONFIG_HFSPLUS_FS is not set
 # CONFIG_BEFS_FS is not set
 # CONFIG_BFS_FS is not set
 # CONFIG_EFS_FS is not set
-CONFIG_JFFS2_FS=m
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
-# CONFIG_JFFS2_SUMMARY is not set
-# CONFIG_JFFS2_FS_XATTR is not set
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-# CONFIG_JFFS2_LZO is not set
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
-# CONFIG_UBIFS_FS is not set
 # CONFIG_LOGFS is not set
 # CONFIG_CRAMFS is not set
 # CONFIG_SQUASHFS is not set
@@ -4386,113 +5126,117 @@ CONFIG_JFFS2_CMODE_PRIORITY=y
 # CONFIG_OMFS_FS is not set
 # CONFIG_HPFS_FS is not set
 # CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX6FS_FS is not set
 # CONFIG_ROMFS_FS is not set
-# CONFIG_PSTORE is not set
+CONFIG_PSTORE=y
+# CONFIG_PSTORE_CONSOLE is not set
+# CONFIG_PSTORE_FTRACE is not set
+# CONFIG_PSTORE_RAM is not set
 # CONFIG_SYSV_FS is not set
-CONFIG_UFS_FS=m
-# CONFIG_UFS_FS_WRITE is not set
-# CONFIG_UFS_DEBUG is not set
+# CONFIG_UFS_FS is not set
 # CONFIG_EXOFS_FS is not set
+# CONFIG_F2FS_FS is not set
+CONFIG_EFIVAR_FS=m
+CONFIG_ORE=m
 CONFIG_NETWORK_FILESYSTEMS=y
 CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
+CONFIG_NFS_V2=m
+CONFIG_NFS_V3=m
 CONFIG_NFS_V3_ACL=y
-CONFIG_NFS_V4=y
-# CONFIG_NFS_V4_1 is not set
-# CONFIG_NFS_FSCACHE is not set
+CONFIG_NFS_V4=m
+# CONFIG_NFS_SWAP is not set
+CONFIG_NFS_V4_1=y
+CONFIG_PNFS_FILE_LAYOUT=m
+CONFIG_PNFS_BLOCK=m
+CONFIG_PNFS_OBJLAYOUT=m
+CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="ipfire.org"
+CONFIG_NFS_FSCACHE=y
 # CONFIG_NFS_USE_LEGACY_DNS is not set
 CONFIG_NFS_USE_KERNEL_DNS=y
-# CONFIG_NFS_USE_NEW_IDMAPPER is not set
 CONFIG_NFSD=m
 CONFIG_NFSD_V2_ACL=y
 CONFIG_NFSD_V3=y
 CONFIG_NFSD_V3_ACL=y
 CONFIG_NFSD_V4=y
+# CONFIG_NFSD_FAULT_INJECTION is not set
 CONFIG_LOCKD=m
 CONFIG_LOCKD_V4=y
 CONFIG_NFS_ACL_SUPPORT=m
 CONFIG_NFS_COMMON=y
 CONFIG_SUNRPC=m
 CONFIG_SUNRPC_GSS=m
+CONFIG_SUNRPC_BACKCHANNEL=y
 CONFIG_RPCSEC_GSS_KRB5=m
+# CONFIG_SUNRPC_DEBUG is not set
 # CONFIG_CEPH_FS is not set
 CONFIG_CIFS=m
 CONFIG_CIFS_STATS=y
-CONFIG_CIFS_STATS2=y
+# CONFIG_CIFS_STATS2 is not set
 # CONFIG_CIFS_WEAK_PW_HASH is not set
 # CONFIG_CIFS_UPCALL is not set
 CONFIG_CIFS_XATTR=y
 CONFIG_CIFS_POSIX=y
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_DFS_UPCALL is not set
-# CONFIG_CIFS_FSCACHE is not set
 CONFIG_CIFS_ACL=y
+# CONFIG_CIFS_DEBUG is not set
+CONFIG_CIFS_DFS_UPCALL=y
+CONFIG_CIFS_SMB2=y
+CONFIG_CIFS_FSCACHE=y
 # CONFIG_NCP_FS is not set
 # CONFIG_CODA_FS is not set
 # CONFIG_AFS_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-CONFIG_BSD_DISKLABEL=y
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-CONFIG_LDM_PARTITION=y
-# CONFIG_LDM_DEBUG is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-CONFIG_EFI_PARTITION=y
-# CONFIG_SYSV68_PARTITION is not set
 CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp850"
-# CONFIG_NLS_CODEPAGE_437 is not set
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-CONFIG_NLS_CODEPAGE_850=y
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-# CONFIG_NLS_ASCII is not set
-CONFIG_NLS_ISO8859_1=y
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-CONFIG_NLS_UTF8=y
+CONFIG_NLS_DEFAULT="utf-8"
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=y
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_MAC_ROMAN=m
+CONFIG_NLS_MAC_CELTIC=m
+CONFIG_NLS_MAC_CENTEURO=m
+CONFIG_NLS_MAC_CROATIAN=m
+CONFIG_NLS_MAC_CYRILLIC=m
+CONFIG_NLS_MAC_GAELIC=m
+CONFIG_NLS_MAC_GREEK=m
+CONFIG_NLS_MAC_ICELAND=m
+CONFIG_NLS_MAC_INUIT=m
+CONFIG_NLS_MAC_ROMANIAN=m
+CONFIG_NLS_MAC_TURKISH=m
+CONFIG_NLS_UTF8=m
+CONFIG_DLM=m
+# CONFIG_DLM_DEBUG is not set
 
 #
 # Kernel hacking
@@ -4502,27 +5246,32 @@ CONFIG_TRACE_IRQFLAGS_SUPPORT=y
 CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
 # CONFIG_ENABLE_WARN_DEPRECATED is not set
 CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_FRAME_WARN=1024
+CONFIG_FRAME_WARN=2048
 # CONFIG_MAGIC_SYSRQ is not set
 CONFIG_STRIP_ASM_SYMS=y
+# CONFIG_READABLE_ASM is not set
 # CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_FS=y
+CONFIG_HEADERS_CHECK=y
 # CONFIG_DEBUG_SECTION_MISMATCH is not set
 CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SHIRQ is not set
-# CONFIG_LOCKUP_DETECTOR is not set
-# CONFIG_HARDLOCKUP_DETECTOR is not set
-CONFIG_DETECT_HUNG_TASK=y
-CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
-# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
-CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
+CONFIG_DEBUG_SHIRQ=y
+CONFIG_LOCKUP_DETECTOR=y
+CONFIG_HARDLOCKUP_DETECTOR=y
+# CONFIG_BOOTPARAM_HARDLOCKUP_PANIC is not set
+CONFIG_BOOTPARAM_HARDLOCKUP_PANIC_VALUE=0
+# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
+# CONFIG_PANIC_ON_OOPS is not set
+CONFIG_PANIC_ON_OOPS_VALUE=0
+# CONFIG_DETECT_HUNG_TASK is not set
 CONFIG_SCHED_DEBUG=y
-# CONFIG_SCHEDSTATS is not set
+CONFIG_SCHEDSTATS=y
 CONFIG_TIMER_STATS=y
 # CONFIG_DEBUG_OBJECTS is not set
 # CONFIG_SLUB_DEBUG_ON is not set
 # CONFIG_SLUB_STATS is not set
+CONFIG_HAVE_DEBUG_KMEMLEAK=y
 # CONFIG_DEBUG_KMEMLEAK is not set
 # CONFIG_DEBUG_RT_MUTEXES is not set
 # CONFIG_RT_MUTEX_TESTER is not set
@@ -4530,10 +5279,10 @@ CONFIG_TIMER_STATS=y
 # CONFIG_DEBUG_MUTEXES is not set
 # CONFIG_DEBUG_LOCK_ALLOC is not set
 # CONFIG_PROVE_LOCKING is not set
-# CONFIG_SPARSE_RCU_POINTER is not set
 # CONFIG_LOCK_STAT is not set
 # CONFIG_DEBUG_ATOMIC_SLEEP is not set
 # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+CONFIG_STACKTRACE=y
 # CONFIG_DEBUG_STACK_USAGE is not set
 # CONFIG_DEBUG_KOBJECT is not set
 # CONFIG_DEBUG_HIGHMEM is not set
@@ -4543,38 +5292,79 @@ CONFIG_DEBUG_BUGVERBOSE=y
 # CONFIG_DEBUG_VIRTUAL is not set
 # CONFIG_DEBUG_WRITECOUNT is not set
 CONFIG_DEBUG_MEMORY_INIT=y
-# CONFIG_DEBUG_LIST is not set
+CONFIG_DEBUG_LIST=y
 # CONFIG_TEST_LIST_SORT is not set
 # CONFIG_DEBUG_SG is not set
 # CONFIG_DEBUG_NOTIFIERS is not set
 # CONFIG_DEBUG_CREDENTIALS is not set
 CONFIG_ARCH_WANT_FRAME_POINTERS=y
-# CONFIG_FRAME_POINTER is not set
+CONFIG_FRAME_POINTER=y
 # CONFIG_BOOT_PRINTK_DELAY is not set
+
+#
+# RCU Debugging
+#
+# CONFIG_SPARSE_RCU_POINTER is not set
 # CONFIG_RCU_TORTURE_TEST is not set
 CONFIG_RCU_CPU_STALL_TIMEOUT=60
+# CONFIG_RCU_CPU_STALL_INFO is not set
+# CONFIG_RCU_TRACE is not set
 # CONFIG_BACKTRACE_SELF_TEST is not set
 # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
 # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
 # CONFIG_DEBUG_PER_CPU_MAPS is not set
-# CONFIG_CPU_NOTIFIER_ERROR_INJECT is not set
+# CONFIG_LKDTM is not set
+# CONFIG_NOTIFIER_ERROR_INJECTION is not set
 # CONFIG_FAULT_INJECTION is not set
-# CONFIG_LATENCYTOP is not set
-# CONFIG_SYSCTL_SYSCALL_CHECK is not set
+CONFIG_ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS=y
+# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
 # CONFIG_DEBUG_PAGEALLOC is not set
 CONFIG_USER_STACKTRACE_SUPPORT=y
+CONFIG_NOP_TRACER=y
 CONFIG_HAVE_FUNCTION_TRACER=y
 CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
 CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y
 CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
 CONFIG_HAVE_DYNAMIC_FTRACE=y
+CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
 CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
 CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
 CONFIG_HAVE_C_RECORDMCOUNT=y
+CONFIG_TRACER_MAX_TRACE=y
+CONFIG_TRACE_CLOCK=y
+CONFIG_RING_BUFFER=y
+CONFIG_EVENT_TRACING=y
+CONFIG_CONTEXT_SWITCH_TRACER=y
+CONFIG_TRACING=y
+CONFIG_GENERIC_TRACER=y
 CONFIG_TRACING_SUPPORT=y
-# CONFIG_FTRACE is not set
-# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
-# CONFIG_FIREWIRE_OHCI_REMOTE_DMA is not set
+CONFIG_FTRACE=y
+CONFIG_FUNCTION_TRACER=y
+CONFIG_FUNCTION_GRAPH_TRACER=y
+# CONFIG_IRQSOFF_TRACER is not set
+CONFIG_SCHED_TRACER=y
+CONFIG_FTRACE_SYSCALLS=y
+CONFIG_TRACER_SNAPSHOT=y
+# CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP is not set
+CONFIG_BRANCH_PROFILE_NONE=y
+# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
+# CONFIG_PROFILE_ALL_BRANCHES is not set
+CONFIG_STACK_TRACER=y
+CONFIG_BLK_DEV_IO_TRACE=y
+# CONFIG_UPROBE_EVENT is not set
+# CONFIG_PROBE_EVENTS is not set
+CONFIG_DYNAMIC_FTRACE=y
+CONFIG_DYNAMIC_FTRACE_WITH_REGS=y
+CONFIG_FUNCTION_PROFILER=y
+CONFIG_FTRACE_MCOUNT_RECORD=y
+# CONFIG_FTRACE_STARTUP_TEST is not set
+# CONFIG_MMIOTRACE is not set
+CONFIG_RING_BUFFER_BENCHMARK=m
+# CONFIG_RING_BUFFER_STARTUP_TEST is not set
+CONFIG_RBTREE_TEST=m
+# CONFIG_INTERVAL_TREE_TEST is not set
+# CONFIG_BUILD_DOCSRC is not set
+CONFIG_DYNAMIC_DEBUG=y
 # CONFIG_DMA_API_DEBUG is not set
 # CONFIG_ATOMIC64_SELFTEST is not set
 CONFIG_ASYNC_RAID6_TEST=m
@@ -4582,19 +5372,17 @@ CONFIG_ASYNC_RAID6_TEST=m
 CONFIG_HAVE_ARCH_KGDB=y
 # CONFIG_KGDB is not set
 CONFIG_HAVE_ARCH_KMEMCHECK=y
-# CONFIG_KMEMCHECK is not set
+# CONFIG_TEST_STRING_HELPERS is not set
 # CONFIG_TEST_KSTRTOX is not set
-# CONFIG_STRICT_DEVMEM is not set
-CONFIG_X86_VERBOSE_BOOTUP=y
+CONFIG_STRICT_DEVMEM=y
+# CONFIG_X86_VERBOSE_BOOTUP is not set
 CONFIG_EARLY_PRINTK=y
 # CONFIG_EARLY_PRINTK_DBGP is not set
-# CONFIG_DEBUG_STACKOVERFLOW is not set
+CONFIG_DEBUG_STACKOVERFLOW=y
 # CONFIG_X86_PTDUMP is not set
-CONFIG_DEBUG_RODATA=y
-CONFIG_DEBUG_RODATA_TEST=y
-# CONFIG_DEBUG_SET_MODULE_RONX is not set
-# CONFIG_DEBUG_NX_TEST is not set
+CONFIG_DEBUG_NX_TEST=m
 CONFIG_DOUBLEFAULT=y
+# CONFIG_DEBUG_TLBFLUSH is not set
 # CONFIG_IOMMU_STRESS is not set
 CONFIG_HAVE_MMIOTRACE_SUPPORT=y
 CONFIG_IO_DELAY_TYPE_0X80=0
@@ -4606,20 +5394,187 @@ CONFIG_IO_DELAY_0X80=y
 # CONFIG_IO_DELAY_UDELAY is not set
 # CONFIG_IO_DELAY_NONE is not set
 CONFIG_DEFAULT_IO_DELAY_TYPE=0
+CONFIG_DEBUG_BOOT_PARAMS=y
 # CONFIG_CPA_DEBUG is not set
-# CONFIG_OPTIMIZE_INLINING is not set
-# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
+CONFIG_OPTIMIZE_INLINING=y
+# CONFIG_DEBUG_NMI_SELFTEST is not set
 
 #
 # Security options
 #
+
+#
+# Grsecurity
+#
+CONFIG_ARCH_TRACK_EXEC_LIMIT=y
+CONFIG_PAX_USERCOPY_SLABS=y
+CONFIG_GRKERNSEC=y
+# CONFIG_GRKERNSEC_CONFIG_AUTO is not set
+CONFIG_GRKERNSEC_CONFIG_CUSTOM=y
+
+#
+# Customize Configuration
+#
+
+#
+# PaX
+#
+CONFIG_PAX=y
+
+#
+# PaX Control
+#
+# CONFIG_PAX_SOFTMODE is not set
+CONFIG_PAX_EI_PAX=y
+CONFIG_PAX_PT_PAX_FLAGS=y
+# CONFIG_PAX_XATTR_PAX_FLAGS is not set
+# CONFIG_PAX_NO_ACL_FLAGS is not set
+CONFIG_PAX_HAVE_ACL_FLAGS=y
+# CONFIG_PAX_HOOK_ACL_FLAGS is not set
+
+#
+# Non-executable pages
+#
+CONFIG_PAX_NOEXEC=y
+CONFIG_PAX_PAGEEXEC=y
+CONFIG_PAX_SEGMEXEC=y
+CONFIG_PAX_EMUTRAMP=y
+CONFIG_PAX_MPROTECT=y
+# CONFIG_PAX_MPROTECT_COMPAT is not set
+CONFIG_PAX_ELFRELOCS=y
+CONFIG_PAX_KERNEXEC_PLUGIN_METHOD=""
+
+#
+# Address Space Layout Randomization
+#
+CONFIG_PAX_ASLR=y
+CONFIG_PAX_RANDKSTACK=y
+CONFIG_PAX_RANDUSTACK=y
+CONFIG_PAX_RANDMMAP=y
+
+#
+# Miscellaneous hardening features
+#
+CONFIG_PAX_MEMORY_STACKLEAK=y
+CONFIG_PAX_MEMORY_STRUCTLEAK=y
+CONFIG_PAX_REFCOUNT=y
+CONFIG_PAX_USERCOPY=y
+# CONFIG_PAX_USERCOPY_DEBUG is not set
+# CONFIG_PAX_SIZE_OVERFLOW is not set
+# CONFIG_PAX_LATENT_ENTROPY is not set
+
+#
+# Memory Protections
+#
+# CONFIG_GRKERNSEC_KMEM is not set
+CONFIG_GRKERNSEC_VM86=y
+# CONFIG_GRKERNSEC_IO is not set
+# CONFIG_GRKERNSEC_PERF_HARDEN is not set
+CONFIG_GRKERNSEC_RAND_THREADSTACK=y
+CONFIG_GRKERNSEC_PROC_MEMMAP=y
+CONFIG_GRKERNSEC_BRUTE=y
+CONFIG_GRKERNSEC_MODHARDEN=y
+CONFIG_GRKERNSEC_HIDESYM=y
+CONFIG_GRKERNSEC_KERN_LOCKOUT=y
+
+#
+# Role Based Access Control Options
+#
+CONFIG_GRKERNSEC_NO_RBAC=y
+# CONFIG_GRKERNSEC_ACL_HIDEKERN is not set
+CONFIG_GRKERNSEC_ACL_MAXTRIES=3
+CONFIG_GRKERNSEC_ACL_TIMEOUT=30
+
+#
+# Filesystem Protections
+#
+# CONFIG_GRKERNSEC_PROC is not set
+CONFIG_GRKERNSEC_LINK=y
+# CONFIG_GRKERNSEC_SYMLINKOWN is not set
+CONFIG_GRKERNSEC_FIFO=y
+# CONFIG_GRKERNSEC_SYSFS_RESTRICT is not set
+# CONFIG_GRKERNSEC_ROFS is not set
+CONFIG_GRKERNSEC_DEVICE_SIDECHANNEL=y
+CONFIG_GRKERNSEC_CHROOT=y
+# CONFIG_GRKERNSEC_CHROOT_MOUNT is not set
+CONFIG_GRKERNSEC_CHROOT_DOUBLE=y
+CONFIG_GRKERNSEC_CHROOT_PIVOT=y
+CONFIG_GRKERNSEC_CHROOT_CHDIR=y
+# CONFIG_GRKERNSEC_CHROOT_CHMOD is not set
+CONFIG_GRKERNSEC_CHROOT_FCHDIR=y
+# CONFIG_GRKERNSEC_CHROOT_MKNOD is not set
+CONFIG_GRKERNSEC_CHROOT_SHMAT=y
+CONFIG_GRKERNSEC_CHROOT_UNIX=y
+CONFIG_GRKERNSEC_CHROOT_FINDTASK=y
+CONFIG_GRKERNSEC_CHROOT_NICE=y
+CONFIG_GRKERNSEC_CHROOT_SYSCTL=y
+# CONFIG_GRKERNSEC_CHROOT_CAPS is not set
+CONFIG_GRKERNSEC_CHROOT_INITRD=y
+
+#
+# Kernel Auditing
+#
+# CONFIG_GRKERNSEC_AUDIT_GROUP is not set
+# CONFIG_GRKERNSEC_EXECLOG is not set
+CONFIG_GRKERNSEC_RESLOG=y
+# CONFIG_GRKERNSEC_CHROOT_EXECLOG is not set
+# CONFIG_GRKERNSEC_AUDIT_PTRACE is not set
+# CONFIG_GRKERNSEC_AUDIT_CHDIR is not set
+# CONFIG_GRKERNSEC_AUDIT_MOUNT is not set
+CONFIG_GRKERNSEC_SIGNAL=y
+CONFIG_GRKERNSEC_FORKFAIL=y
+# CONFIG_GRKERNSEC_TIME is not set
+CONFIG_GRKERNSEC_PROC_IPADDR=y
+# CONFIG_GRKERNSEC_RWXMAP_LOG is not set
+
+#
+# Executable Protections
+#
+CONFIG_GRKERNSEC_DMESG=y
+CONFIG_GRKERNSEC_HARDEN_PTRACE=y
+CONFIG_GRKERNSEC_PTRACE_READEXEC=y
+CONFIG_GRKERNSEC_SETXID=y
+# CONFIG_GRKERNSEC_TPE is not set
+
+#
+# Network Protections
+#
+CONFIG_GRKERNSEC_RANDNET=y
+CONFIG_GRKERNSEC_BLACKHOLE=y
+CONFIG_GRKERNSEC_NO_SIMULT_CONNECT=y
+# CONFIG_GRKERNSEC_SOCKET is not set
+
+#
+# Physical Protections
+#
+# CONFIG_GRKERNSEC_DENYUSB is not set
+
+#
+# Sysctl Support
+#
+# CONFIG_GRKERNSEC_SYSCTL is not set
+
+#
+# Logging Options
+#
+CONFIG_GRKERNSEC_FLOODTIME=10
+CONFIG_GRKERNSEC_FLOODBURST=6
 CONFIG_KEYS=y
 # CONFIG_ENCRYPTED_KEYS is not set
-# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
-# CONFIG_SECURITY_DMESG_RESTRICT is not set
-# CONFIG_SECURITY is not set
-# CONFIG_SECURITYFS is not set
+CONFIG_KEYS_DEBUG_PROC_KEYS=y
+CONFIG_SECURITY_DMESG_RESTRICT=y
+CONFIG_SECURITY=y
+CONFIG_SECURITYFS=y
+CONFIG_SECURITY_NETWORK=y
+CONFIG_SECURITY_NETWORK_XFRM=y
+# CONFIG_SECURITY_PATH is not set
 # CONFIG_INTEL_TXT is not set
+# CONFIG_SECURITY_SELINUX is not set
+# CONFIG_SECURITY_SMACK is not set
+# CONFIG_SECURITY_TOMOYO is not set
+# CONFIG_SECURITY_APPARMOR is not set
+# CONFIG_IMA is not set
+# CONFIG_EVM is not set
 CONFIG_DEFAULT_SECURITY_DAC=y
 CONFIG_DEFAULT_SECURITY=""
 CONFIG_XOR_BLOCKS=m
@@ -4628,58 +5583,60 @@ CONFIG_ASYNC_MEMCPY=m
 CONFIG_ASYNC_XOR=m
 CONFIG_ASYNC_PQ=m
 CONFIG_ASYNC_RAID6_RECOV=m
-CONFIG_ASYNC_TX_DISABLE_PQ_VAL_DMA=y
-CONFIG_ASYNC_TX_DISABLE_XOR_VAL_DMA=y
 CONFIG_CRYPTO=y
 
 #
 # Crypto core or helper
 #
+CONFIG_CRYPTO_FIPS=y
 CONFIG_CRYPTO_ALGAPI=y
 CONFIG_CRYPTO_ALGAPI2=y
-CONFIG_CRYPTO_AEAD=m
+CONFIG_CRYPTO_AEAD=y
 CONFIG_CRYPTO_AEAD2=y
-CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_BLKCIPHER=y
 CONFIG_CRYPTO_BLKCIPHER2=y
 CONFIG_CRYPTO_HASH=y
 CONFIG_CRYPTO_HASH2=y
-CONFIG_CRYPTO_RNG=m
+CONFIG_CRYPTO_RNG=y
 CONFIG_CRYPTO_RNG2=y
 CONFIG_CRYPTO_PCOMP=m
 CONFIG_CRYPTO_PCOMP2=y
 CONFIG_CRYPTO_MANAGER=y
 CONFIG_CRYPTO_MANAGER2=y
-CONFIG_CRYPTO_USER=m
-CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
-CONFIG_CRYPTO_GF128MUL=m
-# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_USER is not set
+# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
+CONFIG_CRYPTO_GF128MUL=y
+CONFIG_CRYPTO_NULL=m
 CONFIG_CRYPTO_PCRYPT=m
 CONFIG_CRYPTO_WORKQUEUE=y
-CONFIG_CRYPTO_CRYPTD=m
+CONFIG_CRYPTO_CRYPTD=y
 CONFIG_CRYPTO_AUTHENC=m
-# CONFIG_CRYPTO_TEST is not set
+CONFIG_CRYPTO_TEST=m
+CONFIG_CRYPTO_ABLK_HELPER_X86=y
+CONFIG_CRYPTO_GLUE_HELPER_X86=m
 
 #
 # Authenticated Encryption with Associated Data
 #
 CONFIG_CRYPTO_CCM=m
 CONFIG_CRYPTO_GCM=m
-CONFIG_CRYPTO_SEQIV=m
+CONFIG_CRYPTO_SEQIV=y
 
 #
 # Block modes
 #
-CONFIG_CRYPTO_CBC=m
-CONFIG_CRYPTO_CTR=m
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_CTR=y
 CONFIG_CRYPTO_CTS=m
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_LRW=m
+CONFIG_CRYPTO_ECB=y
+CONFIG_CRYPTO_LRW=y
 CONFIG_CRYPTO_PCBC=m
-CONFIG_CRYPTO_XTS=m
+CONFIG_CRYPTO_XTS=y
 
 #
 # Hash modes
 #
+CONFIG_CRYPTO_CMAC=m
 CONFIG_CRYPTO_HMAC=y
 CONFIG_CRYPTO_XCBC=m
 CONFIG_CRYPTO_VMAC=m
@@ -4687,18 +5644,20 @@ CONFIG_CRYPTO_VMAC=m
 #
 # Digest
 #
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_CRC32C_INTEL=m
+CONFIG_CRYPTO_CRC32C=y
+CONFIG_CRYPTO_CRC32C_INTEL=y
+CONFIG_CRYPTO_CRC32=y
+CONFIG_CRYPTO_CRC32_PCLMUL=m
 CONFIG_CRYPTO_GHASH=m
 CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_MD5=y
 CONFIG_CRYPTO_MICHAEL_MIC=m
 CONFIG_CRYPTO_RMD128=m
 CONFIG_CRYPTO_RMD160=m
 CONFIG_CRYPTO_RMD256=m
 CONFIG_CRYPTO_RMD320=m
 CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA256=y
 CONFIG_CRYPTO_SHA512=m
 CONFIG_CRYPTO_TGR192=m
 CONFIG_CRYPTO_WP512=m
@@ -4706,23 +5665,25 @@ CONFIG_CRYPTO_WP512=m
 #
 # Ciphers
 #
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_AES_586=m
-CONFIG_CRYPTO_AES_NI_INTEL=m
+CONFIG_CRYPTO_AES=y
+CONFIG_CRYPTO_AES_586=y
+CONFIG_CRYPTO_AES_NI_INTEL=y
 CONFIG_CRYPTO_ANUBIS=m
 CONFIG_CRYPTO_ARC4=m
 CONFIG_CRYPTO_BLOWFISH=m
 CONFIG_CRYPTO_BLOWFISH_COMMON=m
 CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_CAST_COMMON=m
 CONFIG_CRYPTO_CAST5=m
 CONFIG_CRYPTO_CAST6=m
 CONFIG_CRYPTO_DES=m
 CONFIG_CRYPTO_FCRYPT=m
 CONFIG_CRYPTO_KHAZAD=m
 CONFIG_CRYPTO_SALSA20=m
-CONFIG_CRYPTO_SALSA20_586=m
+# CONFIG_CRYPTO_SALSA20_586 is not set
 CONFIG_CRYPTO_SEED=m
 CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_SERPENT_SSE2_586=m
 CONFIG_CRYPTO_TEA=m
 CONFIG_CRYPTO_TWOFISH=m
 CONFIG_CRYPTO_TWOFISH_COMMON=m
@@ -4731,7 +5692,7 @@ CONFIG_CRYPTO_TWOFISH_586=m
 #
 # Compression
 #
-CONFIG_CRYPTO_DEFLATE=y
+CONFIG_CRYPTO_DEFLATE=m
 CONFIG_CRYPTO_ZLIB=m
 CONFIG_CRYPTO_LZO=m
 
@@ -4739,45 +5700,63 @@ CONFIG_CRYPTO_LZO=m
 # Random Number Generation
 #
 CONFIG_CRYPTO_ANSI_CPRNG=m
-CONFIG_CRYPTO_USER_API=m
-CONFIG_CRYPTO_USER_API_HASH=m
-CONFIG_CRYPTO_USER_API_SKCIPHER=m
+CONFIG_CRYPTO_USER_API=y
+CONFIG_CRYPTO_USER_API_HASH=y
+CONFIG_CRYPTO_USER_API_SKCIPHER=y
 CONFIG_CRYPTO_HW=y
 CONFIG_CRYPTO_DEV_PADLOCK=m
 CONFIG_CRYPTO_DEV_PADLOCK_AES=m
 CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
 CONFIG_CRYPTO_DEV_GEODE=m
+CONFIG_ASYMMETRIC_KEY_TYPE=m
+CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=m
+CONFIG_PUBLIC_KEY_ALGO_RSA=m
+CONFIG_X509_CERTIFICATE_PARSER=m
 CONFIG_HAVE_KVM=y
 CONFIG_HAVE_KVM_IRQCHIP=y
+CONFIG_HAVE_KVM_IRQ_ROUTING=y
 CONFIG_HAVE_KVM_EVENTFD=y
 CONFIG_KVM_APIC_ARCHITECTURE=y
 CONFIG_KVM_MMIO=y
 CONFIG_KVM_ASYNC_PF=y
+CONFIG_HAVE_KVM_MSI=y
+CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y
 CONFIG_VIRTUALIZATION=y
 CONFIG_KVM=m
 CONFIG_KVM_INTEL=m
 CONFIG_KVM_AMD=m
-CONFIG_VHOST_NET=m
-CONFIG_LGUEST=m
-# CONFIG_BINARY_PRINTF is not set
+CONFIG_KVM_MMU_AUDIT=y
+CONFIG_KVM_DEVICE_ASSIGNMENT=y
+# CONFIG_LGUEST is not set
+CONFIG_BINARY_PRINTF=y
 
 #
 # Library routines
 #
 CONFIG_RAID6_PQ=m
 CONFIG_BITREVERSE=y
+CONFIG_GENERIC_STRNCPY_FROM_USER=y
+CONFIG_GENERIC_STRNLEN_USER=y
 CONFIG_GENERIC_FIND_FIRST_BIT=y
-CONFIG_CRC_CCITT=m
+CONFIG_GENERIC_PCI_IOMAP=y
+CONFIG_GENERIC_IOMAP=y
+CONFIG_GENERIC_IO=y
+CONFIG_CRC_CCITT=y
 CONFIG_CRC16=y
-CONFIG_CRC_T10DIF=m
+CONFIG_CRC_T10DIF=y
 CONFIG_CRC_ITU_T=m
 CONFIG_CRC32=y
+# CONFIG_CRC32_SELFTEST is not set
+CONFIG_CRC32_SLICEBY8=y
+# CONFIG_CRC32_SLICEBY4 is not set
+# CONFIG_CRC32_SARWATE is not set
+# CONFIG_CRC32_BIT is not set
 CONFIG_CRC7=m
 CONFIG_LIBCRC32C=m
 CONFIG_CRC8=m
 CONFIG_AUDIT_GENERIC=y
 CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
+CONFIG_ZLIB_DEFLATE=m
 CONFIG_LZO_COMPRESS=y
 CONFIG_LZO_DECOMPRESS=y
 CONFIG_XZ_DEC=y
@@ -4794,6 +5773,7 @@ CONFIG_DECOMPRESS_BZIP2=y
 CONFIG_DECOMPRESS_LZMA=y
 CONFIG_DECOMPRESS_XZ=y
 CONFIG_DECOMPRESS_LZO=y
+CONFIG_GENERIC_ALLOCATOR=y
 CONFIG_TEXTSEARCH=y
 CONFIG_TEXTSEARCH_KMP=m
 CONFIG_TEXTSEARCH_BM=m
@@ -4803,6 +5783,13 @@ CONFIG_HAS_IOPORT=y
 CONFIG_HAS_DMA=y
 CONFIG_CHECK_SIGNATURE=y
 CONFIG_CPU_RMAP=y
+CONFIG_DQL=y
 CONFIG_NLATTR=y
+CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y
 CONFIG_AVERAGE=y
+CONFIG_CLZ_TAB=y
 CONFIG_CORDIC=m
+# CONFIG_DDR is not set
+CONFIG_MPILIB=m
+CONFIG_OID_REGISTRY=m
+CONFIG_UCS2_STRING=y
diff --git a/config/kernel/kernel.config.i586-ipfire-xen b/config/kernel/kernel.config.i586-ipfire-xen
deleted file mode 100644 (file)
index 5be047d..0000000
+++ /dev/null
@@ -1,3749 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.32.61-ipfire-xen
-# Wed Jun 19 10:32:43 2013
-#
-# CONFIG_64BIT is not set
-CONFIG_X86_32=y
-# CONFIG_X86_64 is not set
-CONFIG_X86=y
-CONFIG_OUTPUT_FORMAT="elf32-i386"
-CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"
-CONFIG_GENERIC_TIME=y
-CONFIG_GENERIC_CMOS_UPDATE=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_HAVE_LATENCYTOP_SUPPORT=y
-CONFIG_MMU=y
-CONFIG_ZONE_DMA=y
-CONFIG_GENERIC_ISA_DMA=y
-CONFIG_GENERIC_IOMAP=y
-CONFIG_GENERIC_BUG=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_ARCH_MAY_HAVE_PC_FDC=y
-# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
-CONFIG_RWSEM_XCHGADD_ALGORITHM=y
-CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-# CONFIG_GENERIC_TIME_VSYSCALL is not set
-CONFIG_ARCH_HAS_CPU_RELAX=y
-CONFIG_ARCH_HAS_DEFAULT_IDLE=y
-CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
-CONFIG_HAVE_SETUP_PER_CPU_AREA=y
-CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
-CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
-# CONFIG_HAVE_CPUMASK_OF_CPU_MAP is not set
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-# CONFIG_ZONE_DMA32 is not set
-CONFIG_ARCH_POPULATES_NODE_MAP=y
-# CONFIG_AUDIT_ARCH is not set
-CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
-CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_GENERIC_PENDING_IRQ=y
-CONFIG_USE_GENERIC_SMP_HELPERS=y
-CONFIG_X86_32_SMP=y
-CONFIG_X86_NO_TSS=y
-CONFIG_X86_NO_IDT=y
-CONFIG_KTIME_SCALAR=y
-CONFIG_ARCH_CPU_PROBE_RELEASE=y
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-CONFIG_CONSTRUCTORS=y
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_LOCALVERSION=""
-# CONFIG_LOCALVERSION_AUTO is not set
-CONFIG_HAVE_KERNEL_GZIP=y
-CONFIG_KERNEL_GZIP=y
-# CONFIG_KERNEL_BZIP2 is not set
-# CONFIG_KERNEL_LZMA is not set
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-CONFIG_POSIX_MQUEUE=y
-CONFIG_POSIX_MQUEUE_SYSCTL=y
-CONFIG_BSD_PROCESS_ACCT=y
-CONFIG_BSD_PROCESS_ACCT_V3=y
-# CONFIG_TASKSTATS is not set
-CONFIG_AUDIT=y
-CONFIG_AUDITSYSCALL=y
-CONFIG_AUDIT_TREE=y
-
-#
-# RCU Subsystem
-#
-CONFIG_TREE_RCU=y
-# CONFIG_TREE_PREEMPT_RCU is not set
-# CONFIG_RCU_TRACE is not set
-CONFIG_RCU_FANOUT=32
-# CONFIG_RCU_FANOUT_EXACT is not set
-# CONFIG_TREE_RCU_TRACE is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_LOG_BUF_SHIFT=17
-CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
-# CONFIG_CGROUPS is not set
-CONFIG_SYSFS_DEPRECATED=y
-CONFIG_SYSFS_DEPRECATED_V2=y
-# CONFIG_RELAY is not set
-CONFIG_NAMESPACES=y
-CONFIG_UTS_NS=y
-CONFIG_IPC_NS=y
-# CONFIG_USER_NS is not set
-# CONFIG_PID_NS is not set
-# CONFIG_NET_NS is not set
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_RD_GZIP=y
-CONFIG_RD_BZIP2=y
-CONFIG_RD_LZMA=y
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-CONFIG_SYSCTL=y
-CONFIG_ANON_INODES=y
-# CONFIG_EMBEDDED is not set
-CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_PCSPKR_PLATFORM=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_TIMERFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_AIO=y
-
-#
-# Kernel Performance Events And Counters
-#
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_PCI_QUIRKS=y
-CONFIG_SLUB_DEBUG=y
-# CONFIG_COMPAT_BRK is not set
-# CONFIG_SLAB is not set
-CONFIG_SLUB=y
-# CONFIG_SLOB is not set
-# CONFIG_PROFILING is not set
-CONFIG_HAVE_OPROFILE=y
-# CONFIG_KPROBES is not set
-CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
-CONFIG_HAVE_IOREMAP_PROT=y
-CONFIG_HAVE_KPROBES=y
-CONFIG_HAVE_KRETPROBES=y
-CONFIG_HAVE_ARCH_TRACEHOOK=y
-CONFIG_HAVE_DMA_ATTRS=y
-CONFIG_HAVE_DMA_API_DEBUG=y
-
-#
-# GCOV-based kernel profiling
-#
-CONFIG_SLOW_WORK=y
-CONFIG_HAVE_GENERIC_DMA_COHERENT=y
-CONFIG_SLABINFO=y
-CONFIG_RT_MUTEXES=y
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-# CONFIG_MODULE_FORCE_LOAD is not set
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_STOP_MACHINE=y
-CONFIG_BLOCK=y
-CONFIG_LBDAF=y
-# CONFIG_BLK_DEV_BSG is not set
-# CONFIG_BLK_DEV_INTEGRITY is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
-# CONFIG_DEFAULT_AS is not set
-# CONFIG_DEFAULT_DEADLINE is not set
-CONFIG_DEFAULT_CFQ=y
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="cfq"
-CONFIG_FREEZER=y
-
-#
-# Processor type and features
-#
-CONFIG_SMP=y
-CONFIG_SPARSE_IRQ=y
-CONFIG_X86_MPPARSE=y
-CONFIG_X86_XEN=y
-CONFIG_SCHED_OMIT_FRAME_POINTER=y
-# CONFIG_M386 is not set
-# CONFIG_M486 is not set
-# CONFIG_M586 is not set
-CONFIG_M586TSC=y
-# CONFIG_M586MMX is not set
-# CONFIG_M686 is not set
-# CONFIG_MPENTIUMII is not set
-# CONFIG_MPENTIUMIII is not set
-# CONFIG_MPENTIUMM is not set
-# CONFIG_MPENTIUM4 is not set
-# CONFIG_MK6 is not set
-# CONFIG_MK7 is not set
-# CONFIG_MK8 is not set
-# CONFIG_MCRUSOE is not set
-# CONFIG_MEFFICEON is not set
-# CONFIG_MWINCHIPC6 is not set
-# CONFIG_MWINCHIP3D is not set
-# CONFIG_MGEODEGX1 is not set
-# CONFIG_MGEODE_LX is not set
-# CONFIG_MCYRIXIII is not set
-# CONFIG_MVIAC3_2 is not set
-# CONFIG_MVIAC7 is not set
-# CONFIG_MPSC is not set
-# CONFIG_MCORE2 is not set
-# CONFIG_MATOM is not set
-# CONFIG_GENERIC_CPU is not set
-CONFIG_X86_GENERIC=y
-CONFIG_X86_CPU=y
-CONFIG_X86_L1_CACHE_BYTES=64
-CONFIG_X86_INTERNODE_CACHE_BYTES=64
-CONFIG_X86_CMPXCHG=y
-CONFIG_X86_L1_CACHE_SHIFT=5
-CONFIG_X86_XADD=y
-# CONFIG_X86_PPRO_FENCE is not set
-CONFIG_X86_WP_WORKS_OK=y
-CONFIG_X86_INVLPG=y
-CONFIG_X86_BSWAP=y
-CONFIG_X86_POPAD_OK=y
-CONFIG_X86_ALIGNMENT_16=y
-CONFIG_X86_INTEL_USERCOPY=y
-CONFIG_X86_CMPXCHG64=y
-CONFIG_X86_MINIMUM_CPU_FAMILY=5
-CONFIG_CPU_SUP_INTEL=y
-CONFIG_CPU_SUP_CYRIX_32=y
-CONFIG_CPU_SUP_AMD=y
-CONFIG_CPU_SUP_CENTAUR=y
-CONFIG_CPU_SUP_TRANSMETA_32=y
-CONFIG_DMI=y
-CONFIG_SWIOTLB=y
-CONFIG_IOMMU_HELPER=y
-# CONFIG_IOMMU_API is not set
-CONFIG_NR_CPUS=8
-CONFIG_IRQ_TIME_ACCOUNTING=y
-CONFIG_PREEMPT_NONE=y
-# CONFIG_PREEMPT_VOLUNTARY is not set
-# CONFIG_PREEMPT is not set
-CONFIG_X86_LOCAL_APIC=y
-CONFIG_X86_IO_APIC=y
-# CONFIG_X86_MCE is not set
-CONFIG_VM86=y
-CONFIG_TOSHIBA=m
-CONFIG_I8K=m
-CONFIG_MICROCODE=m
-CONFIG_MICROCODE_OLD_INTERFACE=y
-CONFIG_X86_MSR=m
-CONFIG_X86_CPUID=y
-# CONFIG_NOHIGHMEM is not set
-CONFIG_HIGHMEM4G=y
-# CONFIG_HIGHMEM64G is not set
-CONFIG_PAGE_OFFSET=0xC0000000
-CONFIG_HIGHMEM=y
-CONFIG_X86_PAE=y
-CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
-CONFIG_ILLEGAL_POINTER_VALUE=0
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-CONFIG_PAGEFLAGS_EXTENDED=y
-CONFIG_SPLIT_PTLOCK_CPUS=4
-CONFIG_PHYS_ADDR_T_64BIT=y
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_BOUNCE=y
-CONFIG_VIRT_TO_BUS=y
-CONFIG_HAVE_MLOCK=y
-CONFIG_HAVE_MLOCKED_PAGE_BIT=y
-CONFIG_KSM=y
-CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
-# CONFIG_HIGHPTE is not set
-CONFIG_MTRR=y
-# CONFIG_X86_PAT is not set
-CONFIG_ARCH_RANDOM=y
-CONFIG_SECCOMP=y
-CONFIG_CC_STACKPROTECTOR=y
-# CONFIG_HZ_100 is not set
-# CONFIG_HZ_250 is not set
-CONFIG_HZ_300=y
-# CONFIG_HZ_1000 is not set
-CONFIG_HZ=300
-# CONFIG_SCHED_HRTICK is not set
-# CONFIG_KEXEC is not set
-CONFIG_PHYSICAL_START=0x100000
-CONFIG_PHYSICAL_ALIGN=0x2000
-CONFIG_HOTPLUG_CPU=y
-CONFIG_COMPAT_VDSO=y
-# CONFIG_CMDLINE_BOOL is not set
-
-#
-# Power management and ACPI options
-#
-CONFIG_PM=y
-# CONFIG_PM_DEBUG is not set
-CONFIG_PM_SLEEP_SMP=y
-CONFIG_PM_SLEEP=y
-CONFIG_SUSPEND=y
-CONFIG_SUSPEND_FREEZER=y
-CONFIG_PM_RUNTIME=y
-CONFIG_ACPI=y
-CONFIG_ACPI_SLEEP=y
-# CONFIG_ACPI_PROCFS is not set
-CONFIG_ACPI_PROCFS_POWER=y
-CONFIG_ACPI_POWER_METER=m
-CONFIG_ACPI_SYSFS_POWER=y
-CONFIG_ACPI_PROC_EVENT=y
-CONFIG_ACPI_AC=m
-CONFIG_ACPI_BATTERY=m
-CONFIG_ACPI_BUTTON=m
-CONFIG_ACPI_VIDEO=m
-CONFIG_ACPI_FAN=m
-CONFIG_ACPI_DOCK=y
-CONFIG_ACPI_PROCESSOR=m
-CONFIG_ACPI_HOTPLUG_CPU=y
-CONFIG_ACPI_PROCESSOR_AGGREGATOR=m
-CONFIG_ACPI_THERMAL=m
-CONFIG_ACPI_CUSTOM_DSDT_FILE=""
-# CONFIG_ACPI_CUSTOM_DSDT is not set
-CONFIG_ACPI_BLACKLIST_YEAR=0
-# CONFIG_ACPI_DEBUG is not set
-CONFIG_ACPI_PCI_SLOT=m
-CONFIG_ACPI_CONTAINER=m
-CONFIG_ACPI_SBS=m
-CONFIG_ACPI_PV_SLEEP=y
-CONFIG_PROCESSOR_EXTERNAL_CONTROL=y
-# CONFIG_SFI is not set
-
-#
-# CPU Frequency scaling
-#
-
-#
-# Bus options (PCI etc.)
-#
-CONFIG_PCI=y
-# CONFIG_PCI_GOBIOS is not set
-# CONFIG_PCI_GOMMCONFIG is not set
-# CONFIG_PCI_GODIRECT is not set
-# CONFIG_PCI_GOOLPC is not set
-# CONFIG_PCI_GOXEN_FE is not set
-CONFIG_PCI_GOANY=y
-CONFIG_PCI_DIRECT=y
-CONFIG_PCI_MMCONFIG=y
-CONFIG_PCI_DOMAINS=y
-CONFIG_XEN_PCIDEV_FRONTEND=y
-# CONFIG_XEN_PCIDEV_FE_DEBUG is not set
-CONFIG_PCIEPORTBUS=y
-CONFIG_PCIEAER=y
-# CONFIG_PCIE_ECRC is not set
-# CONFIG_PCIEAER_INJECT is not set
-CONFIG_PCIEASPM=y
-# CONFIG_PCIEASPM_DEBUG is not set
-CONFIG_ARCH_SUPPORTS_MSI=y
-CONFIG_PCI_MSI=y
-CONFIG_PCI_LEGACY=y
-# CONFIG_PCI_DEBUG is not set
-CONFIG_PCI_GUESTDEV=y
-CONFIG_PCI_IOMULTI=y
-CONFIG_PCI_RESERVE=y
-CONFIG_PCI_STUB=m
-CONFIG_PCI_IOV=y
-CONFIG_ISA_DMA_API=y
-CONFIG_SCx200=m
-CONFIG_SCx200HR_TIMER=m
-# CONFIG_OLPC is not set
-CONFIG_K8_NB=y
-CONFIG_PCCARD=m
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=m
-CONFIG_PCMCIA_LOAD_CIS=y
-CONFIG_PCMCIA_IOCTL=y
-CONFIG_CARDBUS=y
-
-#
-# PC-card bridges
-#
-CONFIG_YENTA=m
-CONFIG_YENTA_O2=y
-CONFIG_YENTA_RICOH=y
-CONFIG_YENTA_TI=y
-CONFIG_YENTA_ENE_TUNE=y
-CONFIG_YENTA_TOSHIBA=y
-CONFIG_PD6729=m
-CONFIG_I82092=m
-CONFIG_PCCARD_NONSTATIC=m
-# CONFIG_HOTPLUG_PCI is not set
-
-#
-# Executable file formats / Emulations
-#
-CONFIG_BINFMT_ELF=y
-# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
-CONFIG_HAVE_AOUT=y
-# CONFIG_BINFMT_AOUT is not set
-# CONFIG_BINFMT_MISC is not set
-CONFIG_HAVE_ATOMIC_IOMAP=y
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-CONFIG_XFRM_USER=m
-# CONFIG_XFRM_SUB_POLICY is not set
-CONFIG_XFRM_MIGRATE=y
-CONFIG_XFRM_STATISTICS=y
-CONFIG_XFRM_IPCOMP=m
-CONFIG_NET_KEY=m
-CONFIG_NET_KEY_MIGRATE=y
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-CONFIG_IP_ADVANCED_ROUTER=y
-CONFIG_ASK_IP_FIB_HASH=y
-# CONFIG_IP_FIB_TRIE is not set
-CONFIG_IP_FIB_HASH=y
-CONFIG_IP_MULTIPLE_TABLES=y
-CONFIG_IP_ROUTE_MULTIPATH=y
-CONFIG_IP_ROUTE_VERBOSE=y
-# CONFIG_IP_PNP is not set
-CONFIG_NET_IPIP=m
-CONFIG_NET_IPGRE=m
-CONFIG_NET_IPGRE_BROADCAST=y
-CONFIG_IP_MROUTE=y
-CONFIG_IP_PIMSM_V1=y
-CONFIG_IP_PIMSM_V2=y
-CONFIG_ARPD=y
-CONFIG_SYN_COOKIES=y
-CONFIG_INET_AH=m
-CONFIG_INET_ESP=m
-CONFIG_INET_IPCOMP=m
-CONFIG_INET_XFRM_TUNNEL=m
-CONFIG_INET_TUNNEL=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=y
-CONFIG_INET_XFRM_MODE_TUNNEL=y
-CONFIG_INET_XFRM_MODE_BEET=y
-CONFIG_INET_LRO=y
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-CONFIG_TCP_CONG_ADVANCED=y
-CONFIG_TCP_CONG_BIC=m
-CONFIG_TCP_CONG_CUBIC=m
-CONFIG_TCP_CONG_WESTWOOD=m
-CONFIG_TCP_CONG_HTCP=m
-CONFIG_TCP_CONG_HSTCP=m
-CONFIG_TCP_CONG_HYBLA=m
-CONFIG_TCP_CONG_VEGAS=m
-CONFIG_TCP_CONG_SCALABLE=m
-CONFIG_TCP_CONG_LP=m
-CONFIG_TCP_CONG_VENO=m
-CONFIG_TCP_CONG_YEAH=m
-CONFIG_TCP_CONG_ILLINOIS=m
-# CONFIG_DEFAULT_BIC is not set
-# CONFIG_DEFAULT_CUBIC is not set
-# CONFIG_DEFAULT_HTCP is not set
-# CONFIG_DEFAULT_VEGAS is not set
-# CONFIG_DEFAULT_WESTWOOD is not set
-CONFIG_DEFAULT_RENO=y
-CONFIG_DEFAULT_TCP_CONG="reno"
-# CONFIG_TCP_MD5SIG is not set
-CONFIG_IPV6=y
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_IPV6_MIP6=m
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
-CONFIG_IPV6_SIT=m
-CONFIG_IPV6_NDISC_NODETYPE=y
-CONFIG_IPV6_TUNNEL=m
-CONFIG_IPV6_MULTIPLE_TABLES=y
-# CONFIG_IPV6_SUBTREES is not set
-# CONFIG_IPV6_MROUTE is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_NETFILTER_ADVANCED=y
-CONFIG_BRIDGE_NETFILTER=y
-
-#
-# Core Netfilter Configuration
-#
-CONFIG_NETFILTER_NETLINK=m
-CONFIG_NETFILTER_NETLINK_QUEUE=m
-CONFIG_NETFILTER_NETLINK_LOG=m
-CONFIG_NF_CONNTRACK=m
-CONFIG_NF_CT_ACCT=y
-CONFIG_NF_CONNTRACK_MARK=y
-CONFIG_NF_CONNTRACK_EVENTS=y
-CONFIG_NF_CT_PROTO_DCCP=m
-CONFIG_NF_CT_PROTO_GRE=m
-CONFIG_NF_CT_PROTO_SCTP=m
-CONFIG_NF_CT_PROTO_UDPLITE=m
-CONFIG_NF_CONNTRACK_AMANDA=m
-CONFIG_NF_CONNTRACK_FTP=m
-CONFIG_NF_CONNTRACK_H323=m
-CONFIG_NF_CONNTRACK_IRC=m
-CONFIG_NF_CONNTRACK_NETBIOS_NS=m
-CONFIG_NF_CONNTRACK_PPTP=m
-CONFIG_NF_CONNTRACK_SANE=m
-CONFIG_NF_CONNTRACK_SIP=m
-CONFIG_NF_CONNTRACK_TFTP=m
-CONFIG_NF_CT_NETLINK=m
-CONFIG_NETFILTER_TPROXY=m
-CONFIG_NETFILTER_XTABLES=m
-CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
-CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
-CONFIG_NETFILTER_XT_TARGET_DSCP=m
-CONFIG_NETFILTER_XT_TARGET_HL=m
-CONFIG_NETFILTER_XT_TARGET_LED=m
-CONFIG_NETFILTER_XT_TARGET_IMQ=m
-CONFIG_NETFILTER_XT_TARGET_MARK=m
-CONFIG_NETFILTER_XT_TARGET_NFLOG=m
-CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
-CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
-CONFIG_NETFILTER_XT_TARGET_RATEEST=m
-CONFIG_NETFILTER_XT_TARGET_TPROXY=m
-CONFIG_NETFILTER_XT_TARGET_TRACE=m
-CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
-CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
-CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
-CONFIG_NETFILTER_XT_MATCH_COMMENT=m
-CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
-CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
-CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
-CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
-CONFIG_NETFILTER_XT_MATCH_DCCP=m
-CONFIG_NETFILTER_XT_MATCH_DSCP=m
-CONFIG_NETFILTER_XT_MATCH_ESP=m
-CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
-CONFIG_NETFILTER_XT_MATCH_HELPER=m
-CONFIG_NETFILTER_XT_MATCH_HL=m
-CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
-CONFIG_NETFILTER_XT_MATCH_LENGTH=m
-CONFIG_NETFILTER_XT_MATCH_LIMIT=m
-CONFIG_NETFILTER_XT_MATCH_MAC=m
-CONFIG_NETFILTER_XT_MATCH_MARK=m
-CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
-CONFIG_NETFILTER_XT_MATCH_OWNER=m
-CONFIG_NETFILTER_XT_MATCH_POLICY=m
-CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
-CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
-CONFIG_NETFILTER_XT_MATCH_QUOTA=m
-CONFIG_NETFILTER_XT_MATCH_RATEEST=m
-CONFIG_NETFILTER_XT_MATCH_REALM=m
-CONFIG_NETFILTER_XT_MATCH_RECENT=m
-CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT=y
-CONFIG_NETFILTER_XT_MATCH_SCTP=m
-CONFIG_NETFILTER_XT_MATCH_SOCKET=m
-CONFIG_NETFILTER_XT_MATCH_STATE=m
-CONFIG_NETFILTER_XT_MATCH_LAYER7=m
-# CONFIG_NETFILTER_XT_MATCH_LAYER7_DEBUG is not set
-CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
-CONFIG_NETFILTER_XT_MATCH_STRING=m
-CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
-CONFIG_NETFILTER_XT_MATCH_TIME=m
-CONFIG_NETFILTER_XT_MATCH_U32=m
-CONFIG_NETFILTER_XT_MATCH_OSF=m
-CONFIG_IP_VS=m
-CONFIG_IP_VS_IPV6=y
-# CONFIG_IP_VS_DEBUG is not set
-CONFIG_IP_VS_TAB_BITS=12
-
-#
-# IPVS transport protocol load balancing support
-#
-CONFIG_IP_VS_PROTO_TCP=y
-CONFIG_IP_VS_PROTO_UDP=y
-CONFIG_IP_VS_PROTO_AH_ESP=y
-CONFIG_IP_VS_PROTO_ESP=y
-CONFIG_IP_VS_PROTO_AH=y
-
-#
-# IPVS scheduler
-#
-CONFIG_IP_VS_RR=m
-CONFIG_IP_VS_WRR=m
-CONFIG_IP_VS_LC=m
-CONFIG_IP_VS_WLC=m
-CONFIG_IP_VS_LBLC=m
-CONFIG_IP_VS_LBLCR=m
-CONFIG_IP_VS_DH=m
-CONFIG_IP_VS_SH=m
-CONFIG_IP_VS_SED=m
-CONFIG_IP_VS_NQ=m
-
-#
-# IPVS application helper
-#
-CONFIG_IP_VS_FTP=m
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_NF_DEFRAG_IPV4=m
-CONFIG_NF_CONNTRACK_IPV4=m
-CONFIG_NF_CONNTRACK_PROC_COMPAT=y
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_NF_NAT=m
-CONFIG_NF_NAT_NEEDED=y
-CONFIG_IP_NF_TARGET_MASQUERADE=m
-CONFIG_IP_NF_TARGET_NETMAP=m
-CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_NF_NAT_SNMP_BASIC=m
-CONFIG_NF_NAT_PROTO_DCCP=m
-CONFIG_NF_NAT_PROTO_GRE=m
-CONFIG_NF_NAT_PROTO_UDPLITE=m
-CONFIG_NF_NAT_PROTO_SCTP=m
-CONFIG_NF_NAT_FTP=m
-CONFIG_NF_NAT_IRC=m
-CONFIG_NF_NAT_TFTP=m
-CONFIG_NF_NAT_AMANDA=m
-CONFIG_NF_NAT_PPTP=m
-CONFIG_NF_NAT_H323=m
-CONFIG_NF_NAT_SIP=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_CLUSTERIP=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-CONFIG_IP_NF_MATCH_IPP2P=m
-
-#
-# IPv6: Netfilter Configuration
-#
-CONFIG_NF_CONNTRACK_IPV6=m
-CONFIG_IP6_NF_QUEUE=m
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_AH=m
-CONFIG_IP6_NF_MATCH_EUI64=m
-CONFIG_IP6_NF_MATCH_FRAG=m
-CONFIG_IP6_NF_MATCH_OPTS=m
-CONFIG_IP6_NF_MATCH_HL=m
-CONFIG_IP6_NF_MATCH_IPV6HEADER=m
-CONFIG_IP6_NF_MATCH_MH=m
-CONFIG_IP6_NF_MATCH_RT=m
-CONFIG_IP6_NF_TARGET_HL=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_REJECT=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_RAW=m
-CONFIG_BRIDGE_NF_EBTABLES=m
-CONFIG_BRIDGE_EBT_BROUTE=m
-CONFIG_BRIDGE_EBT_T_FILTER=m
-CONFIG_BRIDGE_EBT_T_NAT=m
-CONFIG_BRIDGE_EBT_802_3=m
-CONFIG_BRIDGE_EBT_AMONG=m
-CONFIG_BRIDGE_EBT_ARP=m
-CONFIG_BRIDGE_EBT_IP=m
-CONFIG_BRIDGE_EBT_IP6=m
-CONFIG_BRIDGE_EBT_LIMIT=m
-CONFIG_BRIDGE_EBT_MARK=m
-CONFIG_BRIDGE_EBT_PKTTYPE=m
-CONFIG_BRIDGE_EBT_STP=m
-CONFIG_BRIDGE_EBT_VLAN=m
-CONFIG_BRIDGE_EBT_ARPREPLY=m
-CONFIG_BRIDGE_EBT_DNAT=m
-CONFIG_BRIDGE_EBT_MARK_T=m
-CONFIG_BRIDGE_EBT_REDIRECT=m
-CONFIG_BRIDGE_EBT_SNAT=m
-CONFIG_BRIDGE_EBT_LOG=m
-CONFIG_BRIDGE_EBT_ULOG=m
-CONFIG_BRIDGE_EBT_NFLOG=m
-# CONFIG_IP_DCCP is not set
-# CONFIG_IP_SCTP is not set
-# CONFIG_RDS is not set
-# CONFIG_TIPC is not set
-CONFIG_ATM=m
-CONFIG_ATM_CLIP=m
-CONFIG_ATM_CLIP_NO_ICMP=y
-# CONFIG_ATM_LANE is not set
-CONFIG_ATM_BR2684=m
-# CONFIG_ATM_BR2684_IPFILTER is not set
-CONFIG_STP=m
-CONFIG_GARP=m
-CONFIG_BRIDGE=m
-CONFIG_NET_DSA=y
-CONFIG_NET_DSA_TAG_DSA=y
-CONFIG_NET_DSA_TAG_EDSA=y
-CONFIG_NET_DSA_TAG_TRAILER=y
-CONFIG_NET_DSA_MV88E6XXX=y
-CONFIG_NET_DSA_MV88E6060=y
-CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y
-CONFIG_NET_DSA_MV88E6131=y
-CONFIG_NET_DSA_MV88E6123_61_65=y
-CONFIG_VLAN_8021Q=m
-CONFIG_VLAN_8021Q_GVRP=y
-# CONFIG_DECNET is not set
-CONFIG_LLC=m
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_PHONET is not set
-CONFIG_IEEE802154=m
-CONFIG_NET_SCHED=y
-
-#
-# Queueing/Scheduling
-#
-CONFIG_NET_SCH_CBQ=m
-CONFIG_NET_SCH_HTB=m
-CONFIG_NET_SCH_HFSC=m
-CONFIG_NET_SCH_ATM=m
-CONFIG_NET_SCH_PRIO=m
-CONFIG_NET_SCH_MULTIQ=m
-CONFIG_NET_SCH_RED=m
-CONFIG_NET_SCH_SFQ=m
-CONFIG_NET_SCH_TEQL=m
-CONFIG_NET_SCH_TBF=m
-CONFIG_NET_SCH_GRED=m
-CONFIG_NET_SCH_DSMARK=m
-CONFIG_NET_SCH_NETEM=m
-CONFIG_NET_SCH_DRR=m
-CONFIG_NET_SCH_INGRESS=m
-
-#
-# Classification
-#
-CONFIG_NET_CLS=y
-CONFIG_NET_CLS_BASIC=m
-CONFIG_NET_CLS_TCINDEX=m
-CONFIG_NET_CLS_ROUTE4=m
-CONFIG_NET_CLS_ROUTE=y
-CONFIG_NET_CLS_FW=m
-CONFIG_NET_CLS_U32=m
-CONFIG_CLS_U32_PERF=y
-CONFIG_CLS_U32_MARK=y
-CONFIG_NET_CLS_RSVP=m
-CONFIG_NET_CLS_RSVP6=m
-CONFIG_NET_CLS_FLOW=m
-CONFIG_NET_EMATCH=y
-CONFIG_NET_EMATCH_STACK=32
-CONFIG_NET_EMATCH_CMP=m
-CONFIG_NET_EMATCH_NBYTE=m
-CONFIG_NET_EMATCH_U32=m
-CONFIG_NET_EMATCH_META=m
-CONFIG_NET_EMATCH_TEXT=m
-CONFIG_NET_CLS_ACT=y
-CONFIG_NET_ACT_POLICE=m
-CONFIG_NET_ACT_GACT=m
-CONFIG_GACT_PROB=y
-CONFIG_NET_ACT_MIRRED=m
-CONFIG_NET_ACT_IPT=m
-CONFIG_NET_ACT_NAT=m
-CONFIG_NET_ACT_PEDIT=m
-# CONFIG_NET_ACT_SIMP is not set
-CONFIG_NET_ACT_SKBEDIT=m
-CONFIG_NET_CLS_IND=y
-CONFIG_NET_SCH_FIFO=y
-# CONFIG_DCB is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-# CONFIG_CAN is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-CONFIG_IRTTY_SIR=m
-
-#
-# Dongle support
-#
-# CONFIG_DONGLE is not set
-CONFIG_KINGSUN_DONGLE=m
-CONFIG_KSDAZZLE_DONGLE=m
-CONFIG_KS959_DONGLE=m
-
-#
-# FIR device drivers
-#
-CONFIG_USB_IRDA=m
-CONFIG_SIGMATEL_FIR=m
-CONFIG_NSC_FIR=m
-CONFIG_WINBOND_FIR=m
-CONFIG_TOSHIBA_FIR=m
-CONFIG_SMC_IRCC_FIR=m
-CONFIG_ALI_FIR=m
-CONFIG_VLSI_FIR=m
-CONFIG_VIA_FIR=m
-CONFIG_MCS_FIR=m
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_CMTP=m
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIBTUSB=m
-CONFIG_BT_HCIBTSDIO=m
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIUART_LL=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=m
-CONFIG_BT_HCIVHCI=m
-CONFIG_BT_MRVL=m
-CONFIG_BT_MRVL_SDIO=m
-CONFIG_AF_RXRPC=m
-# CONFIG_AF_RXRPC_DEBUG is not set
-CONFIG_RXKAD=m
-CONFIG_FIB_RULES=y
-CONFIG_WIRELESS=y
-CONFIG_CFG80211=m
-# CONFIG_NL80211_TESTMODE is not set
-# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
-# CONFIG_CFG80211_REG_DEBUG is not set
-# CONFIG_CFG80211_DEFAULT_PS is not set
-CONFIG_CFG80211_DEFAULT_PS_VALUE=0
-CONFIG_WIRELESS_OLD_REGULATORY=y
-CONFIG_WIRELESS_EXT=y
-CONFIG_WIRELESS_EXT_SYSFS=y
-CONFIG_LIB80211=m
-CONFIG_LIB80211_CRYPT_WEP=m
-CONFIG_LIB80211_CRYPT_CCMP=m
-CONFIG_LIB80211_CRYPT_TKIP=m
-# CONFIG_LIB80211_DEBUG is not set
-CONFIG_MAC80211=m
-CONFIG_MAC80211_HAS_RC=y
-CONFIG_MAC80211_RC_MINSTREL=y
-# CONFIG_MAC80211_RC_DEFAULT_PID is not set
-CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
-CONFIG_MAC80211_RC_DEFAULT="minstrel"
-CONFIG_MAC80211_MESH=y
-CONFIG_MAC80211_LEDS=y
-# CONFIG_MAC80211_DEBUG_MENU is not set
-# CONFIG_WIMAX is not set
-CONFIG_RFKILL=m
-CONFIG_RFKILL_LEDS=y
-CONFIG_RFKILL_INPUT=y
-# CONFIG_NET_9P is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
-# CONFIG_DEVTMPFS is not set
-# CONFIG_STANDALONE is not set
-# CONFIG_PREVENT_FIRMWARE_BUILD is not set
-CONFIG_FW_LOADER=y
-# CONFIG_FIRMWARE_IN_KERNEL is not set
-CONFIG_EXTRA_FIRMWARE=""
-# CONFIG_DEBUG_DRIVER is not set
-# CONFIG_DEBUG_DEVRES is not set
-CONFIG_SYS_HYPERVISOR=y
-CONFIG_CONNECTOR=m
-CONFIG_MTD=m
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_TESTS=m
-CONFIG_MTD_CONCAT=m
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_AR7_PARTS=m
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=m
-CONFIG_MTD_BLKDEVS=m
-CONFIG_MTD_BLOCK=m
-# CONFIG_MTD_BLOCK_RO is not set
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-# CONFIG_SSFDC is not set
-# CONFIG_MTD_OOPS is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-CONFIG_MTD_PHYSMAP=m
-# CONFIG_MTD_PHYSMAP_COMPAT is not set
-# CONFIG_MTD_TS5500 is not set
-# CONFIG_MTD_INTEL_VR_NOR is not set
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-# CONFIG_MTD_NAND is not set
-# CONFIG_MTD_ONENAND is not set
-
-#
-# LPDDR flash memory drivers
-#
-CONFIG_MTD_LPDDR=m
-CONFIG_MTD_QINFO_PROBE=m
-
-#
-# UBI - Unsorted block images
-#
-CONFIG_MTD_UBI=m
-CONFIG_MTD_UBI_WL_THRESHOLD=4096
-CONFIG_MTD_UBI_BEB_RESERVE=1
-# CONFIG_MTD_UBI_GLUEBI is not set
-
-#
-# UBI debugging options
-#
-# CONFIG_MTD_UBI_DEBUG is not set
-CONFIG_PARPORT=m
-CONFIG_PARPORT_PC=m
-CONFIG_PARPORT_PC_FIFO=y
-CONFIG_PARPORT_PC_SUPERIO=y
-CONFIG_PARPORT_PC_PCMCIA=m
-# CONFIG_PARPORT_GSC is not set
-CONFIG_PARPORT_AX88796=m
-CONFIG_PARPORT_1284=y
-CONFIG_PARPORT_NOT_PC=y
-CONFIG_PNP=y
-# CONFIG_PNP_DEBUG_MESSAGES is not set
-
-#
-# Protocols
-#
-CONFIG_PNPACPI=y
-CONFIG_BLK_DEV=y
-CONFIG_BLK_DEV_FD=m
-# CONFIG_PARIDE is not set
-CONFIG_BLK_CPQ_DA=m
-CONFIG_BLK_CPQ_CISS_DA=m
-# CONFIG_CISS_SCSI_TAPE is not set
-CONFIG_BLK_DEV_DAC960=m
-# CONFIG_BLK_DEV_UMEM is not set
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-CONFIG_BLK_DEV_CRYPTOLOOP=m
-CONFIG_BLK_DEV_NBD=m
-CONFIG_BLK_DEV_OSD=m
-CONFIG_BLK_DEV_SX8=m
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=8
-CONFIG_BLK_DEV_RAM_SIZE=16384
-# CONFIG_BLK_DEV_XIP is not set
-# CONFIG_CDROM_PKTCDVD is not set
-CONFIG_ATA_OVER_ETH=m
-# CONFIG_BLK_DEV_HD is not set
-CONFIG_MISC_DEVICES=y
-# CONFIG_IBM_ASM is not set
-# CONFIG_PHANTOM is not set
-# CONFIG_SGI_IOC4 is not set
-CONFIG_TIFM_CORE=m
-CONFIG_TIFM_7XX1=m
-CONFIG_ICS932S401=m
-CONFIG_ENCLOSURE_SERVICES=m
-CONFIG_HP_ILO=m
-CONFIG_ISL29003=m
-CONFIG_C2PORT=m
-CONFIG_C2PORT_DURAMAR_2150=m
-
-#
-# EEPROM support
-#
-CONFIG_EEPROM_AT24=m
-CONFIG_EEPROM_LEGACY=m
-CONFIG_EEPROM_MAX6875=m
-CONFIG_EEPROM_93CX6=m
-CONFIG_CB710_CORE=m
-# CONFIG_CB710_DEBUG is not set
-CONFIG_CB710_DEBUG_ASSUMPTIONS=y
-CONFIG_HAVE_IDE=y
-# CONFIG_IDE is not set
-
-#
-# SCSI device support
-#
-CONFIG_RAID_ATTRS=y
-CONFIG_SCSI=m
-CONFIG_SCSI_DMA=y
-# CONFIG_SCSI_TGT is not set
-CONFIG_SCSI_NETLINK=y
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-CONFIG_BLK_DEV_SR=m
-CONFIG_BLK_DEV_SR_VENDOR=y
-CONFIG_CHR_DEV_SG=m
-CONFIG_CHR_DEV_SCH=m
-CONFIG_SCSI_ENCLOSURE=m
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-CONFIG_SCSI_SPI_ATTRS=m
-CONFIG_SCSI_FC_ATTRS=m
-CONFIG_SCSI_ISCSI_ATTRS=m
-CONFIG_SCSI_SAS_ATTRS=m
-CONFIG_SCSI_SAS_LIBSAS=m
-CONFIG_SCSI_SAS_ATA=y
-CONFIG_SCSI_SAS_HOST_SMP=y
-CONFIG_SCSI_SAS_LIBSAS_DEBUG=y
-CONFIG_SCSI_SRP_ATTRS=m
-CONFIG_SCSI_LOWLEVEL=y
-CONFIG_ISCSI_TCP=m
-CONFIG_SCSI_CXGB3_ISCSI=m
-CONFIG_SCSI_BNX2_ISCSI=m
-CONFIG_BE2ISCSI=m
-CONFIG_BLK_DEV_3W_XXXX_RAID=m
-CONFIG_SCSI_3W_9XXX=m
-CONFIG_SCSI_ACARD=m
-CONFIG_SCSI_AACRAID=m
-CONFIG_SCSI_AIC7XXX=m
-CONFIG_AIC7XXX_CMDS_PER_DEVICE=253
-CONFIG_AIC7XXX_RESET_DELAY_MS=15000
-# CONFIG_AIC7XXX_BUILD_FIRMWARE is not set
-# CONFIG_AIC7XXX_DEBUG_ENABLE is not set
-CONFIG_AIC7XXX_DEBUG_MASK=0
-# CONFIG_AIC7XXX_REG_PRETTY_PRINT is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-CONFIG_SCSI_AIC79XX=m
-CONFIG_AIC79XX_CMDS_PER_DEVICE=32
-CONFIG_AIC79XX_RESET_DELAY_MS=15000
-# CONFIG_AIC79XX_BUILD_FIRMWARE is not set
-# CONFIG_AIC79XX_DEBUG_ENABLE is not set
-CONFIG_AIC79XX_DEBUG_MASK=0
-# CONFIG_AIC79XX_REG_PRETTY_PRINT is not set
-CONFIG_SCSI_AIC94XX=m
-# CONFIG_AIC94XX_DEBUG is not set
-CONFIG_SCSI_MVSAS=m
-CONFIG_SCSI_MVSAS_DEBUG=y
-CONFIG_SCSI_DPT_I2O=m
-CONFIG_SCSI_ADVANSYS=m
-CONFIG_SCSI_ARCMSR=m
-# CONFIG_SCSI_ARCMSR_AER is not set
-CONFIG_MEGARAID_NEWGEN=y
-CONFIG_MEGARAID_MM=m
-CONFIG_MEGARAID_MAILBOX=m
-CONFIG_MEGARAID_LEGACY=m
-CONFIG_MEGARAID_SAS=m
-# CONFIG_SCSI_MPT2SAS is not set
-CONFIG_SCSI_HPTIOP=m
-CONFIG_SCSI_BUSLOGIC=m
-CONFIG_SCSI_FLASHPOINT=y
-CONFIG_LIBFC=m
-CONFIG_LIBFCOE=m
-CONFIG_FCOE=m
-CONFIG_FCOE_FNIC=m
-CONFIG_SCSI_DMX3191D=m
-CONFIG_SCSI_EATA=m
-CONFIG_SCSI_EATA_TAGGED_QUEUE=y
-CONFIG_SCSI_EATA_LINKED_COMMANDS=y
-CONFIG_SCSI_EATA_MAX_TAGS=16
-CONFIG_SCSI_FUTURE_DOMAIN=m
-CONFIG_SCSI_GDTH=m
-CONFIG_SCSI_IPS=m
-CONFIG_SCSI_INITIO=m
-CONFIG_SCSI_INIA100=m
-CONFIG_SCSI_PPA=m
-CONFIG_SCSI_IMM=m
-# CONFIG_SCSI_IZIP_EPP16 is not set
-# CONFIG_SCSI_IZIP_SLOW_CTR is not set
-CONFIG_SCSI_STEX=m
-CONFIG_SCSI_SYM53C8XX_2=m
-CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
-CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
-CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
-CONFIG_SCSI_SYM53C8XX_MMIO=y
-CONFIG_SCSI_IPR=m
-CONFIG_SCSI_IPR_TRACE=y
-CONFIG_SCSI_IPR_DUMP=y
-CONFIG_SCSI_QLOGIC_1280=m
-CONFIG_SCSI_QLA_FC=m
-CONFIG_SCSI_QLA_ISCSI=m
-CONFIG_SCSI_LPFC=m
-CONFIG_SCSI_DC395x=m
-CONFIG_SCSI_DC390T=m
-CONFIG_SCSI_NSP32=m
-# CONFIG_SCSI_DEBUG is not set
-CONFIG_SCSI_PMCRAID=m
-# CONFIG_SCSI_SRP is not set
-CONFIG_SCSI_BFA_FC=m
-CONFIG_SCSI_LOWLEVEL_PCMCIA=y
-CONFIG_PCMCIA_AHA152X=m
-CONFIG_PCMCIA_FDOMAIN=m
-CONFIG_PCMCIA_NINJA_SCSI=m
-CONFIG_PCMCIA_QLOGIC=m
-CONFIG_PCMCIA_SYM53C500=m
-CONFIG_SCSI_DH=m
-CONFIG_SCSI_DH_RDAC=m
-CONFIG_SCSI_DH_HP_SW=m
-CONFIG_SCSI_DH_EMC=m
-CONFIG_SCSI_DH_ALUA=m
-CONFIG_SCSI_OSD_INITIATOR=m
-CONFIG_SCSI_OSD_ULD=m
-CONFIG_SCSI_OSD_DPRINT_SENSE=1
-# CONFIG_SCSI_OSD_DEBUG is not set
-CONFIG_ATA=m
-# CONFIG_ATA_NONSTANDARD is not set
-CONFIG_ATA_VERBOSE_ERROR=y
-CONFIG_ATA_ACPI=y
-CONFIG_SATA_PMP=y
-CONFIG_SATA_AHCI=m
-CONFIG_SATA_SIL24=m
-CONFIG_ATA_SFF=y
-CONFIG_SATA_SVW=m
-CONFIG_ATA_PIIX=m
-CONFIG_SATA_MV=m
-CONFIG_SATA_NV=m
-CONFIG_PDC_ADMA=m
-CONFIG_SATA_QSTOR=m
-CONFIG_SATA_PROMISE=m
-CONFIG_SATA_SX4=m
-CONFIG_SATA_SIL=m
-CONFIG_SATA_SIS=m
-CONFIG_SATA_ULI=m
-CONFIG_SATA_VIA=m
-CONFIG_SATA_VITESSE=m
-CONFIG_SATA_INIC162X=m
-CONFIG_PATA_ACPI=m
-CONFIG_PATA_ALI=m
-CONFIG_PATA_AMD=m
-CONFIG_PATA_ARTOP=m
-CONFIG_PATA_ATP867X=m
-CONFIG_PATA_ATIIXP=m
-CONFIG_PATA_CMD640_PCI=m
-CONFIG_PATA_CMD64X=m
-CONFIG_PATA_CS5520=m
-CONFIG_PATA_CS5530=m
-CONFIG_PATA_CS5535=m
-CONFIG_PATA_CS5536=m
-CONFIG_PATA_CYPRESS=m
-CONFIG_PATA_EFAR=m
-CONFIG_ATA_GENERIC=m
-CONFIG_PATA_HPT366=m
-CONFIG_PATA_HPT37X=m
-CONFIG_PATA_HPT3X2N=m
-CONFIG_PATA_HPT3X3=m
-CONFIG_PATA_HPT3X3_DMA=y
-CONFIG_PATA_IT821X=m
-CONFIG_PATA_IT8213=m
-CONFIG_PATA_JMICRON=m
-CONFIG_PATA_TRIFLEX=m
-CONFIG_PATA_MARVELL=m
-CONFIG_PATA_MPIIX=m
-CONFIG_PATA_OLDPIIX=m
-CONFIG_PATA_NETCELL=m
-CONFIG_PATA_NINJA32=m
-CONFIG_PATA_NS87410=m
-CONFIG_PATA_NS87415=m
-CONFIG_PATA_OPTI=m
-CONFIG_PATA_OPTIDMA=m
-CONFIG_PATA_PCMCIA=m
-CONFIG_PATA_PDC_OLD=m
-CONFIG_PATA_RADISYS=m
-CONFIG_PATA_RDC=m
-CONFIG_PATA_RZ1000=m
-CONFIG_PATA_SC1200=m
-CONFIG_PATA_SERVERWORKS=m
-CONFIG_PATA_PDC2027X=m
-CONFIG_PATA_SIL680=m
-CONFIG_PATA_SIS=m
-CONFIG_PATA_VIA=m
-CONFIG_PATA_WINBOND=m
-CONFIG_PATA_SCH=m
-CONFIG_MD=y
-CONFIG_BLK_DEV_MD=m
-CONFIG_MD_LINEAR=m
-CONFIG_MD_RAID0=m
-CONFIG_MD_RAID1=m
-CONFIG_MD_RAID10=m
-CONFIG_MD_RAID456=m
-# CONFIG_MULTICORE_RAID456 is not set
-CONFIG_MD_RAID6_PQ=m
-# CONFIG_ASYNC_RAID6_TEST is not set
-CONFIG_MD_MULTIPATH=m
-# CONFIG_MD_FAULTY is not set
-CONFIG_BLK_DEV_DM=m
-# CONFIG_DM_DEBUG is not set
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_LOG_USERSPACE=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_QL=m
-CONFIG_DM_MULTIPATH_ST=m
-CONFIG_DM_DELAY=m
-CONFIG_DM_UEVENT=y
-CONFIG_FUSION=y
-CONFIG_FUSION_SPI=m
-CONFIG_FUSION_FC=m
-CONFIG_FUSION_SAS=m
-CONFIG_FUSION_MAX_SGE=128
-CONFIG_FUSION_CTL=m
-# CONFIG_FUSION_LOGGING is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# You can enable one or both FireWire driver stacks.
-#
-
-#
-# See the help texts for more information.
-#
-CONFIG_FIREWIRE=m
-CONFIG_FIREWIRE_OHCI=m
-CONFIG_FIREWIRE_OHCI_DEBUG=y
-CONFIG_FIREWIRE_SBP2=m
-CONFIG_FIREWIRE_NET=m
-# CONFIG_IEEE1394 is not set
-# CONFIG_I2O is not set
-# CONFIG_MACINTOSH_DRIVERS is not set
-CONFIG_NETDEVICES=y
-CONFIG_IFB=m
-CONFIG_DUMMY=m
-CONFIG_BONDING=m
-CONFIG_MACVLAN=m
-CONFIG_EQUALIZER=m
-CONFIG_IMQ=m
-# CONFIG_IMQ_BEHAVIOR_AA is not set
-CONFIG_IMQ_BEHAVIOR_AB=y
-# CONFIG_IMQ_BEHAVIOR_BA is not set
-# CONFIG_IMQ_BEHAVIOR_BB is not set
-CONFIG_IMQ_NUM_DEVS=2
-CONFIG_TUN=m
-CONFIG_VETH=m
-CONFIG_NET_SB1000=m
-# CONFIG_ARCNET is not set
-CONFIG_PHYLIB=y
-
-#
-# MII PHY device drivers
-#
-CONFIG_MARVELL_PHY=m
-CONFIG_DAVICOM_PHY=m
-CONFIG_QSEMI_PHY=m
-CONFIG_LXT_PHY=m
-CONFIG_CICADA_PHY=m
-CONFIG_VITESSE_PHY=m
-CONFIG_SMSC_PHY=m
-CONFIG_BROADCOM_PHY=m
-CONFIG_ICPLUS_PHY=m
-CONFIG_REALTEK_PHY=m
-CONFIG_NATIONAL_PHY=m
-CONFIG_STE10XP=m
-CONFIG_LSI_ET1011C_PHY=m
-# CONFIG_FIXED_PHY is not set
-CONFIG_MDIO_BITBANG=m
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-CONFIG_HAPPYMEAL=m
-CONFIG_SUNGEM=m
-CONFIG_CASSINI=m
-CONFIG_NET_VENDOR_3COM=y
-CONFIG_VORTEX=m
-CONFIG_TYPHOON=m
-CONFIG_ETHOC=m
-CONFIG_DNET=m
-CONFIG_NET_TULIP=y
-CONFIG_DE2104X=m
-CONFIG_DE2104X_DSL=0
-CONFIG_TULIP=m
-# CONFIG_TULIP_MWI is not set
-# CONFIG_TULIP_MMIO is not set
-# CONFIG_TULIP_NAPI is not set
-CONFIG_DE4X5=m
-CONFIG_WINBOND_840=m
-CONFIG_DM9102=m
-CONFIG_ULI526X=m
-CONFIG_PCMCIA_XIRCOM=m
-CONFIG_HP100=m
-# CONFIG_IBM_NEW_EMAC_ZMII is not set
-# CONFIG_IBM_NEW_EMAC_RGMII is not set
-# CONFIG_IBM_NEW_EMAC_TAH is not set
-# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
-# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
-# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
-# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
-CONFIG_NET_PCI=y
-CONFIG_PCNET32=m
-CONFIG_AMD8111_ETH=m
-CONFIG_ADAPTEC_STARFIRE=m
-CONFIG_B44=m
-CONFIG_B44_PCI_AUTOSELECT=y
-CONFIG_B44_PCICORE_AUTOSELECT=y
-CONFIG_B44_PCI=y
-CONFIG_FORCEDETH=m
-# CONFIG_FORCEDETH_NAPI is not set
-CONFIG_E100=m
-CONFIG_FEALNX=m
-CONFIG_NATSEMI=m
-CONFIG_NE2K_PCI=m
-CONFIG_8139CP=m
-CONFIG_8139TOO=m
-# CONFIG_8139TOO_PIO is not set
-CONFIG_8139TOO_TUNE_TWISTER=y
-CONFIG_8139TOO_8129=y
-# CONFIG_8139_OLD_RX_RESET is not set
-CONFIG_R6040=m
-CONFIG_SIS900=m
-CONFIG_EPIC100=m
-CONFIG_SMSC9420=m
-CONFIG_SUNDANCE=m
-# CONFIG_SUNDANCE_MMIO is not set
-CONFIG_TLAN=m
-CONFIG_KS8842=m
-CONFIG_KS8851_MLL=m
-CONFIG_VIA_RHINE=m
-CONFIG_VIA_RHINE_MMIO=y
-CONFIG_SC92031=m
-CONFIG_NET_POCKET=y
-CONFIG_ATP=m
-CONFIG_DE600=m
-CONFIG_DE620=m
-CONFIG_ATL2=m
-CONFIG_NETDEV_1000=y
-CONFIG_ACENIC=m
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
-CONFIG_DL2K=m
-CONFIG_E1000=m
-CONFIG_E1000E=m
-CONFIG_IP1000=m
-CONFIG_IGB=m
-CONFIG_IGB_DCA=y
-CONFIG_IGBVF=m
-CONFIG_NS83820=m
-CONFIG_HAMACHI=m
-CONFIG_YELLOWFIN=m
-CONFIG_R8169=m
-CONFIG_R8169_VLAN=y
-CONFIG_SIS190=m
-CONFIG_SKGE=m
-CONFIG_SKY2=m
-CONFIG_VIA_VELOCITY=m
-CONFIG_TIGON3=m
-CONFIG_BNX2=m
-CONFIG_CNIC=m
-CONFIG_QLA3XXX=m
-CONFIG_ATL1=m
-CONFIG_ATL1E=m
-CONFIG_ATL1C=m
-CONFIG_JME=m
-CONFIG_NETDEV_10000=y
-CONFIG_MDIO=m
-CONFIG_CHELSIO_T1=m
-# CONFIG_CHELSIO_T1_1G is not set
-CONFIG_CHELSIO_T3_DEPENDS=y
-CONFIG_CHELSIO_T3=m
-CONFIG_ENIC=m
-CONFIG_IXGBE=m
-CONFIG_IXGBE_DCA=y
-CONFIG_IXGB=m
-CONFIG_S2IO=m
-CONFIG_VXGE=m
-# CONFIG_VXGE_DEBUG_TRACE_ALL is not set
-CONFIG_MYRI10GE=m
-CONFIG_MYRI10GE_DCA=y
-CONFIG_NETXEN_NIC=m
-CONFIG_NIU=m
-CONFIG_MLX4_EN=m
-CONFIG_MLX4_CORE=m
-CONFIG_MLX4_DEBUG=y
-CONFIG_TEHUTI=m
-CONFIG_BNX2X=m
-CONFIG_QLGE=m
-# CONFIG_SFC is not set
-CONFIG_BE2NET=m
-# CONFIG_TR is not set
-CONFIG_WLAN=y
-# CONFIG_WLAN_PRE80211 is not set
-CONFIG_WLAN_80211=y
-CONFIG_PCMCIA_RAYCS=m
-# CONFIG_LIBERTAS is not set
-# CONFIG_LIBERTAS_THINFIRM is not set
-CONFIG_AIRO=m
-CONFIG_ATMEL=m
-CONFIG_PCI_ATMEL=m
-CONFIG_PCMCIA_ATMEL=m
-CONFIG_AT76C50X_USB=m
-CONFIG_AIRO_CS=m
-CONFIG_PCMCIA_WL3501=m
-# CONFIG_PRISM54 is not set
-CONFIG_USB_ZD1201=m
-CONFIG_USB_NET_RNDIS_WLAN=m
-# CONFIG_RTL8180 is not set
-# CONFIG_RTL8187 is not set
-# CONFIG_ADM8211 is not set
-# CONFIG_MAC80211_HWSIM is not set
-# CONFIG_MWL8K is not set
-# CONFIG_P54_COMMON is not set
-# CONFIG_ATH_COMMON is not set
-# CONFIG_IPW2100 is not set
-# CONFIG_IPW2200 is not set
-# CONFIG_IWLWIFI is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_PLX=m
-CONFIG_HOSTAP_PCI=m
-CONFIG_HOSTAP_CS=m
-# CONFIG_B43 is not set
-# CONFIG_B43LEGACY is not set
-# CONFIG_ZD1211RW is not set
-# CONFIG_RT2X00 is not set
-# CONFIG_HERMES is not set
-# CONFIG_WL12XX is not set
-# CONFIG_IWM is not set
-
-#
-# Enable WiMAX (Networking options) to see the WiMAX drivers
-#
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-CONFIG_USB_NET_CDC_EEM=m
-CONFIG_USB_NET_DM9601=m
-CONFIG_USB_NET_SMSC95XX=m
-CONFIG_USB_NET_GL620A=m
-CONFIG_USB_NET_NET1080=m
-CONFIG_USB_NET_PLUSB=m
-CONFIG_USB_NET_MCS7830=m
-CONFIG_USB_NET_RNDIS_HOST=m
-CONFIG_USB_NET_CDC_SUBSET=m
-CONFIG_USB_ALI_M5632=y
-CONFIG_USB_AN2720=y
-CONFIG_USB_BELKIN=y
-CONFIG_USB_ARMLINUX=y
-CONFIG_USB_EPSON2888=y
-CONFIG_USB_KC2190=y
-CONFIG_USB_NET_ZAURUS=m
-CONFIG_USB_HSO=m
-CONFIG_USB_NET_INT51X1=m
-CONFIG_NET_PCMCIA=y
-CONFIG_PCMCIA_3C589=m
-CONFIG_PCMCIA_3C574=m
-CONFIG_PCMCIA_FMVJ18X=m
-CONFIG_PCMCIA_PCNET=m
-CONFIG_PCMCIA_NMCLAN=m
-CONFIG_PCMCIA_SMC91C92=m
-CONFIG_PCMCIA_XIRC2PS=m
-CONFIG_PCMCIA_AXNET=m
-# CONFIG_WAN is not set
-CONFIG_ATM_DRIVERS=y
-# CONFIG_ATM_DUMMY is not set
-CONFIG_ATM_TCP=m
-CONFIG_ATM_LANAI=m
-CONFIG_ATM_ENI=m
-CONFIG_ATM_ENI_DEBUG=y
-CONFIG_ATM_ENI_TUNE_BURST=y
-CONFIG_ATM_ENI_BURST_TX_16W=y
-CONFIG_ATM_ENI_BURST_TX_8W=y
-CONFIG_ATM_ENI_BURST_TX_4W=y
-CONFIG_ATM_ENI_BURST_TX_2W=y
-CONFIG_ATM_ENI_BURST_RX_16W=y
-CONFIG_ATM_ENI_BURST_RX_8W=y
-CONFIG_ATM_ENI_BURST_RX_4W=y
-CONFIG_ATM_ENI_BURST_RX_2W=y
-CONFIG_ATM_FIRESTREAM=m
-CONFIG_ATM_ZATM=m
-# CONFIG_ATM_ZATM_DEBUG is not set
-CONFIG_ATM_NICSTAR=m
-CONFIG_ATM_NICSTAR_USE_SUNI=y
-CONFIG_ATM_NICSTAR_USE_IDT77105=y
-CONFIG_ATM_IDT77252=m
-# CONFIG_ATM_IDT77252_DEBUG is not set
-# CONFIG_ATM_IDT77252_RCV_ALL is not set
-CONFIG_ATM_IDT77252_USE_SUNI=y
-CONFIG_ATM_AMBASSADOR=m
-# CONFIG_ATM_AMBASSADOR_DEBUG is not set
-CONFIG_ATM_HORIZON=m
-# CONFIG_ATM_HORIZON_DEBUG is not set
-CONFIG_ATM_IA=m
-# CONFIG_ATM_IA_DEBUG is not set
-CONFIG_ATM_FORE200E=m
-CONFIG_ATM_FORE200E_USE_TASKLET=y
-CONFIG_ATM_FORE200E_TX_RETRY=16
-CONFIG_ATM_FORE200E_DEBUG=0
-CONFIG_ATM_HE=m
-CONFIG_ATM_HE_USE_SUNI=y
-CONFIG_ATM_SOLOS=m
-CONFIG_IEEE802154_DRIVERS=m
-CONFIG_IEEE802154_FAKEHARD=m
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PLIP is not set
-CONFIG_PPP=m
-CONFIG_PPP_MULTILINK=y
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_ASYNC=m
-CONFIG_PPP_SYNC_TTY=m
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE=m
-CONFIG_PPPOE=m
-CONFIG_PPPOATM=m
-CONFIG_PPPOL2TP=m
-CONFIG_SLIP=m
-CONFIG_SLIP_COMPRESSED=y
-CONFIG_SLHC=m
-CONFIG_SLIP_SMART=y
-CONFIG_SLIP_MODE_SLIP6=y
-# CONFIG_NET_FC is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-CONFIG_ISDN=y
-CONFIG_ISDN_I4L=m
-CONFIG_MISDN=m
-CONFIG_MISDN_DSP=m
-CONFIG_MISDN_L1OIP=m
-
-#
-# mISDN hardware drivers
-#
-CONFIG_MISDN_HFCPCI=m
-CONFIG_MISDN_HFCMULTI=m
-CONFIG_MISDN_HFCUSB=m
-CONFIG_MISDN_AVMFRITZ=m
-CONFIG_MISDN_SPEEDFAX=m
-CONFIG_MISDN_INFINEON=m
-CONFIG_MISDN_W6692=m
-CONFIG_MISDN_NETJET=m
-CONFIG_MISDN_IPAC=m
-CONFIG_MISDN_ISAR=m
-CONFIG_ISDN_PPP=y
-CONFIG_ISDN_PPP_VJ=y
-CONFIG_ISDN_MPP=y
-CONFIG_IPPP_FILTER=y
-CONFIG_ISDN_PPP_BSDCOMP=m
-CONFIG_ISDN_AUDIO=y
-CONFIG_ISDN_TTY_FAX=y
-
-#
-# ISDN feature submodules
-#
-CONFIG_ISDN_DIVERSION=m
-
-#
-# ISDN4Linux hardware drivers
-#
-
-#
-# Passive cards
-#
-CONFIG_ISDN_DRV_HISAX=m
-
-#
-# D-channel protocol features
-#
-CONFIG_HISAX_EURO=y
-CONFIG_DE_AOC=y
-# CONFIG_HISAX_NO_SENDCOMPLETE is not set
-# CONFIG_HISAX_NO_LLC is not set
-# CONFIG_HISAX_NO_KEYPAD is not set
-CONFIG_HISAX_1TR6=y
-CONFIG_HISAX_NI1=y
-CONFIG_HISAX_MAX_CARDS=8
-
-#
-# HiSax supported cards
-#
-CONFIG_HISAX_16_3=y
-CONFIG_HISAX_TELESPCI=y
-CONFIG_HISAX_S0BOX=y
-CONFIG_HISAX_FRITZPCI=y
-CONFIG_HISAX_AVM_A1_PCMCIA=y
-CONFIG_HISAX_ELSA=y
-CONFIG_HISAX_DIEHLDIVA=y
-CONFIG_HISAX_SEDLBAUER=y
-CONFIG_HISAX_NETJET=y
-CONFIG_HISAX_NETJET_U=y
-CONFIG_HISAX_NICCY=y
-CONFIG_HISAX_BKM_A4T=y
-CONFIG_HISAX_SCT_QUADRO=y
-CONFIG_HISAX_GAZEL=y
-CONFIG_HISAX_HFC_PCI=y
-CONFIG_HISAX_W6692=y
-CONFIG_HISAX_HFC_SX=y
-CONFIG_HISAX_ENTERNOW_PCI=y
-CONFIG_HISAX_DEBUG=y
-
-#
-# HiSax PCMCIA card service modules
-#
-CONFIG_HISAX_SEDLBAUER_CS=m
-CONFIG_HISAX_ELSA_CS=m
-CONFIG_HISAX_AVM_A1_CS=m
-CONFIG_HISAX_TELES_CS=m
-
-#
-# HiSax sub driver modules
-#
-CONFIG_HISAX_ST5481=m
-CONFIG_HISAX_HFCUSB=m
-CONFIG_HISAX_HFC4S8S=m
-CONFIG_HISAX_FRITZ_PCIPNP=m
-
-#
-# Active cards
-#
-CONFIG_HYSDN=m
-CONFIG_HYSDN_CAPI=y
-CONFIG_ISDN_HDLC=m
-CONFIG_ISDN_CAPI=m
-CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
-CONFIG_CAPI_TRACE=y
-CONFIG_ISDN_CAPI_MIDDLEWARE=y
-CONFIG_ISDN_CAPI_CAPI20=m
-# CONFIG_ISDN_CAPI_CAPIFS_BOOL is not set
-CONFIG_ISDN_CAPI_CAPIDRV=m
-
-#
-# CAPI hardware drivers
-#
-CONFIG_CAPI_AVM=y
-CONFIG_ISDN_DRV_AVMB1_B1PCI=m
-# CONFIG_ISDN_DRV_AVMB1_B1PCIV4 is not set
-CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
-CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
-CONFIG_ISDN_DRV_AVMB1_T1PCI=m
-CONFIG_ISDN_DRV_AVMB1_C4=m
-CONFIG_CAPI_EICON=y
-CONFIG_ISDN_DIVAS=m
-CONFIG_ISDN_DIVAS_BRIPCI=y
-CONFIG_ISDN_DIVAS_PRIPCI=y
-CONFIG_ISDN_DIVAS_DIVACAPI=m
-CONFIG_ISDN_DIVAS_USERIDI=m
-CONFIG_ISDN_DIVAS_MAINT=m
-CONFIG_ISDN_DRV_GIGASET=m
-CONFIG_GIGASET_BASE=m
-CONFIG_GIGASET_M105=m
-CONFIG_GIGASET_M101=m
-# CONFIG_GIGASET_DEBUG is not set
-# CONFIG_PHONE is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-CONFIG_INPUT_FF_MEMLESS=m
-CONFIG_INPUT_POLLDEV=m
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=y
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_EVDEV is not set
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-CONFIG_KEYBOARD_ADP5588=m
-CONFIG_KEYBOARD_ATKBD=y
-CONFIG_QT2160=m
-CONFIG_KEYBOARD_LKKBD=m
-CONFIG_KEYBOARD_LM8323=m
-CONFIG_KEYBOARD_MAX7359=m
-CONFIG_KEYBOARD_NEWTON=m
-CONFIG_KEYBOARD_OPENCORES=m
-CONFIG_KEYBOARD_STOWAWAY=m
-CONFIG_KEYBOARD_SUNKBD=m
-CONFIG_KEYBOARD_XTKBD=m
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TABLET is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-CONFIG_INPUT_MISC=y
-CONFIG_INPUT_PCSPKR=m
-CONFIG_INPUT_APANEL=m
-# CONFIG_INPUT_WISTRON_BTNS is not set
-# CONFIG_INPUT_ATLAS_BTNS is not set
-CONFIG_INPUT_ATI_REMOTE=m
-CONFIG_INPUT_ATI_REMOTE2=m
-CONFIG_INPUT_KEYSPAN_REMOTE=m
-CONFIG_INPUT_POWERMATE=m
-CONFIG_INPUT_YEALINK=m
-CONFIG_INPUT_CM109=m
-# CONFIG_INPUT_UINPUT is not set
-CONFIG_INPUT_WINBOND_CIR=m
-CONFIG_INPUT_PCF50633_PMU=m
-CONFIG_INPUT_WM831X_ON=m
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-CONFIG_SERIO_I8042=y
-CONFIG_SERIO_SERPORT=y
-# CONFIG_SERIO_CT82C710 is not set
-# CONFIG_SERIO_PARKBD is not set
-# CONFIG_SERIO_PCIPS2 is not set
-CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_CONSOLE_TRANSLATIONS=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-CONFIG_VT_HW_CONSOLE_BINDING=y
-CONFIG_DEVKMEM=y
-# CONFIG_SERIAL_NONSTANDARD is not set
-CONFIG_NOZOMI=m
-
-#
-# Serial drivers
-#
-CONFIG_FIX_EARLYCON_MEM=y
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_CORE=m
-CONFIG_SERIAL_JSM=m
-CONFIG_UNIX98_PTYS=y
-# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
-# CONFIG_LEGACY_PTYS is not set
-CONFIG_PRINTER=m
-# CONFIG_LP_CONSOLE is not set
-CONFIG_PPDEV=m
-CONFIG_IPMI_HANDLER=m
-CONFIG_IPMI_PANIC_EVENT=y
-# CONFIG_IPMI_PANIC_STRING is not set
-CONFIG_IPMI_DEVICE_INTERFACE=m
-CONFIG_IPMI_SI=m
-CONFIG_IPMI_WATCHDOG=m
-CONFIG_IPMI_POWEROFF=m
-CONFIG_HW_RANDOM=m
-CONFIG_HW_RANDOM_TIMERIOMEM=m
-CONFIG_HW_RANDOM_INTEL=m
-CONFIG_HW_RANDOM_AMD=m
-CONFIG_HW_RANDOM_GEODE=m
-CONFIG_HW_RANDOM_VIA=m
-CONFIG_NVRAM=m
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
-
-#
-# PCMCIA character devices
-#
-CONFIG_SYNCLINK_CS=m
-# CONFIG_CARDMAN_4000 is not set
-# CONFIG_CARDMAN_4040 is not set
-CONFIG_IPWIRELESS=m
-# CONFIG_MWAVE is not set
-CONFIG_SCx200_GPIO=m
-CONFIG_PC8736x_GPIO=m
-CONFIG_NSC_GPIO=m
-CONFIG_CS5535_GPIO=m
-# CONFIG_RAW_DRIVER is not set
-CONFIG_HANGCHECK_TIMER=m
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-CONFIG_DEVPORT=y
-CONFIG_I2C=m
-CONFIG_I2C_BOARDINFO=y
-CONFIG_I2C_COMPAT=y
-CONFIG_I2C_CHARDEV=m
-CONFIG_I2C_HELPER_AUTO=y
-CONFIG_I2C_ALGOBIT=m
-CONFIG_I2C_ALGOPCA=m
-
-#
-# I2C Hardware Bus support
-#
-
-#
-# PC SMBus host controller drivers
-#
-CONFIG_I2C_ALI1535=m
-CONFIG_I2C_ALI1563=m
-CONFIG_I2C_ALI15X3=m
-CONFIG_I2C_AMD756=m
-CONFIG_I2C_AMD756_S4882=m
-CONFIG_I2C_AMD8111=m
-CONFIG_I2C_I801=m
-CONFIG_I2C_ISCH=m
-CONFIG_I2C_PIIX4=m
-CONFIG_I2C_NFORCE2=m
-CONFIG_I2C_NFORCE2_S4985=m
-CONFIG_I2C_SIS5595=m
-CONFIG_I2C_SIS630=m
-CONFIG_I2C_SIS96X=m
-CONFIG_I2C_VIA=m
-CONFIG_I2C_VIAPRO=m
-
-#
-# ACPI drivers
-#
-CONFIG_I2C_SCMI=m
-
-#
-# I2C system bus drivers (mostly embedded / system-on-chip)
-#
-CONFIG_I2C_OCORES=m
-CONFIG_I2C_SIMTEC=m
-
-#
-# External I2C/SMBus adapter drivers
-#
-CONFIG_I2C_PARPORT=m
-CONFIG_I2C_PARPORT_LIGHT=m
-# CONFIG_I2C_TAOS_EVM is not set
-CONFIG_I2C_TINY_USB=m
-
-#
-# Graphics adapter I2C/DDC channel drivers
-#
-CONFIG_I2C_VOODOO3=m
-
-#
-# Other I2C/SMBus bus drivers
-#
-CONFIG_I2C_PCA_PLATFORM=m
-CONFIG_I2C_STUB=m
-# CONFIG_SCx200_I2C is not set
-CONFIG_SCx200_ACB=m
-
-#
-# Miscellaneous I2C Chip support
-#
-CONFIG_DS1682=m
-CONFIG_SENSORS_TSL2550=m
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-# CONFIG_SPI is not set
-
-#
-# PPS support
-#
-CONFIG_PPS=m
-# CONFIG_PPS_DEBUG is not set
-CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
-# CONFIG_GPIOLIB is not set
-CONFIG_W1=m
-CONFIG_W1_CON=y
-
-#
-# 1-wire Bus Masters
-#
-CONFIG_W1_MASTER_MATROX=m
-CONFIG_W1_MASTER_DS2490=m
-CONFIG_W1_MASTER_DS2482=m
-
-#
-# 1-wire Slaves
-#
-CONFIG_W1_SLAVE_THERM=m
-CONFIG_W1_SLAVE_SMEM=m
-CONFIG_W1_SLAVE_DS2431=m
-CONFIG_W1_SLAVE_DS2433=m
-CONFIG_W1_SLAVE_DS2433_CRC=y
-CONFIG_W1_SLAVE_DS2760=m
-CONFIG_W1_SLAVE_BQ27000=m
-CONFIG_POWER_SUPPLY=y
-# CONFIG_POWER_SUPPLY_DEBUG is not set
-# CONFIG_PDA_POWER is not set
-CONFIG_WM831X_POWER=m
-CONFIG_WM8350_POWER=m
-# CONFIG_BATTERY_DS2760 is not set
-CONFIG_BATTERY_DS2782=m
-CONFIG_BATTERY_BQ27x00=m
-CONFIG_BATTERY_MAX17040=m
-CONFIG_CHARGER_PCF50633=m
-CONFIG_HWMON=m
-CONFIG_HWMON_VID=m
-# CONFIG_HWMON_DEBUG_CHIP is not set
-
-#
-# Native drivers
-#
-CONFIG_SENSORS_ABITUGURU=m
-CONFIG_SENSORS_ABITUGURU3=m
-CONFIG_SENSORS_AD7414=m
-CONFIG_SENSORS_AD7418=m
-CONFIG_SENSORS_ADM1021=m
-CONFIG_SENSORS_ADM1025=m
-CONFIG_SENSORS_ADM1026=m
-CONFIG_SENSORS_ADM1029=m
-CONFIG_SENSORS_ADM1031=m
-CONFIG_SENSORS_ADM9240=m
-CONFIG_SENSORS_ADT7462=m
-CONFIG_SENSORS_ADT7470=m
-CONFIG_SENSORS_ADT7473=m
-CONFIG_SENSORS_ADT7475=m
-CONFIG_SENSORS_K8TEMP=m
-CONFIG_SENSORS_ASB100=m
-CONFIG_SENSORS_ATXP1=m
-CONFIG_SENSORS_DS1621=m
-CONFIG_SENSORS_I5K_AMB=m
-CONFIG_SENSORS_F71805F=m
-CONFIG_SENSORS_F71882FG=m
-CONFIG_SENSORS_F75375S=m
-CONFIG_SENSORS_FSCHMD=m
-CONFIG_SENSORS_G760A=m
-CONFIG_SENSORS_GL518SM=m
-CONFIG_SENSORS_GL520SM=m
-CONFIG_SENSORS_CORETEMP=m
-CONFIG_SENSORS_IBMAEM=m
-CONFIG_SENSORS_IBMPEX=m
-CONFIG_SENSORS_IT87=m
-CONFIG_SENSORS_LM63=m
-CONFIG_SENSORS_LM75=m
-CONFIG_SENSORS_LM77=m
-CONFIG_SENSORS_LM78=m
-CONFIG_SENSORS_LM80=m
-CONFIG_SENSORS_LM83=m
-CONFIG_SENSORS_LM85=m
-CONFIG_SENSORS_LM87=m
-CONFIG_SENSORS_LM90=m
-CONFIG_SENSORS_LM92=m
-CONFIG_SENSORS_LM93=m
-CONFIG_SENSORS_LTC4215=m
-CONFIG_SENSORS_LTC4245=m
-CONFIG_SENSORS_LM95241=m
-CONFIG_SENSORS_MAX1619=m
-CONFIG_SENSORS_MAX6650=m
-CONFIG_SENSORS_PC87360=m
-CONFIG_SENSORS_PC87427=m
-CONFIG_SENSORS_PCF8591=m
-CONFIG_SENSORS_SIS5595=m
-CONFIG_SENSORS_DME1737=m
-CONFIG_SENSORS_SMSC47M1=m
-CONFIG_SENSORS_SMSC47M192=m
-CONFIG_SENSORS_SMSC47B397=m
-CONFIG_SENSORS_ADS7828=m
-CONFIG_SENSORS_THMC50=m
-CONFIG_SENSORS_TMP401=m
-CONFIG_SENSORS_TMP421=m
-CONFIG_SENSORS_VIA686A=m
-CONFIG_SENSORS_VT1211=m
-CONFIG_SENSORS_VT8231=m
-CONFIG_SENSORS_W83781D=m
-CONFIG_SENSORS_W83791D=m
-CONFIG_SENSORS_W83792D=m
-CONFIG_SENSORS_W83793=m
-CONFIG_SENSORS_W83L785TS=m
-CONFIG_SENSORS_W83L786NG=m
-CONFIG_SENSORS_W83627HF=m
-CONFIG_SENSORS_W83627EHF=m
-CONFIG_SENSORS_WM831X=m
-CONFIG_SENSORS_WM8350=m
-CONFIG_SENSORS_HDAPS=m
-CONFIG_SENSORS_APPLESMC=m
-
-#
-# ACPI drivers
-#
-CONFIG_SENSORS_ATK0110=m
-CONFIG_SENSORS_LIS3LV02D=m
-CONFIG_THERMAL=y
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-
-#
-# Watchdog Device Drivers
-#
-CONFIG_SOFT_WATCHDOG=m
-CONFIG_WM831X_WATCHDOG=m
-CONFIG_WM8350_WATCHDOG=m
-CONFIG_ACQUIRE_WDT=m
-CONFIG_ADVANTECH_WDT=m
-CONFIG_ALIM1535_WDT=m
-CONFIG_ALIM7101_WDT=m
-CONFIG_SC520_WDT=m
-CONFIG_SBC_FITPC2_WATCHDOG=m
-CONFIG_EUROTECH_WDT=m
-CONFIG_IB700_WDT=m
-CONFIG_IBMASR=m
-CONFIG_WAFER_WDT=m
-CONFIG_I6300ESB_WDT=m
-CONFIG_ITCO_WDT=m
-# CONFIG_ITCO_VENDOR_SUPPORT is not set
-CONFIG_IT8712F_WDT=m
-CONFIG_IT87_WDT=m
-CONFIG_HP_WATCHDOG=m
-CONFIG_SC1200_WDT=m
-CONFIG_SCx200_WDT=m
-CONFIG_PC87413_WDT=m
-CONFIG_60XX_WDT=m
-CONFIG_SBC8360_WDT=m
-CONFIG_SBC7240_WDT=m
-CONFIG_CPU5_WDT=m
-CONFIG_SMSC_SCH311X_WDT=m
-CONFIG_SMSC37B787_WDT=m
-CONFIG_W83627HF_WDT=m
-CONFIG_W83697HF_WDT=m
-CONFIG_W83697UG_WDT=m
-CONFIG_W83877F_WDT=m
-CONFIG_W83977F_WDT=m
-CONFIG_MACHZ_WDT=m
-CONFIG_SBC_EPX_C3_WATCHDOG=m
-
-#
-# PCI-based Watchdog Cards
-#
-CONFIG_PCIPCWATCHDOG=m
-CONFIG_WDTPCI=m
-
-#
-# USB-based Watchdog Cards
-#
-CONFIG_USBPCWATCHDOG=m
-CONFIG_SSB_POSSIBLE=y
-
-#
-# Sonics Silicon Backplane
-#
-CONFIG_SSB=m
-CONFIG_SSB_SPROM=y
-CONFIG_SSB_PCIHOST_POSSIBLE=y
-CONFIG_SSB_PCIHOST=y
-# CONFIG_SSB_B43_PCI_BRIDGE is not set
-CONFIG_SSB_PCMCIAHOST_POSSIBLE=y
-CONFIG_SSB_PCMCIAHOST=y
-CONFIG_SSB_SDIOHOST_POSSIBLE=y
-CONFIG_SSB_SDIOHOST=y
-# CONFIG_SSB_DEBUG is not set
-CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
-CONFIG_SSB_DRIVER_PCICORE=y
-
-#
-# Multifunction device drivers
-#
-CONFIG_MFD_CORE=m
-CONFIG_MFD_SM501=m
-CONFIG_HTC_PASIC3=m
-# CONFIG_MFD_TMIO is not set
-CONFIG_MFD_WM8400=m
-CONFIG_MFD_WM831X=m
-CONFIG_MFD_WM8350=m
-CONFIG_MFD_WM8350_I2C=m
-CONFIG_MFD_PCF50633=m
-CONFIG_PCF50633_ADC=m
-CONFIG_PCF50633_GPIO=m
-CONFIG_AB3100_CORE=m
-CONFIG_AB3100_OTP=m
-# CONFIG_REGULATOR is not set
-CONFIG_MEDIA_SUPPORT=m
-
-#
-# Multimedia core support
-#
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L2_COMMON=m
-# CONFIG_VIDEO_ALLOW_V4L1 is not set
-CONFIG_VIDEO_V4L1_COMPAT=y
-CONFIG_DVB_CORE=m
-CONFIG_VIDEO_MEDIA=m
-
-#
-# Multimedia drivers
-#
-# CONFIG_MEDIA_ATTACH is not set
-CONFIG_MEDIA_TUNER=m
-# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
-CONFIG_MEDIA_TUNER_SIMPLE=m
-CONFIG_MEDIA_TUNER_TDA8290=m
-CONFIG_MEDIA_TUNER_TDA9887=m
-CONFIG_MEDIA_TUNER_TEA5761=m
-CONFIG_MEDIA_TUNER_TEA5767=m
-CONFIG_MEDIA_TUNER_MT20XX=m
-CONFIG_MEDIA_TUNER_XC2028=m
-CONFIG_MEDIA_TUNER_XC5000=m
-CONFIG_MEDIA_TUNER_MC44S803=m
-CONFIG_VIDEO_V4L2=m
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
-# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set
-
-#
-# Encoders/decoders and other helper chips
-#
-
-#
-# Audio decoders
-#
-# CONFIG_VIDEO_TVAUDIO is not set
-# CONFIG_VIDEO_TDA7432 is not set
-# CONFIG_VIDEO_TDA9840 is not set
-# CONFIG_VIDEO_TDA9875 is not set
-# CONFIG_VIDEO_TEA6415C is not set
-# CONFIG_VIDEO_TEA6420 is not set
-# CONFIG_VIDEO_MSP3400 is not set
-# CONFIG_VIDEO_CS5345 is not set
-# CONFIG_VIDEO_CS53L32A is not set
-# CONFIG_VIDEO_M52790 is not set
-# CONFIG_VIDEO_TLV320AIC23B is not set
-# CONFIG_VIDEO_WM8775 is not set
-# CONFIG_VIDEO_WM8739 is not set
-# CONFIG_VIDEO_VP27SMPX is not set
-
-#
-# RDS decoders
-#
-# CONFIG_VIDEO_SAA6588 is not set
-
-#
-# Video decoders
-#
-# CONFIG_VIDEO_ADV7180 is not set
-# CONFIG_VIDEO_BT819 is not set
-# CONFIG_VIDEO_BT856 is not set
-# CONFIG_VIDEO_BT866 is not set
-# CONFIG_VIDEO_KS0127 is not set
-# CONFIG_VIDEO_OV7670 is not set
-# CONFIG_VIDEO_MT9V011 is not set
-# CONFIG_VIDEO_TCM825X is not set
-# CONFIG_VIDEO_SAA7110 is not set
-# CONFIG_VIDEO_SAA711X is not set
-# CONFIG_VIDEO_SAA717X is not set
-# CONFIG_VIDEO_TVP514X is not set
-# CONFIG_VIDEO_TVP5150 is not set
-# CONFIG_VIDEO_VPX3220 is not set
-
-#
-# Video and audio decoders
-#
-# CONFIG_VIDEO_CX25840 is not set
-
-#
-# MPEG video encoders
-#
-# CONFIG_VIDEO_CX2341X is not set
-
-#
-# Video encoders
-#
-# CONFIG_VIDEO_SAA7127 is not set
-# CONFIG_VIDEO_SAA7185 is not set
-# CONFIG_VIDEO_ADV7170 is not set
-# CONFIG_VIDEO_ADV7175 is not set
-# CONFIG_VIDEO_THS7303 is not set
-# CONFIG_VIDEO_ADV7343 is not set
-
-#
-# Video improvement chips
-#
-# CONFIG_VIDEO_UPD64031A is not set
-# CONFIG_VIDEO_UPD64083 is not set
-# CONFIG_VIDEO_VIVI is not set
-# CONFIG_VIDEO_BT848 is not set
-# CONFIG_VIDEO_SAA5246A is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_VIDEO_ZORAN is not set
-# CONFIG_VIDEO_SAA7134 is not set
-# CONFIG_VIDEO_HEXIUM_ORION is not set
-# CONFIG_VIDEO_HEXIUM_GEMINI is not set
-# CONFIG_VIDEO_CX88 is not set
-# CONFIG_VIDEO_CX23885 is not set
-# CONFIG_VIDEO_AU0828 is not set
-# CONFIG_VIDEO_IVTV is not set
-# CONFIG_VIDEO_CX18 is not set
-# CONFIG_VIDEO_SAA7164 is not set
-# CONFIG_VIDEO_CAFE_CCIC is not set
-# CONFIG_SOC_CAMERA is not set
-CONFIG_V4L_USB_DRIVERS=y
-# CONFIG_USB_VIDEO_CLASS is not set
-CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
-# CONFIG_USB_GSPCA is not set
-# CONFIG_VIDEO_PVRUSB2 is not set
-# CONFIG_VIDEO_HDPVR is not set
-# CONFIG_VIDEO_EM28XX is not set
-# CONFIG_VIDEO_CX231XX is not set
-# CONFIG_VIDEO_USBVISION is not set
-# CONFIG_USB_ET61X251 is not set
-# CONFIG_USB_SN9C102 is not set
-# CONFIG_USB_ZC0301 is not set
-CONFIG_USB_PWC_INPUT_EVDEV=y
-# CONFIG_USB_ZR364XX is not set
-# CONFIG_USB_STKWEBCAM is not set
-# CONFIG_USB_S2255 is not set
-CONFIG_RADIO_ADAPTERS=y
-# CONFIG_RADIO_GEMTEK_PCI is not set
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_RADIO_MAESTRO is not set
-# CONFIG_I2C_SI4713 is not set
-# CONFIG_RADIO_SI4713 is not set
-# CONFIG_USB_DSBR is not set
-# CONFIG_RADIO_SI470X is not set
-# CONFIG_USB_MR800 is not set
-# CONFIG_RADIO_TEA5764 is not set
-CONFIG_DVB_MAX_ADAPTERS=8
-# CONFIG_DVB_DYNAMIC_MINORS is not set
-CONFIG_DVB_CAPTURE_DRIVERS=y
-
-#
-# Supported SAA7146 based PCI Adapters
-#
-# CONFIG_TTPCI_EEPROM is not set
-# CONFIG_DVB_AV7110 is not set
-# CONFIG_DVB_BUDGET_CORE is not set
-
-#
-# Supported USB Adapters
-#
-# CONFIG_DVB_USB is not set
-# CONFIG_DVB_TTUSB_BUDGET is not set
-# CONFIG_DVB_TTUSB_DEC is not set
-# CONFIG_SMS_SIANO_MDTV is not set
-
-#
-# Supported FlexCopII (B2C2) Adapters
-#
-# CONFIG_DVB_B2C2_FLEXCOP is not set
-
-#
-# Supported BT878 Adapters
-#
-
-#
-# Supported Pluto2 Adapters
-#
-# CONFIG_DVB_PLUTO2 is not set
-
-#
-# Supported SDMC DM1105 Adapters
-#
-# CONFIG_DVB_DM1105 is not set
-
-#
-# Supported Earthsoft PT1 Adapters
-#
-# CONFIG_DVB_PT1 is not set
-
-#
-# Supported DVB Frontends
-#
-# CONFIG_DVB_FE_CUSTOMISE is not set
-CONFIG_DAB=y
-# CONFIG_USB_DABUSB is not set
-
-#
-# Graphics support
-#
-CONFIG_AGP=m
-CONFIG_AGP_ALI=m
-CONFIG_AGP_ATI=m
-CONFIG_AGP_AMD=m
-CONFIG_AGP_AMD64=m
-CONFIG_AGP_INTEL=m
-CONFIG_AGP_NVIDIA=m
-CONFIG_AGP_SIS=m
-CONFIG_AGP_SWORKS=m
-CONFIG_AGP_VIA=m
-CONFIG_AGP_EFFICEON=m
-CONFIG_VGA_ARB=y
-CONFIG_DRM=m
-CONFIG_DRM_KMS_HELPER=m
-CONFIG_DRM_TTM=m
-CONFIG_DRM_TDFX=m
-CONFIG_DRM_R128=m
-CONFIG_DRM_RADEON=m
-CONFIG_DRM_I810=m
-CONFIG_DRM_I830=m
-CONFIG_DRM_I915=m
-CONFIG_DRM_I915_KMS=y
-CONFIG_DRM_MGA=m
-CONFIG_DRM_SIS=m
-CONFIG_DRM_VIA=m
-CONFIG_DRM_SAVAGE=m
-CONFIG_VGASTATE=m
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-CONFIG_FB=y
-CONFIG_FIRMWARE_EDID=y
-CONFIG_FB_DDC=m
-CONFIG_FB_BOOT_VESA_SUPPORT=y
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-CONFIG_FB_SYS_FILLRECT=m
-CONFIG_FB_SYS_COPYAREA=m
-CONFIG_FB_SYS_IMAGEBLIT=m
-# CONFIG_FB_FOREIGN_ENDIAN is not set
-CONFIG_FB_SYS_FOPS=m
-CONFIG_FB_DEFERRED_IO=y
-CONFIG_FB_SVGALIB=m
-# CONFIG_FB_MACMODES is not set
-CONFIG_FB_BACKLIGHT=y
-CONFIG_FB_MODE_HELPERS=y
-CONFIG_FB_TILEBLITTING=y
-
-#
-# Frame buffer hardware drivers
-#
-CONFIG_FB_CIRRUS=m
-CONFIG_FB_PM2=m
-CONFIG_FB_PM2_FIFO_DISCONNECT=y
-CONFIG_FB_CYBER2000=m
-# CONFIG_FB_ARC is not set
-CONFIG_FB_ASILIANT=y
-# CONFIG_FB_IMSTT is not set
-# CONFIG_FB_VGA16 is not set
-CONFIG_FB_UVESA=m
-CONFIG_FB_VESA=y
-# CONFIG_FB_N411 is not set
-# CONFIG_FB_HGA is not set
-# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_NVIDIA=m
-CONFIG_FB_NVIDIA_I2C=y
-# CONFIG_FB_NVIDIA_DEBUG is not set
-CONFIG_FB_NVIDIA_BACKLIGHT=y
-CONFIG_FB_RIVA=m
-CONFIG_FB_RIVA_I2C=y
-# CONFIG_FB_RIVA_DEBUG is not set
-CONFIG_FB_RIVA_BACKLIGHT=y
-CONFIG_FB_I810=m
-CONFIG_FB_I810_GTF=y
-CONFIG_FB_I810_I2C=y
-CONFIG_FB_LE80578=m
-CONFIG_FB_CARILLO_RANCH=m
-CONFIG_FB_MATROX=m
-CONFIG_FB_MATROX_MILLENIUM=y
-CONFIG_FB_MATROX_MYSTIQUE=y
-CONFIG_FB_MATROX_G=y
-CONFIG_FB_MATROX_I2C=m
-CONFIG_FB_MATROX_MAVEN=m
-CONFIG_FB_RADEON=m
-CONFIG_FB_RADEON_I2C=y
-CONFIG_FB_RADEON_BACKLIGHT=y
-# CONFIG_FB_RADEON_DEBUG is not set
-CONFIG_FB_ATY128=m
-CONFIG_FB_ATY128_BACKLIGHT=y
-CONFIG_FB_ATY=m
-CONFIG_FB_ATY_CT=y
-# CONFIG_FB_ATY_GENERIC_LCD is not set
-CONFIG_FB_ATY_GX=y
-CONFIG_FB_ATY_BACKLIGHT=y
-CONFIG_FB_S3=m
-CONFIG_FB_SAVAGE=m
-CONFIG_FB_SAVAGE_I2C=y
-CONFIG_FB_SAVAGE_ACCEL=y
-CONFIG_FB_SIS=m
-CONFIG_FB_SIS_300=y
-CONFIG_FB_SIS_315=y
-CONFIG_FB_VIA=m
-CONFIG_FB_NEOMAGIC=m
-CONFIG_FB_KYRO=m
-CONFIG_FB_3DFX=m
-CONFIG_FB_3DFX_ACCEL=y
-CONFIG_FB_3DFX_I2C=y
-CONFIG_FB_VOODOO1=m
-CONFIG_FB_VT8623=m
-CONFIG_FB_TRIDENT=m
-CONFIG_FB_ARK=m
-CONFIG_FB_PM3=m
-# CONFIG_FB_CARMINE is not set
-CONFIG_FB_GEODE=y
-CONFIG_FB_GEODE_LX=m
-CONFIG_FB_GEODE_GX=m
-CONFIG_FB_GEODE_GX1=m
-CONFIG_FB_TMIO=m
-CONFIG_FB_TMIO_ACCELL=y
-CONFIG_FB_SM501=m
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_FB_METRONOME=m
-CONFIG_FB_MB862XX=m
-CONFIG_FB_MB862XX_PCI_GDC=y
-CONFIG_FB_BROADSHEET=m
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_LCD_CLASS_DEVICE=m
-# CONFIG_LCD_ILI9320 is not set
-CONFIG_LCD_PLATFORM=m
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_GENERIC=m
-CONFIG_BACKLIGHT_PROGEAR=m
-CONFIG_BACKLIGHT_CARILLO_RANCH=m
-CONFIG_BACKLIGHT_MBP_NVIDIA=m
-CONFIG_BACKLIGHT_SAHARA=m
-CONFIG_BACKLIGHT_WM831X=m
-
-#
-# Display device support
-#
-CONFIG_DISPLAY_SUPPORT=m
-
-#
-# Display hardware drivers
-#
-
-#
-# Console display driver support
-#
-CONFIG_VGA_CONSOLE=y
-# CONFIG_VGACON_SOFT_SCROLLBACK is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-CONFIG_LOGO_LINUX_CLUT224=y
-CONFIG_SOUND=m
-CONFIG_SOUND_OSS_CORE=y
-CONFIG_SOUND_OSS_CORE_PRECLAIM=y
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-CONFIG_SND_HWDEP=m
-CONFIG_SND_RAWMIDI=m
-CONFIG_SND_JACK=y
-CONFIG_SND_SEQUENCER=m
-CONFIG_SND_SEQ_DUMMY=m
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-CONFIG_SND_SEQUENCER_OSS=y
-CONFIG_SND_DYNAMIC_MINORS=y
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-CONFIG_SND_VMASTER=y
-CONFIG_SND_DMA_SGBUF=y
-CONFIG_SND_RAWMIDI_SEQ=m
-CONFIG_SND_OPL3_LIB_SEQ=m
-# CONFIG_SND_OPL4_LIB_SEQ is not set
-# CONFIG_SND_SBAWE_SEQ is not set
-CONFIG_SND_EMU10K1_SEQ=m
-CONFIG_SND_MPU401_UART=m
-CONFIG_SND_OPL3_LIB=m
-CONFIG_SND_VX_LIB=m
-CONFIG_SND_AC97_CODEC=m
-CONFIG_SND_DRIVERS=y
-CONFIG_SND_DUMMY=m
-CONFIG_SND_VIRMIDI=m
-CONFIG_SND_MTPAV=m
-CONFIG_SND_MTS64=m
-CONFIG_SND_SERIAL_U16550=m
-CONFIG_SND_MPU401=m
-CONFIG_SND_PORTMAN2X4=m
-# CONFIG_SND_AC97_POWER_SAVE is not set
-CONFIG_SND_SB_COMMON=m
-CONFIG_SND_SB16_DSP=m
-CONFIG_SND_PCI=y
-CONFIG_SND_AD1889=m
-CONFIG_SND_ALS300=m
-CONFIG_SND_ALS4000=m
-CONFIG_SND_ALI5451=m
-CONFIG_SND_ATIIXP=m
-CONFIG_SND_ATIIXP_MODEM=m
-CONFIG_SND_AU8810=m
-CONFIG_SND_AU8820=m
-CONFIG_SND_AU8830=m
-# CONFIG_SND_AW2 is not set
-# CONFIG_SND_AZT3328 is not set
-CONFIG_SND_BT87X=m
-# CONFIG_SND_BT87X_OVERCLOCK is not set
-CONFIG_SND_CA0106=m
-CONFIG_SND_CMIPCI=m
-CONFIG_SND_OXYGEN_LIB=m
-CONFIG_SND_OXYGEN=m
-CONFIG_SND_CS4281=m
-CONFIG_SND_CS46XX=m
-CONFIG_SND_CS46XX_NEW_DSP=y
-CONFIG_SND_CS5530=m
-CONFIG_SND_CS5535AUDIO=m
-CONFIG_SND_CTXFI=m
-CONFIG_SND_DARLA20=m
-CONFIG_SND_GINA20=m
-CONFIG_SND_LAYLA20=m
-CONFIG_SND_DARLA24=m
-CONFIG_SND_GINA24=m
-CONFIG_SND_LAYLA24=m
-CONFIG_SND_MONA=m
-CONFIG_SND_MIA=m
-CONFIG_SND_ECHO3G=m
-CONFIG_SND_INDIGO=m
-CONFIG_SND_INDIGOIO=m
-CONFIG_SND_INDIGODJ=m
-CONFIG_SND_INDIGOIOX=m
-CONFIG_SND_INDIGODJX=m
-CONFIG_SND_EMU10K1=m
-CONFIG_SND_EMU10K1X=m
-CONFIG_SND_ENS1370=m
-CONFIG_SND_ENS1371=m
-CONFIG_SND_ES1938=m
-CONFIG_SND_ES1968=m
-CONFIG_SND_FM801=m
-# CONFIG_SND_FM801_TEA575X_BOOL is not set
-CONFIG_SND_HDA_INTEL=m
-CONFIG_SND_HDA_HWDEP=y
-CONFIG_SND_HDA_RECONFIG=y
-# CONFIG_SND_HDA_INPUT_BEEP is not set
-# CONFIG_SND_HDA_INPUT_JACK is not set
-CONFIG_SND_HDA_PATCH_LOADER=y
-CONFIG_SND_HDA_CODEC_REALTEK=y
-CONFIG_SND_HDA_CODEC_ANALOG=y
-CONFIG_SND_HDA_CODEC_SIGMATEL=y
-CONFIG_SND_HDA_CODEC_VIA=y
-CONFIG_SND_HDA_CODEC_ATIHDMI=y
-CONFIG_SND_HDA_CODEC_NVHDMI=y
-CONFIG_SND_HDA_CODEC_INTELHDMI=y
-CONFIG_SND_HDA_ELD=y
-CONFIG_SND_HDA_CODEC_CIRRUS=y
-CONFIG_SND_HDA_CODEC_CONEXANT=y
-CONFIG_SND_HDA_CODEC_CA0110=y
-CONFIG_SND_HDA_CODEC_CMEDIA=y
-CONFIG_SND_HDA_CODEC_SI3054=y
-CONFIG_SND_HDA_GENERIC=y
-# CONFIG_SND_HDA_POWER_SAVE is not set
-CONFIG_SND_HDSP=m
-CONFIG_SND_HDSPM=m
-CONFIG_SND_HIFIER=m
-CONFIG_SND_ICE1712=m
-CONFIG_SND_ICE1724=m
-CONFIG_SND_INTEL8X0=m
-CONFIG_SND_INTEL8X0M=m
-CONFIG_SND_KORG1212=m
-CONFIG_SND_LX6464ES=m
-CONFIG_SND_MAESTRO3=m
-CONFIG_SND_MIXART=m
-CONFIG_SND_NM256=m
-CONFIG_SND_PCXHR=m
-CONFIG_SND_RIPTIDE=m
-CONFIG_SND_RME32=m
-CONFIG_SND_RME96=m
-CONFIG_SND_RME9652=m
-CONFIG_SND_SIS7019=m
-CONFIG_SND_SONICVIBES=m
-CONFIG_SND_TRIDENT=m
-CONFIG_SND_VIA82XX=m
-CONFIG_SND_VIA82XX_MODEM=m
-CONFIG_SND_VIRTUOSO=m
-CONFIG_SND_VX222=m
-CONFIG_SND_YMFPCI=m
-CONFIG_SND_USB=y
-CONFIG_SND_USB_AUDIO=m
-CONFIG_SND_USB_USX2Y=m
-CONFIG_SND_USB_CAIAQ=m
-CONFIG_SND_USB_CAIAQ_INPUT=y
-CONFIG_SND_USB_US122L=m
-CONFIG_SND_PCMCIA=y
-CONFIG_SND_VXPOCKET=m
-CONFIG_SND_PDAUDIOCF=m
-CONFIG_SND_SOC=m
-CONFIG_SND_SOC_I2C_AND_SPI=m
-CONFIG_SND_SOC_ALL_CODECS=m
-CONFIG_SND_SOC_WM_HUBS=m
-CONFIG_SND_SOC_AD73311=m
-CONFIG_SND_SOC_AK4535=m
-CONFIG_SND_SOC_AK4642=m
-CONFIG_SND_SOC_CS4270=m
-CONFIG_SND_SOC_L3=m
-CONFIG_SND_SOC_PCM3008=m
-CONFIG_SND_SOC_SPDIF=m
-CONFIG_SND_SOC_SSM2602=m
-CONFIG_SND_SOC_TLV320AIC23=m
-CONFIG_SND_SOC_TLV320AIC3X=m
-CONFIG_SND_SOC_UDA134X=m
-CONFIG_SND_SOC_UDA1380=m
-CONFIG_SND_SOC_WM8350=m
-CONFIG_SND_SOC_WM8400=m
-CONFIG_SND_SOC_WM8510=m
-CONFIG_SND_SOC_WM8523=m
-CONFIG_SND_SOC_WM8580=m
-CONFIG_SND_SOC_WM8728=m
-CONFIG_SND_SOC_WM8731=m
-CONFIG_SND_SOC_WM8750=m
-CONFIG_SND_SOC_WM8753=m
-CONFIG_SND_SOC_WM8776=m
-CONFIG_SND_SOC_WM8900=m
-CONFIG_SND_SOC_WM8903=m
-CONFIG_SND_SOC_WM8940=m
-CONFIG_SND_SOC_WM8960=m
-CONFIG_SND_SOC_WM8961=m
-CONFIG_SND_SOC_WM8971=m
-CONFIG_SND_SOC_WM8974=m
-CONFIG_SND_SOC_WM8988=m
-CONFIG_SND_SOC_WM8990=m
-CONFIG_SND_SOC_WM8993=m
-CONFIG_SND_SOC_WM9081=m
-CONFIG_SND_SOC_MAX9877=m
-# CONFIG_SOUND_PRIME is not set
-CONFIG_AC97_BUS=m
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=y
-# CONFIG_HIDRAW is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-# CONFIG_HID_PID is not set
-CONFIG_USB_HIDDEV=y
-
-#
-# Special HID drivers
-#
-CONFIG_HID_A4TECH=m
-CONFIG_HID_APPLE=m
-CONFIG_HID_BELKIN=m
-CONFIG_HID_CHERRY=m
-CONFIG_HID_CHICONY=m
-CONFIG_HID_CYPRESS=m
-CONFIG_HID_DRAGONRISE=m
-# CONFIG_DRAGONRISE_FF is not set
-CONFIG_HID_EZKEY=m
-CONFIG_HID_KYE=m
-CONFIG_HID_GYRATION=m
-CONFIG_HID_TWINHAN=m
-CONFIG_HID_KENSINGTON=m
-CONFIG_HID_LOGITECH=m
-# CONFIG_LOGITECH_FF is not set
-# CONFIG_LOGIRUMBLEPAD2_FF is not set
-CONFIG_HID_MICROSOFT=m
-CONFIG_HID_MONTEREY=m
-CONFIG_HID_NTRIG=m
-CONFIG_HID_PANTHERLORD=m
-# CONFIG_PANTHERLORD_FF is not set
-CONFIG_HID_PETALYNX=m
-CONFIG_HID_SAMSUNG=m
-CONFIG_HID_SONY=m
-CONFIG_HID_SUNPLUS=m
-CONFIG_HID_GREENASIA=m
-# CONFIG_GREENASIA_FF is not set
-CONFIG_HID_SMARTJOYPLUS=m
-# CONFIG_SMARTJOYPLUS_FF is not set
-CONFIG_HID_TOPSEED=m
-CONFIG_HID_THRUSTMASTER=m
-# CONFIG_THRUSTMASTER_FF is not set
-CONFIG_HID_WACOM=m
-CONFIG_HID_ZEROPLUS=m
-# CONFIG_ZEROPLUS_FF is not set
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-CONFIG_USB_DEVICE_CLASS=y
-CONFIG_USB_DYNAMIC_MINORS=y
-CONFIG_USB_SUSPEND=y
-# CONFIG_USB_OTG is not set
-# CONFIG_USB_MON is not set
-CONFIG_USB_WUSB=m
-CONFIG_USB_WUSB_CBAF=m
-# CONFIG_USB_WUSB_CBAF_DEBUG is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_C67X00_HCD is not set
-CONFIG_USB_XHCI_HCD=y
-# CONFIG_USB_XHCI_HCD_DEBUGGING is not set
-CONFIG_USB_EHCI_HCD=y
-CONFIG_USB_EHCI_ROOT_HUB_TT=y
-CONFIG_USB_EHCI_TT_NEWSCHED=y
-CONFIG_USB_OXU210HP_HCD=m
-CONFIG_USB_ISP116X_HCD=m
-# CONFIG_USB_ISP1760_HCD is not set
-CONFIG_USB_ISP1362_HCD=m
-CONFIG_USB_OHCI_HCD=y
-# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
-# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_UHCI_HCD=y
-CONFIG_USB_U132_HCD=m
-CONFIG_USB_SL811_HCD=m
-# CONFIG_USB_SL811_CS is not set
-CONFIG_USB_R8A66597_HCD=m
-CONFIG_USB_WHCI_HCD=m
-CONFIG_USB_HWA_HCD=m
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-CONFIG_USB_WDM=m
-CONFIG_USB_TMC=m
-
-#
-# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
-#
-
-#
-# also be needed; see USB_STORAGE Help for more info
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-CONFIG_USB_STORAGE_FREECOM=m
-CONFIG_USB_STORAGE_ISD200=m
-CONFIG_USB_STORAGE_USBAT=m
-CONFIG_USB_STORAGE_SDDR09=m
-CONFIG_USB_STORAGE_SDDR55=m
-CONFIG_USB_STORAGE_JUMPSHOT=m
-CONFIG_USB_STORAGE_ALAUDA=m
-CONFIG_USB_STORAGE_ONETOUCH=m
-CONFIG_USB_STORAGE_KARMA=m
-CONFIG_USB_STORAGE_CYPRESS_ATACB=m
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-
-#
-# USB port drivers
-#
-CONFIG_USB_USS720=m
-CONFIG_USB_SERIAL=m
-CONFIG_USB_EZUSB=y
-CONFIG_USB_SERIAL_GENERIC=y
-CONFIG_USB_SERIAL_AIRCABLE=m
-CONFIG_USB_SERIAL_ARK3116=m
-CONFIG_USB_SERIAL_BELKIN=m
-CONFIG_USB_SERIAL_CH341=m
-CONFIG_USB_SERIAL_WHITEHEAT=m
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-CONFIG_USB_SERIAL_CP210X=m
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-# CONFIG_USB_SERIAL_FUNSOFT is not set
-# CONFIG_USB_SERIAL_VISOR is not set
-# CONFIG_USB_SERIAL_IPAQ is not set
-# CONFIG_USB_SERIAL_IR is not set
-CONFIG_USB_SERIAL_EDGEPORT=m
-# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_IUU=m
-# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
-# CONFIG_USB_SERIAL_KEYSPAN is not set
-# CONFIG_USB_SERIAL_KLSI is not set
-# CONFIG_USB_SERIAL_KOBIL_SCT is not set
-CONFIG_USB_SERIAL_MCT_U232=m
-CONFIG_USB_SERIAL_MOS7720=m
-CONFIG_USB_SERIAL_MOS7840=m
-CONFIG_USB_SERIAL_MOTOROLA=m
-# CONFIG_USB_SERIAL_NAVMAN is not set
-CONFIG_USB_SERIAL_PL2303=m
-CONFIG_USB_SERIAL_OTI6858=m
-# CONFIG_USB_SERIAL_QUALCOMM is not set
-CONFIG_USB_SERIAL_SPCP8X5=m
-CONFIG_USB_SERIAL_HP4X=m
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-CONFIG_USB_SERIAL_SIEMENS_MPI=m
-CONFIG_USB_SERIAL_SIERRAWIRELESS=m
-CONFIG_USB_SERIAL_SYMBOL=m
-CONFIG_USB_SERIAL_TI=m
-# CONFIG_USB_SERIAL_CYBERJACK is not set
-CONFIG_USB_SERIAL_XIRCOM=m
-CONFIG_USB_SERIAL_OPTION=m
-# CONFIG_USB_SERIAL_OMNINET is not set
-CONFIG_USB_SERIAL_OPTICON=m
-# CONFIG_USB_SERIAL_DEBUG is not set
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-# CONFIG_USB_ADUTUX is not set
-CONFIG_USB_SEVSEG=m
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-CONFIG_USB_LCD=m
-CONFIG_USB_BERRY_CHARGE=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYPRESS_CY7C63=m
-CONFIG_USB_CYTHERM=m
-# CONFIG_USB_IDMOUSE is not set
-CONFIG_USB_FTDI_ELAN=m
-# CONFIG_USB_APPLEDISPLAY is not set
-CONFIG_USB_SISUSBVGA=m
-CONFIG_USB_SISUSBVGA_CON=y
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-CONFIG_USB_IOWARRIOR=m
-# CONFIG_USB_TEST is not set
-CONFIG_USB_ISIGHTFW=m
-CONFIG_USB_VST=m
-CONFIG_USB_ATM=m
-CONFIG_USB_SPEEDTOUCH=m
-CONFIG_USB_CXACRU=m
-CONFIG_USB_UEAGLEATM=m
-CONFIG_USB_XUSBATM=m
-# CONFIG_USB_GADGET is not set
-
-#
-# OTG and related infrastructure
-#
-CONFIG_USB_OTG_UTILS=y
-CONFIG_NOP_USB_XCEIV=m
-CONFIG_UWB=m
-CONFIG_UWB_HWA=m
-CONFIG_UWB_WHCI=m
-CONFIG_UWB_WLP=m
-CONFIG_UWB_I1480U=m
-CONFIG_UWB_I1480U_WLP=m
-CONFIG_MMC=m
-# CONFIG_MMC_DEBUG is not set
-# CONFIG_MMC_UNSAFE_RESUME is not set
-
-#
-# MMC/SD/SDIO Card Drivers
-#
-CONFIG_MMC_BLOCK=m
-CONFIG_MMC_BLOCK_BOUNCE=y
-CONFIG_SDIO_UART=m
-CONFIG_MMC_TEST=m
-
-#
-# MMC/SD/SDIO Host Controller Drivers
-#
-CONFIG_MMC_SDHCI=m
-CONFIG_MMC_SDHCI_PCI=m
-CONFIG_MMC_RICOH_MMC=m
-CONFIG_MMC_SDHCI_PLTFM=m
-CONFIG_MMC_WBSD=m
-# CONFIG_MMC_AT91 is not set
-# CONFIG_MMC_ATMELMCI is not set
-CONFIG_MMC_TIFM_SD=m
-CONFIG_MMC_SDRICOH_CS=m
-CONFIG_MMC_CB710=m
-CONFIG_MMC_VIA_SDMMC=m
-CONFIG_MEMSTICK=m
-# CONFIG_MEMSTICK_DEBUG is not set
-
-#
-# MemoryStick drivers
-#
-# CONFIG_MEMSTICK_UNSAFE_RESUME is not set
-CONFIG_MSPRO_BLOCK=m
-
-#
-# MemoryStick Host Controller Drivers
-#
-CONFIG_MEMSTICK_TIFM_MS=m
-CONFIG_MEMSTICK_JMICRON_38X=m
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=m
-
-#
-# LED drivers
-#
-CONFIG_LEDS_NET48XX=m
-CONFIG_LEDS_WRAP=m
-CONFIG_LEDS_ALIX2=m
-CONFIG_LEDS_PCA9532=m
-CONFIG_LEDS_LP3944=m
-CONFIG_LEDS_CLEVO_MAIL=m
-CONFIG_LEDS_PCA955X=m
-CONFIG_LEDS_WM831X_STATUS=m
-CONFIG_LEDS_WM8350=m
-CONFIG_LEDS_BD2802=m
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=m
-CONFIG_LEDS_TRIGGER_HEARTBEAT=m
-CONFIG_LEDS_TRIGGER_BACKLIGHT=m
-CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
-
-#
-# iptables trigger is under Netfilter config (LED target)
-#
-CONFIG_LEDS_TRIGGER_NETDEV=m
-# CONFIG_ACCESSIBILITY is not set
-# CONFIG_INFINIBAND is not set
-# CONFIG_EDAC is not set
-CONFIG_RTC_LIB=m
-CONFIG_RTC_CLASS=m
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-CONFIG_RTC_DRV_TEST=m
-
-#
-# I2C RTC drivers
-#
-CONFIG_RTC_DRV_DS1307=m
-CONFIG_RTC_DRV_DS1374=m
-CONFIG_RTC_DRV_DS1672=m
-CONFIG_RTC_DRV_MAX6900=m
-CONFIG_RTC_DRV_RS5C372=m
-CONFIG_RTC_DRV_ISL1208=m
-CONFIG_RTC_DRV_X1205=m
-CONFIG_RTC_DRV_PCF8563=m
-CONFIG_RTC_DRV_PCF8583=m
-CONFIG_RTC_DRV_M41T80=m
-# CONFIG_RTC_DRV_M41T80_WDT is not set
-CONFIG_RTC_DRV_S35390A=m
-CONFIG_RTC_DRV_FM3130=m
-CONFIG_RTC_DRV_RX8581=m
-CONFIG_RTC_DRV_RX8025=m
-
-#
-# SPI RTC drivers
-#
-
-#
-# Platform RTC drivers
-#
-CONFIG_RTC_DRV_CMOS=m
-CONFIG_RTC_DRV_DS1286=m
-CONFIG_RTC_DRV_DS1511=m
-CONFIG_RTC_DRV_DS1553=m
-CONFIG_RTC_DRV_DS1742=m
-CONFIG_RTC_DRV_STK17TA8=m
-CONFIG_RTC_DRV_M48T86=m
-CONFIG_RTC_DRV_M48T35=m
-CONFIG_RTC_DRV_M48T59=m
-CONFIG_RTC_DRV_BQ4802=m
-CONFIG_RTC_DRV_V3020=m
-CONFIG_RTC_DRV_WM831X=m
-CONFIG_RTC_DRV_WM8350=m
-CONFIG_RTC_DRV_PCF50633=m
-CONFIG_RTC_DRV_AB3100=m
-
-#
-# on-CPU RTC drivers
-#
-CONFIG_DMADEVICES=y
-
-#
-# DMA Devices
-#
-CONFIG_ASYNC_TX_DISABLE_CHANNEL_SWITCH=y
-CONFIG_INTEL_IOATDMA=m
-CONFIG_DMA_ENGINE=y
-
-#
-# DMA Clients
-#
-CONFIG_NET_DMA=y
-# CONFIG_ASYNC_TX_DMA is not set
-CONFIG_DMATEST=m
-CONFIG_DCA=m
-# CONFIG_AUXDISPLAY is not set
-CONFIG_UIO=m
-CONFIG_UIO_CIF=m
-CONFIG_UIO_PDRV=m
-CONFIG_UIO_PDRV_GENIRQ=m
-CONFIG_UIO_SMX=m
-CONFIG_UIO_AEC=m
-CONFIG_UIO_SERCOS3=m
-CONFIG_UIO_PCI_GENERIC=m
-
-#
-# TI VLYNQ
-#
-CONFIG_XEN=y
-CONFIG_XEN_INTERFACE_VERSION=0x00030207
-
-#
-# XEN
-#
-CONFIG_XEN_PRIVILEGED_GUEST=y
-# CONFIG_XEN_UNPRIVILEGED_GUEST is not set
-CONFIG_XEN_PRIVCMD=y
-CONFIG_XEN_XENBUS_DEV=y
-CONFIG_XEN_NETDEV_ACCEL_SFC_UTIL=y
-CONFIG_XEN_BACKEND=y
-CONFIG_XEN_BLKDEV_BACKEND=y
-CONFIG_XEN_BLKDEV_TAP=y
-CONFIG_XEN_BLKDEV_TAP2=m
-CONFIG_XEN_BLKBACK_PAGEMAP=y
-CONFIG_XEN_NETDEV_BACKEND=y
-CONFIG_XEN_NETDEV_TX_SHIFT=8
-# CONFIG_XEN_NETDEV_PIPELINED_TRANSMITTER is not set
-CONFIG_XEN_NETDEV_LOOPBACK=y
-CONFIG_XEN_PCIDEV_BACKEND=y
-CONFIG_XEN_PCIDEV_BACKEND_VPCI=y
-# CONFIG_XEN_PCIDEV_BACKEND_PASS is not set
-# CONFIG_XEN_PCIDEV_BACKEND_SLOT is not set
-# CONFIG_XEN_PCIDEV_BACKEND_CONTROLLER is not set
-CONFIG_XEN_PCIDEV_BE_DEBUG=y
-# CONFIG_XEN_TPMDEV_BACKEND is not set
-CONFIG_XEN_SCSI_BACKEND=m
-CONFIG_XEN_USB_BACKEND=m
-CONFIG_XEN_BLKDEV_FRONTEND=y
-CONFIG_XEN_NETDEV_FRONTEND=y
-CONFIG_XEN_NETDEV_ACCEL_SFC_FRONTEND=y
-CONFIG_XEN_SCSI_FRONTEND=m
-CONFIG_XEN_USB_FRONTEND=m
-CONFIG_XEN_USB_FRONTEND_HCD_STATS=y
-# CONFIG_XEN_USB_FRONTEND_HCD_PM is not set
-CONFIG_XEN_GRANT_DEV=y
-CONFIG_XEN_FRAMEBUFFER=y
-CONFIG_XEN_KEYBOARD=y
-CONFIG_XEN_DISABLE_SERIAL=y
-CONFIG_XEN_SYSFS=y
-CONFIG_XEN_NR_GUEST_DEVICES=256
-# CONFIG_XEN_COMPAT_030002_AND_LATER is not set
-# CONFIG_XEN_COMPAT_030004_AND_LATER is not set
-# CONFIG_XEN_COMPAT_030100_AND_LATER is not set
-CONFIG_XEN_COMPAT_030200_AND_LATER=y
-# CONFIG_XEN_COMPAT_030300_AND_LATER is not set
-# CONFIG_XEN_COMPAT_030400_AND_LATER is not set
-# CONFIG_XEN_COMPAT_LATEST_ONLY is not set
-CONFIG_XEN_COMPAT=0x030200
-CONFIG_XEN_VCPU_INFO_PLACEMENT=y
-CONFIG_HAVE_IRQ_IGNORE_UNHANDLED=y
-CONFIG_IRQ_PER_CPU=y
-CONFIG_NO_IDLE_HZ=y
-CONFIG_XEN_SMPBOOT=y
-CONFIG_XEN_DEVMEM=y
-CONFIG_XEN_BALLOON=y
-CONFIG_XEN_SCRUB_PAGES=y
-CONFIG_STAGING=y
-# CONFIG_STAGING_EXCLUDE_BUILD is not set
-CONFIG_ET131X=m
-# CONFIG_ET131X_DEBUG is not set
-CONFIG_SLICOSS=m
-# CONFIG_VIDEO_GO7007 is not set
-# CONFIG_VIDEO_CX25821 is not set
-# CONFIG_USB_IP_COMMON is not set
-# CONFIG_W35UND is not set
-# CONFIG_PRISM2_USB is not set
-# CONFIG_ECHO is not set
-# CONFIG_POCH is not set
-# CONFIG_OTUS is not set
-# CONFIG_RT2860 is not set
-# CONFIG_RT2870 is not set
-# CONFIG_RT3090 is not set
-# CONFIG_COMEDI is not set
-# CONFIG_ASUS_OLED is not set
-# CONFIG_PANEL is not set
-# CONFIG_ALTERA_PCIE_CHDMA is not set
-# CONFIG_RTL8187SE is not set
-# CONFIG_RTL8192SU is not set
-# CONFIG_RTL8192E is not set
-# CONFIG_TRANZPORT is not set
-
-#
-# Android
-#
-
-#
-# Qualcomm MSM Camera And Video
-#
-
-#
-# Camera Sensor Selection
-#
-# CONFIG_INPUT_GPIO is not set
-# CONFIG_DST is not set
-# CONFIG_POHMELFS is not set
-# CONFIG_B3DFG is not set
-# CONFIG_IDE_PHISON is not set
-# CONFIG_PLAN9AUTH is not set
-# CONFIG_LINE6_USB is not set
-# CONFIG_DRM_RADEON_KMS is not set
-# CONFIG_USB_SERIAL_QUATECH2 is not set
-# CONFIG_USB_SERIAL_QUATECH_USB2 is not set
-# CONFIG_VT6655 is not set
-# CONFIG_VT6656 is not set
-# CONFIG_FB_UDL is not set
-# CONFIG_VME_BUS is not set
-
-#
-# RAR Register Driver
-#
-# CONFIG_RAR_REGISTER is not set
-# CONFIG_IIO is not set
-CONFIG_X86_PLATFORM_DEVICES=y
-CONFIG_ACER_WMI=m
-CONFIG_ASUS_LAPTOP=m
-CONFIG_DELL_WMI=m
-CONFIG_FUJITSU_LAPTOP=m
-CONFIG_FUJITSU_LAPTOP_DEBUG=y
-CONFIG_TC1100_WMI=m
-CONFIG_HP_WMI=m
-CONFIG_MSI_LAPTOP=m
-CONFIG_PANASONIC_LAPTOP=m
-CONFIG_COMPAL_LAPTOP=m
-CONFIG_SONY_LAPTOP=m
-# CONFIG_SONYPI_COMPAT is not set
-CONFIG_THINKPAD_ACPI=m
-# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set
-# CONFIG_THINKPAD_ACPI_DEBUG is not set
-# CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set
-CONFIG_THINKPAD_ACPI_VIDEO=y
-CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y
-CONFIG_INTEL_MENLOW=m
-CONFIG_ACPI_WMI=m
-CONFIG_ACPI_ASUS=m
-CONFIG_TOPSTAR_LAPTOP=m
-CONFIG_ACPI_TOSHIBA=m
-
-#
-# Firmware Drivers
-#
-# CONFIG_EDD is not set
-CONFIG_FIRMWARE_MEMMAP=y
-# CONFIG_DELL_RBU is not set
-# CONFIG_DCDBAS is not set
-CONFIG_DMIID=y
-CONFIG_ISCSI_IBFT_FIND=y
-CONFIG_ISCSI_IBFT=m
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=m
-CONFIG_EXT2_FS_XATTR=y
-CONFIG_EXT2_FS_POSIX_ACL=y
-CONFIG_EXT2_FS_SECURITY=y
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=m
-# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
-CONFIG_EXT3_FS_XATTR=y
-CONFIG_EXT3_FS_POSIX_ACL=y
-CONFIG_EXT3_FS_SECURITY=y
-CONFIG_EXT4_FS=m
-CONFIG_EXT4_FS_XATTR=y
-CONFIG_EXT4_FS_POSIX_ACL=y
-CONFIG_EXT4_FS_SECURITY=y
-# CONFIG_EXT4_DEBUG is not set
-CONFIG_JBD=m
-CONFIG_JBD2=m
-CONFIG_FS_MBCACHE=m
-CONFIG_REISER4_FS=m
-# CONFIG_REISER4_DEBUG is not set
-CONFIG_REISERFS_FS=m
-# CONFIG_REISERFS_CHECK is not set
-CONFIG_REISERFS_PROC_INFO=y
-CONFIG_REISERFS_FS_XATTR=y
-CONFIG_REISERFS_FS_POSIX_ACL=y
-CONFIG_REISERFS_FS_SECURITY=y
-CONFIG_JFS_FS=m
-CONFIG_JFS_POSIX_ACL=y
-CONFIG_JFS_SECURITY=y
-# CONFIG_JFS_DEBUG is not set
-CONFIG_JFS_STATISTICS=y
-CONFIG_FS_POSIX_ACL=y
-CONFIG_XFS_FS=m
-CONFIG_XFS_QUOTA=y
-CONFIG_XFS_POSIX_ACL=y
-# CONFIG_XFS_RT is not set
-# CONFIG_XFS_DEBUG is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_BTRFS_FS is not set
-# CONFIG_NILFS2_FS is not set
-CONFIG_FILE_LOCKING=y
-CONFIG_FSNOTIFY=y
-CONFIG_DNOTIFY=y
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-CONFIG_QUOTA=y
-CONFIG_QUOTA_NETLINK_INTERFACE=y
-CONFIG_PRINT_QUOTA_WARNING=y
-CONFIG_QUOTA_TREE=m
-CONFIG_QFMT_V1=m
-CONFIG_QFMT_V2=m
-CONFIG_QUOTACTL=y
-CONFIG_AUTOFS_FS=m
-CONFIG_AUTOFS4_FS=m
-CONFIG_FUSE_FS=m
-CONFIG_CUSE=m
-
-#
-# Caches
-#
-# CONFIG_FSCACHE is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=m
-CONFIG_JOLIET=y
-CONFIG_ZISOFS=y
-CONFIG_UDF_FS=m
-CONFIG_UDF_NLS=y
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=m
-# CONFIG_MSDOS_FS is not set
-CONFIG_VFAT_FS=m
-CONFIG_FAT_DEFAULT_CODEPAGE=850
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-# CONFIG_PROC_KCORE is not set
-CONFIG_PROC_SYSCTL=y
-CONFIG_PROC_PAGE_MONITOR=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_HUGETLB_PAGE is not set
-# CONFIG_CONFIGFS_FS is not set
-CONFIG_MISC_FILESYSTEMS=y
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-CONFIG_ECRYPT_FS=m
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-CONFIG_JFFS2_FS=m
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
-# CONFIG_JFFS2_SUMMARY is not set
-# CONFIG_JFFS2_FS_XATTR is not set
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-# CONFIG_JFFS2_LZO is not set
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
-# CONFIG_UBIFS_FS is not set
-# CONFIG_CRAMFS is not set
-# CONFIG_SQUASHFS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_OMFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_ROMFS_FS is not set
-# CONFIG_SYSV_FS is not set
-CONFIG_UFS_FS=m
-# CONFIG_UFS_FS_WRITE is not set
-# CONFIG_UFS_DEBUG is not set
-# CONFIG_EXOFS_FS is not set
-CONFIG_NETWORK_FILESYSTEMS=y
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-CONFIG_NFS_V3_ACL=y
-CONFIG_NFS_V4=y
-# CONFIG_NFS_V4_1 is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V2_ACL=y
-CONFIG_NFSD_V3=y
-CONFIG_NFSD_V3_ACL=y
-# CONFIG_NFSD_V4 is not set
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=m
-CONFIG_NFS_ACL_SUPPORT=m
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-CONFIG_RPCSEC_GSS_KRB5=m
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
-CONFIG_CIFS=m
-CONFIG_CIFS_STATS=y
-CONFIG_CIFS_STATS2=y
-# CONFIG_CIFS_WEAK_PW_HASH is not set
-# CONFIG_CIFS_UPCALL is not set
-CONFIG_CIFS_XATTR=y
-CONFIG_CIFS_POSIX=y
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_DFS_UPCALL is not set
-# CONFIG_CIFS_EXPERIMENTAL is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-CONFIG_BSD_DISKLABEL=y
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-CONFIG_LDM_PARTITION=y
-# CONFIG_LDM_DEBUG is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-CONFIG_EFI_PARTITION=y
-# CONFIG_SYSV68_PARTITION is not set
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp850"
-# CONFIG_NLS_CODEPAGE_437 is not set
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-CONFIG_NLS_CODEPAGE_850=y
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-# CONFIG_NLS_ASCII is not set
-CONFIG_NLS_ISO8859_1=y
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-CONFIG_NLS_UTF8=y
-# CONFIG_DLM is not set
-
-#
-# Kernel hacking
-#
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-# CONFIG_PRINTK_TIME is not set
-# CONFIG_ENABLE_WARN_DEPRECATED is not set
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_FRAME_WARN=1024
-# CONFIG_MAGIC_SYSRQ is not set
-CONFIG_STRIP_ASM_SYMS=y
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SHIRQ is not set
-CONFIG_DETECT_SOFTLOCKUP=y
-# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
-CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
-CONFIG_DETECT_HUNG_TASK=y
-# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
-CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
-CONFIG_SCHED_DEBUG=y
-# CONFIG_SCHEDSTATS is not set
-CONFIG_TIMER_STATS=y
-# CONFIG_DEBUG_OBJECTS is not set
-# CONFIG_SLUB_DEBUG_ON is not set
-# CONFIG_SLUB_STATS is not set
-# CONFIG_DEBUG_KMEMLEAK is not set
-# CONFIG_DEBUG_RT_MUTEXES is not set
-# CONFIG_RT_MUTEX_TESTER is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_LOCK_ALLOC is not set
-# CONFIG_PROVE_LOCKING is not set
-# CONFIG_LOCK_STAT is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
-# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_HIGHMEM is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_VIRTUAL is not set
-# CONFIG_DEBUG_WRITECOUNT is not set
-CONFIG_DEBUG_MEMORY_INIT=y
-# CONFIG_DEBUG_LIST is not set
-# CONFIG_DEBUG_SG is not set
-# CONFIG_DEBUG_NOTIFIERS is not set
-# CONFIG_DEBUG_CREDENTIALS is not set
-CONFIG_ARCH_WANT_FRAME_POINTERS=y
-# CONFIG_FRAME_POINTER is not set
-# CONFIG_BOOT_PRINTK_DELAY is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_RCU_CPU_STALL_DETECTOR is not set
-# CONFIG_BACKTRACE_SELF_TEST is not set
-# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
-# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
-# CONFIG_FAULT_INJECTION is not set
-# CONFIG_LATENCYTOP is not set
-# CONFIG_SYSCTL_SYSCALL_CHECK is not set
-# CONFIG_DEBUG_PAGEALLOC is not set
-CONFIG_USER_STACKTRACE_SUPPORT=y
-CONFIG_HAVE_FUNCTION_TRACER=y
-CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
-CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y
-CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
-CONFIG_HAVE_DYNAMIC_FTRACE=y
-CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
-CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
-CONFIG_TRACING_SUPPORT=y
-# CONFIG_FTRACE is not set
-# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
-# CONFIG_FIREWIRE_OHCI_REMOTE_DMA is not set
-# CONFIG_DMA_API_DEBUG is not set
-# CONFIG_SAMPLES is not set
-CONFIG_HAVE_ARCH_KMEMCHECK=y
-# CONFIG_KMEMCHECK is not set
-# CONFIG_STRICT_DEVMEM is not set
-CONFIG_EARLY_PRINTK=y
-# CONFIG_EARLY_PRINTK_DBGP is not set
-# CONFIG_DEBUG_STACKOVERFLOW is not set
-# CONFIG_DEBUG_STACK_USAGE is not set
-# CONFIG_DEBUG_PER_CPU_MAPS is not set
-# CONFIG_X86_PTDUMP is not set
-CONFIG_DEBUG_RODATA=y
-CONFIG_DEBUG_RODATA_TEST=y
-# CONFIG_DEBUG_NX_TEST is not set
-# CONFIG_4KSTACKS is not set
-# CONFIG_IOMMU_STRESS is not set
-CONFIG_IO_DELAY_TYPE_0X80=0
-CONFIG_IO_DELAY_TYPE_0XED=1
-CONFIG_IO_DELAY_TYPE_UDELAY=2
-CONFIG_IO_DELAY_TYPE_NONE=3
-CONFIG_IO_DELAY_0X80=y
-# CONFIG_IO_DELAY_0XED is not set
-# CONFIG_IO_DELAY_UDELAY is not set
-# CONFIG_IO_DELAY_NONE is not set
-CONFIG_DEFAULT_IO_DELAY_TYPE=0
-# CONFIG_CPA_DEBUG is not set
-# CONFIG_OPTIMIZE_INLINING is not set
-
-#
-# Security options
-#
-CONFIG_KEYS=y
-# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
-# CONFIG_SECURITY is not set
-# CONFIG_SECURITYFS is not set
-# CONFIG_SECURITY_FILE_CAPABILITIES is not set
-# CONFIG_IMA is not set
-CONFIG_XOR_BLOCKS=m
-CONFIG_ASYNC_CORE=m
-CONFIG_ASYNC_MEMCPY=m
-CONFIG_ASYNC_XOR=m
-CONFIG_ASYNC_PQ=m
-CONFIG_ASYNC_RAID6_RECOV=m
-CONFIG_ASYNC_TX_DISABLE_PQ_VAL_DMA=y
-CONFIG_ASYNC_TX_DISABLE_XOR_VAL_DMA=y
-CONFIG_CRYPTO=y
-
-#
-# Crypto core or helper
-#
-CONFIG_CRYPTO_FIPS=y
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_ALGAPI2=y
-CONFIG_CRYPTO_AEAD=m
-CONFIG_CRYPTO_AEAD2=y
-CONFIG_CRYPTO_BLKCIPHER=m
-CONFIG_CRYPTO_BLKCIPHER2=y
-CONFIG_CRYPTO_HASH=y
-CONFIG_CRYPTO_HASH2=y
-CONFIG_CRYPTO_RNG=m
-CONFIG_CRYPTO_RNG2=y
-CONFIG_CRYPTO_PCOMP=y
-CONFIG_CRYPTO_MANAGER=y
-CONFIG_CRYPTO_MANAGER2=y
-CONFIG_CRYPTO_GF128MUL=m
-# CONFIG_CRYPTO_NULL is not set
-CONFIG_CRYPTO_WORKQUEUE=y
-CONFIG_CRYPTO_CRYPTD=m
-CONFIG_CRYPTO_AUTHENC=m
-# CONFIG_CRYPTO_TEST is not set
-
-#
-# Authenticated Encryption with Associated Data
-#
-CONFIG_CRYPTO_CCM=m
-CONFIG_CRYPTO_GCM=m
-CONFIG_CRYPTO_SEQIV=m
-
-#
-# Block modes
-#
-CONFIG_CRYPTO_CBC=m
-CONFIG_CRYPTO_CTR=m
-CONFIG_CRYPTO_CTS=m
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_LRW=m
-CONFIG_CRYPTO_PCBC=m
-CONFIG_CRYPTO_XTS=m
-
-#
-# Hash modes
-#
-CONFIG_CRYPTO_HMAC=y
-CONFIG_CRYPTO_XCBC=m
-CONFIG_CRYPTO_VMAC=m
-
-#
-# Digest
-#
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_CRC32C_INTEL=m
-CONFIG_CRYPTO_GHASH=m
-# CONFIG_CRYPTO_MD4 is not set
-CONFIG_CRYPTO_MD5=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_RMD128=m
-CONFIG_CRYPTO_RMD160=m
-CONFIG_CRYPTO_RMD256=m
-CONFIG_CRYPTO_RMD320=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_TGR192=m
-CONFIG_CRYPTO_WP512=m
-
-#
-# Ciphers
-#
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_AES_586=m
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_CAMELLIA=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_DES=m
-CONFIG_CRYPTO_FCRYPT=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_SALSA20=m
-CONFIG_CRYPTO_SALSA20_586=m
-CONFIG_CRYPTO_SEED=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_TWOFISH_COMMON=m
-CONFIG_CRYPTO_TWOFISH_586=m
-
-#
-# Compression
-#
-CONFIG_CRYPTO_DEFLATE=y
-CONFIG_CRYPTO_ZLIB=m
-CONFIG_CRYPTO_LZO=m
-
-#
-# Random Number Generation
-#
-CONFIG_CRYPTO_ANSI_CPRNG=m
-CONFIG_CRYPTO_HW=y
-CONFIG_CRYPTO_DEV_PADLOCK=m
-CONFIG_CRYPTO_DEV_PADLOCK_AES=m
-CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
-CONFIG_CRYPTO_DEV_GEODE=m
-CONFIG_CRYPTO_DEV_HIFN_795X=m
-CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y
-# CONFIG_BINARY_PRINTF is not set
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_GENERIC_FIND_FIRST_BIT=y
-CONFIG_GENERIC_FIND_NEXT_BIT=y
-CONFIG_GENERIC_FIND_LAST_BIT=y
-CONFIG_CRC_CCITT=m
-CONFIG_CRC16=m
-CONFIG_CRC_T10DIF=m
-CONFIG_CRC_ITU_T=m
-CONFIG_CRC32=y
-CONFIG_CRC7=m
-CONFIG_LIBCRC32C=m
-CONFIG_AUDIT_GENERIC=y
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_LZO_COMPRESS=m
-CONFIG_LZO_DECOMPRESS=m
-CONFIG_DECOMPRESS_GZIP=y
-CONFIG_DECOMPRESS_BZIP2=y
-CONFIG_DECOMPRESS_LZMA=y
-CONFIG_TEXTSEARCH=y
-CONFIG_TEXTSEARCH_KMP=m
-CONFIG_TEXTSEARCH_BM=m
-CONFIG_TEXTSEARCH_FSM=m
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
-CONFIG_CHECK_SIGNATURE=y
-CONFIG_NLATTR=y
index de28f8e259c8cf59870e6ae7a2bdd8d723c1c969..8bc66f9121d1be5532d9418c63d7cb02226fde34 100644 (file)
@@ -1,52 +1,40 @@
-    $subfirewall->{'10.dnat'} = {
-                                'caption' => $Lang::tr{'ssport forwarding'},
-                                'uri' => '/cgi-bin/portfw.cgi',
-                                'title' => "$Lang::tr{'ssport forwarding'}",
-                                'enabled' => 1,
-                                };
-    $subfirewall->{'20.xtaccess'} = {
-                                'caption' => $Lang::tr{'external access'},
-                                'uri' => '/cgi-bin/xtaccess.cgi',
-                                'title' => "$Lang::tr{'external access'}",
-                                'enabled' => 1,
-                                };
-    $subfirewall->{'30.wireless'} = {
-                               'caption' => $Lang::tr{'blue access'},
-                               'uri' => '/cgi-bin/wireless.cgi',
-                               'title' => "$Lang::tr{'blue access'}",
+    $subfirewall->{'10.forward'} = {
+                               'caption' => $Lang::tr{'fwdfw menu'},
+                               'uri' => '/cgi-bin/firewall.cgi',
+                               'title' => "$Lang::tr{'fwdfw menu'}",
                                'enabled' => 1,
-                                };
-    $subfirewall->{'40.dmz'} = {
-                               'caption' => $Lang::tr{'ssdmz pinholes'},
-                               'uri' => '/cgi-bin/dmzholes.cgi',
-                               'title' => "$Lang::tr{'dmz pinhole configuration'}",
+                               };
+       $subfirewall->{'20.fwhost'} = {
+                               'caption' => $Lang::tr{'fwhost menu'},
+                               'uri' => '/cgi-bin/fwhosts.cgi',
+                               'title' => "$Lang::tr{'fwhost menu'}",
                                'enabled' => 1,
-                                };
-    $subfirewall->{'50.outgoing'} = {
-                               'caption' => $Lang::tr{'outgoing firewall'},
-                               'uri' => '/cgi-bin/outgoingfw.cgi',
-                               'title' => "$Lang::tr{'outgoing firewall'}",
+                               };
+    $subfirewall->{'30.optionsfw'} = {
+                               'caption' => $Lang::tr{'options fw'},
+                               'uri' => '/cgi-bin/optionsfw.cgi',
+                               'title' => "$Lang::tr{'options fw'}",
                                'enabled' => 1,
                                };
-    $subfirewall->{'51.outgoinggrp'} = {
-                               'caption' => $Lang::tr{'outgoing firewall groups'},
-                               'uri' => '/cgi-bin/outgoinggrp.cgi',
-                               'title' => "$Lang::tr{'outgoing firewall groups'}",
+       $subfirewall->{'40.p2p'} = {
+                               'caption' => 'P2P-Block',
+                               'uri' => '/cgi-bin/p2p-block.cgi',
+                               'title' => "P2P-Block",
                                'enabled' => 1,
                                };
-    $subfirewall->{'60.upnp'} = {
+    $subfirewall->{'60.wireless'} = {
+                               'caption' => $Lang::tr{'blue access'},
+                               'uri' => '/cgi-bin/wireless.cgi',
+                               'title' => "$Lang::tr{'blue access'}",
+                               'enabled' => 1,
+                                };                      
+    $subfirewall->{'70.upnp'} = {
                                'caption' => 'UPnP',
                                'uri' => '/cgi-bin/upnp.cgi',
                                'title' => "Universal Plug and Play",
                                'enabled' => 0,
                                };
-    $subfirewall->{'60.optingsfw'} = {
-                               'caption' => $Lang::tr{'options fw'},
-                               'uri' => '/cgi-bin/optionsfw.cgi',
-                               'title' => "$Lang::tr{'options fw'}",
-                               'enabled' => 1,
-                               };
-    $subfirewall->{'70.iptables'} = {
+       $subfirewall->{'90.iptables'} = {
                                'caption' => $Lang::tr{'ipts'},
                                'uri' => '/cgi-bin/iptables.cgi',
                                'title' => "$Lang::tr{'ipts'}",
diff --git a/config/outgoingfw/defaultservices b/config/outgoingfw/defaultservices
deleted file mode 100644 (file)
index f2cf475..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-bootpc,68,tcp&udp,Bootstrap Protocol Client
-bootps,67,tcp&udp,Bootstrap Protocol Server
-domain,53,tcp&udp,Domain Name Server
-echo,7,tcp&udp,Echo
-ftp,21,tcp&udp,File Transfer Control
-ftp-data,20,tcp&udp,File Control Data
-http,80,tcp,Hypertext Transfer Protocol
-https,443,tcp,secure HTTP
-imap,143,tcp,Interactive Mail Access Protocol
-imap3,220,tcp,Interactive Mail Access Protocol v3
-imaps,993,tcp,secure IMAP
-ipfire-https,444,tcp,IPFire HTTPS
-ipfire-ssh,222,tcp&udp,IPFire SSH
-irc,194,tcp&udp,Internet Relay Chat
-ircd,6667,tcp&udp,Internet Relay Chat
-microsoft-ds,445,tcp&udp,Netbios Filesharing
-nameserver,42,tcp&udp,Host Name Server
-netbios-dgm,138,tcp&udp,NETBIOS Datagram Service
-netbios-ns,137,tcp&udp,NETBIOS Name Server
-netbios-ssn,139,tcp&udp,NETBIOS Session Service
-nfs,2049,tcp&udp,Network File System
-ntp,123,udp,Network Time Protocol
-pop3,110,tcp,POP3 Email
-pop3s,995,tcp,secure POP3 Email
-sftp,115,tcp&udp,secure File Transfer Protocol
-smtp,25,tcp,Simple Mail Transfer Protocol
-smtps,465,tcp,secure Simple Mail Transfer Protocol
-snmp,161,tcp&udp,Simple Network Management
-snmptrap,162,udp,SNMP Trap
-ssh,22,tcp&udp,SSH
-telnet,23,tcp&udp,Telnet
-tftp,69,tcp&udp,Trivial File Transfer
-time,37,tcp&udp,Time
-wins,1512,tcp&udp,Windows Internet Name Service
diff --git a/config/outgoingfw/outgoingfw.pl b/config/outgoingfw/outgoingfw.pl
deleted file mode 100644 (file)
index 1208567..0000000
+++ /dev/null
@@ -1,286 +0,0 @@
-#!/usr/bin/perl
-###############################################################################
-#                                                                             #
-# IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2011  IPFire Team                                        #
-#                                                                             #
-# This program is free software: you can redistribute it and/or modify        #
-# it under the terms of the GNU General Public License as published by        #
-# the Free Software Foundation, either version 3 of the License, or           #
-# (at your option) any later version.                                         #
-#                                                                             #
-# This program is distributed in the hope that it will be useful,             #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
-# GNU General Public License for more details.                                #
-#                                                                             #
-# You should have received a copy of the GNU General Public License           #
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
-#                                                                             #
-###############################################################################
-
-
-use strict;
-# enable only the following on debugging purpose
-#use warnings;
-
-require '/var/ipfire/general-functions.pl';
-require "${General::swroot}/lang.pl";
-
-my %outfwsettings = ();
-my %checked = ();
-my %selected= () ;
-my %netsettings = ();
-my $errormessage = "";
-my $configentry = "";
-my @configs = ();
-my @configline = ();
-my $p2pentry = "";
-my @p2ps = ();
-my @p2pline = ();
-my $CMD = "";
-my $P2PSTRING = "";
-
-my $DEBUG = 0;
-
-my $configfile = "/var/ipfire/outgoing/rules";
-my $p2pfile = "/var/ipfire/outgoing/p2protocols";
-
-### Values that have to be initialized
-$outfwsettings{'ACTION'} = '';
-$outfwsettings{'VALID'} = 'yes';
-$outfwsettings{'EDIT'} = 'no';
-$outfwsettings{'NAME'} = '';
-$outfwsettings{'SNET'} = '';
-$outfwsettings{'SIP'} = '';
-$outfwsettings{'SPORT'} = '';
-$outfwsettings{'SMAC'} = '';
-$outfwsettings{'DIP'} = '';
-$outfwsettings{'DPORT'} = '';
-$outfwsettings{'PROT'} = '';
-$outfwsettings{'STATE'} = '';
-$outfwsettings{'DISPLAY_DIP'} = '';
-$outfwsettings{'DISPLAY_DPORT'} = '';
-$outfwsettings{'DISPLAY_SMAC'} = '';
-$outfwsettings{'DISPLAY_SIP'} = '';
-$outfwsettings{'POLICY'} = 'MODE0';
-
-my @SOURCE = "";
-my $SOURCE = "";
-my $DESTINATION = "";
-my @PROTO = "";
-my $PROTO = "";
-my $DPORT = "";
-my $DEV = "";
-my $MAC = "";
-my $DO = "";
-my $DAY = "";
-
-# read files
-&General::readhash("${General::swroot}/outgoing/settings", \%outfwsettings);
-&General::readhash("${General::swroot}/ethernet/settings", \%netsettings);
-
-$netsettings{'RED_DEV'}=`cat /var/ipfire/red/iface`;
-$netsettings{'RED_IP'}=`cat /var/ipfire/red/local-ipaddress`;
-
-open( FILE, "< $configfile" ) or die "Unable to read $configfile";
-@configs = <FILE>;
-close FILE;
-
-if ( $outfwsettings{'POLICY'} eq 'MODE1' ) {
-       $outfwsettings{'STATE'} = "ALLOW";
-       $DO = "RETURN";
-} elsif ( $outfwsettings{'POLICY'} eq 'MODE2' ) {
-       $outfwsettings{'STATE'} = "DENY";
-       $DO = "DROP -m comment --comment 'DROP_OUTGOINGFW '";
-}
-
-### Initialize IPTables
-system("/sbin/iptables --flush OUTGOINGFW >/dev/null 2>&1");
-system("/sbin/iptables --delete-chain OUTGOINGFW >/dev/null 2>&1");
-system("/sbin/iptables -N OUTGOINGFW >/dev/null 2>&1");
-
-system("/sbin/iptables --flush OUTGOINGFWMAC >/dev/null 2>&1");
-system("/sbin/iptables --delete-chain OUTGOINGFWMAC >/dev/null 2>&1");
-system("/sbin/iptables -N OUTGOINGFWMAC >/dev/null 2>&1");
-
-if ( $outfwsettings{'POLICY'} eq 'MODE0' ) {
-       &firewall_local_reload();
-       exit 0
-}
-
-if ( $outfwsettings{'POLICY'} eq 'MODE1' ) {
-       $CMD = "/sbin/iptables -A OUTGOINGFW -m state --state ESTABLISHED,RELATED -j RETURN";
-       if ($DEBUG) { print "$CMD\n"; } else { system("$CMD"); }
-       $CMD = "/sbin/iptables -A OUTGOINGFWMAC -m state --state ESTABLISHED,RELATED -j RETURN";
-       if ($DEBUG) { print "$CMD\n"; } else { system("$CMD"); }
-               $CMD = "/sbin/iptables -A OUTGOINGFW -p icmp -j RETURN";
-       if ($DEBUG) { print "$CMD\n"; } else { system("$CMD"); }
-               $CMD = "/sbin/iptables -A OUTGOINGFWMAC -p icmp -j RETURN";
-       if ($DEBUG) { print "$CMD\n"; } else { system("$CMD"); }
-}
-
-foreach $configentry (sort @configs)
-{
-       @SOURCE = "";
-       $DESTINATION = "";
-       $PROTO = "";
-       $DPORT = "";
-       $DEV = "";
-       $MAC = "";
-       @configline = split( /\;/, $configentry );
-
-       if ($outfwsettings{'STATE'} eq $configline[0]) {
-               if ($configline[2] eq 'green') {
-                       @SOURCE = ("$netsettings{'GREEN_NETADDRESS'}/$netsettings{'GREEN_NETMASK'}");
-                       $DEV = $netsettings{'GREEN_DEV'};
-               } elsif ($configline[2] eq 'red') {
-                       @SOURCE = ("$netsettings{'RED_IP'}");
-                       $DEV = "";
-               } elsif ($configline[2] eq 'blue') {
-                       @SOURCE = ("$netsettings{'BLUE_NETADDRESS'}/$netsettings{'BLUE_NETMASK'}");
-                       $DEV = $netsettings{'BLUE_DEV'};
-               } elsif ($configline[2] eq 'orange') {
-                       @SOURCE = ("$netsettings{'ORANGE_NETADDRESS'}/$netsettings{'ORANGE_NETMASK'}");
-                       $DEV = $netsettings{'ORANGE_DEV'};
-               } elsif ($configline[2] eq 'ipsec') {
-                       @SOURCE = "";
-                       $DEV = "ipsec+";
-               } elsif ($configline[2] eq 'ovpn') {
-                       @SOURCE = "";
-                       $DEV = "tun+";
-               } elsif ($configline[2] eq 'ip') {
-                       @SOURCE = ("$configline[5]");
-                       $DEV = "";
-               } elsif ($configline[2] eq 'mac') {
-                       @SOURCE = ("$configline[6]");
-                       $DEV = "";
-               } elsif ($configline[2] eq 'all') {
-                       @SOURCE = ("0/0");
-                       $DEV = "";
-               } else {
-                       if ( -e "/var/ipfire/outgoing/groups/ipgroups/$configline[2]" ) {
-                               @SOURCE = `cat /var/ipfire/outgoing/groups/ipgroups/$configline[2]`;
-                       } elsif ( -e "/var/ipfire/outgoing/groups/macgroups/$configline[2]" ) {
-                               @SOURCE = `cat /var/ipfire/outgoing/groups/macgroups/$configline[2]`;
-                               $configline[2] = "mac";
-                       }
-                       $DEV = "";
-               }
-
-               if ($configline[7]) { $DESTINATION = "$configline[7]"; } else { $DESTINATION = "0/0"; }
-
-               if ($configline[3] eq 'tcp') {
-                       @PROTO = ("tcp");
-               } elsif ($configline[3] eq 'udp') {
-                       @PROTO  = ("udp");
-               } elsif ($configline[3] eq 'esp') {
-                       @PROTO = ("esp");
-               } elsif ($configline[3] eq 'gre') {
-                       @PROTO = ("gre");
-               } else {
-                       @PROTO = ("tcp","udp");
-               }
-
-               my $macrule = 0;
-               foreach $PROTO (@PROTO){
-                       foreach $SOURCE (@SOURCE) {
-                               $SOURCE =~ s/\s//gi;
-
-                               if ( $SOURCE eq "" || $configline[1] eq "" ){next;}
-
-                               if ( ( $configline[6] ne "" || $configline[2] eq 'mac' ) && $configline[2] ne 'all'){
-                                       $SOURCE =~ s/[^a-zA-Z0-9]/:/gi;
-                                       $CMD = "-m mac --mac-source $SOURCE -d $DESTINATION -p $PROTO";
-                                       $macrule = 1;
-                               } else {
-                                       $CMD = "-s $SOURCE -d $DESTINATION -p $PROTO";
-                               }
-
-                                if ($configline[8] && ( $configline[3] ne 'esp' || $configline[3] ne 'gre') ) {
-                                       $DPORT = "$configline[8]";
-                                       $CMD = "$CMD -m multiport --destination-port $DPORT";
-                                }
-
-                                if ($DEV) {
-                                       $CMD = "$CMD -i $DEV";
-                               }
-
-                               if ($configline[17] && $configline[18]) {
-                                       $DAY = "";
-                                       if ($configline[10]){$DAY = "Mon,"}
-                                       if ($configline[11]){$DAY .= "Tue,"}
-                                       if ($configline[12]){$DAY .= "Wed,"}
-                                       if ($configline[13]){$DAY .= "Thu,"}
-                                       if ($configline[14]){$DAY .= "Fri,"}
-                                       if ($configline[15]){$DAY .= "Sat,"}
-                                       if ($configline[16]){$DAY .= "Sun"}
-                                       $CMD = "$CMD -m time --timestart $configline[17] --timestop $configline[18] --weekdays $DAY";
-                               }
-
-                               $CMD = "$CMD -o $netsettings{'RED_DEV'}";
-
-                               if ( $configline[9] eq $Lang::tr{'aktiv'} && $outfwsettings{'POLICY'} eq 'MODE1' ) {
-                                       applyrule("$CMD -m limit --limit 10/minute -j LOG --log-prefix 'LOG_OUTGOINGFW '", $macrule);
-                               } elsif ( $configline[9] eq $Lang::tr{'aktiv'} && $outfwsettings{'POLICY'} eq 'MODE2' ) {
-                                       applyrule("$CMD -m limit --limit 10/minute -j LOG --log-prefix 'DROP_OUTGOINGFW '", $macrule);
-                               }
-
-                               applyrule("$CMD -j $DO", $macrule);
-                       }
-               }
-       }
-}
-
-### Do the P2P-Stuff here
-open( FILE, "< $p2pfile" ) or die "Unable to read $p2pfile";
-@p2ps = <FILE>;
-close FILE;
-
-$CMD = "-m ipp2p";
-
-foreach $p2pentry (sort @p2ps) {
-       @p2pline = split( /\;/, $p2pentry );
-       if ( $outfwsettings{'POLICY'} eq 'MODE2' ) {
-               $DO = "DROP";
-               if ("$p2pline[2]" eq "off") {
-                       $P2PSTRING = "$P2PSTRING --$p2pline[1]";
-               }
-       } else {
-               $DO = "RETURN";
-               if ("$p2pline[2]" eq "on") {
-                       $P2PSTRING = "$P2PSTRING --$p2pline[1]";
-               }
-       }
-}
-if ($P2PSTRING) {
-       applyrule("$CMD $P2PSTRING -j $DO", 0);
-}
-
-if ( $outfwsettings{'POLICY'} eq 'MODE1' ) {
-       if ( $outfwsettings{'MODE1LOG'} eq 'on' ) {
-               applyrule("-o $netsettings{'RED_DEV'} -m limit --limit 10/minute -j LOG --log-prefix 'DROP_OUTGOINGFW '", 0);
-       }
-
-       applyrule("-o $netsettings{'RED_DEV'} -j DROP -m comment --comment 'DROP_OUTGOINGFW '", 0);
-}
-
-&firewall_local_reload();
-
-sub applyrule($$) {
-       my $cmd = shift;
-       my $macrule = shift;
-
-       system("/sbin/iptables -A OUTGOINGFWMAC $cmd");
-       if ($macrule == 0) {
-               system("/sbin/iptables -A OUTGOINGFW $cmd");
-       }
-}
-
-sub firewall_local_reload() {
-       my $script = "/etc/sysconfig/firewall.local";
-
-       if ( -x $script ) {
-               system("$script reload >/dev/null 2>&1");
-       }
-}
index 9be3581cb5a6edfad5e7f9c5753ad1c1536a3a0a..a1cd423c505400cde97608efde50f2f60f4e37c4 100644 (file)
@@ -1390,9 +1390,11 @@ srv/web/ipfire/cgi-bin/credits.cgi
 srv/web/ipfire/cgi-bin/dns.cgi
 srv/web/ipfire/cgi-bin/ddns.cgi
 srv/web/ipfire/cgi-bin/dhcp.cgi
-srv/web/ipfire/cgi-bin/dmzholes.cgi
+#srv/web/ipfire/cgi-bin/dmzholes.cgi
 srv/web/ipfire/cgi-bin/extrahd.cgi
 srv/web/ipfire/cgi-bin/fireinfo.cgi
+srv/web/ipfire/cgi-bin/firewall.cgi
+srv/web/ipfire/cgi-bin/fwhosts.cgi
 srv/web/ipfire/cgi-bin/gui.cgi
 srv/web/ipfire/cgi-bin/hardwaregraphs.cgi
 srv/web/ipfire/cgi-bin/hosts.cgi
@@ -1408,12 +1410,12 @@ srv/web/ipfire/cgi-bin/modem.cgi
 srv/web/ipfire/cgi-bin/netexternal.cgi
 srv/web/ipfire/cgi-bin/netinternal.cgi
 srv/web/ipfire/cgi-bin/netother.cgi
-srv/web/ipfire/cgi-bin/outgoingfw.cgi
-srv/web/ipfire/cgi-bin/outgoinggrp.cgi
+#srv/web/ipfire/cgi-bin/outgoingfw.cgi
+#srv/web/ipfire/cgi-bin/outgoinggrp.cgi
 srv/web/ipfire/cgi-bin/optionsfw.cgi
 srv/web/ipfire/cgi-bin/ovpnmain.cgi
+srv/web/ipfire/cgi-bin/p2p-block.cgi
 srv/web/ipfire/cgi-bin/pakfire.cgi
-srv/web/ipfire/cgi-bin/portfw.cgi
 srv/web/ipfire/cgi-bin/pppsetup.cgi
 srv/web/ipfire/cgi-bin/proxy.cgi
 srv/web/ipfire/cgi-bin/qos.cgi
@@ -1432,6 +1434,6 @@ srv/web/ipfire/cgi-bin/wakeonlan.cgi
 srv/web/ipfire/cgi-bin/webaccess.cgi
 srv/web/ipfire/cgi-bin/wireless.cgi
 srv/web/ipfire/cgi-bin/wirelessclient.cgi
-srv/web/ipfire/cgi-bin/xtaccess.cgi
+#srv/web/ipfire/cgi-bin/xtaccess.cgi
 srv/web/ipfire/html
 var/updatecache
index 4d4ed18bf37e63adef096e1dca22758acb11aaa3..ca3defcb01f66c419aa853a5952eb142b7619dab 100644 (file)
@@ -1,7 +1,7 @@
 #boot/ipfirerd-KVER-kirkwood.img
-#boot/ipfirerd-KVER-omap.img
+#boot/ipfirerd-KVER-multi.img
 #boot/uInit-ipfire-kirkwood
-#boot/uInit-ipfire-omap
+#boot/uInit-ipfire-multi
 etc/dracut.conf
 etc/dracut.conf.d
 #etc/dracut.conf.d/dracut.conf
index 25fca8db4594873cdccb3021c8a9dbb040d03bd6..1b8fbda0066c8d46c671191a7655812b98df472e 100644 (file)
@@ -81,11 +81,9 @@ etc/rc.d/init.d/networking/red.up/05-RS-dnsmasq
 etc/rc.d/init.d/networking/red.up/10-miniupnpd
 etc/rc.d/init.d/networking/red.up/10-multicast
 etc/rc.d/init.d/networking/red.up/20-RL-firewall
-etc/rc.d/init.d/networking/red.up/22-outgoingfwctrl
+etc/rc.d/init.d/networking/red.up/22-forwardfwctrl
 etc/rc.d/init.d/networking/red.up/23-RS-snort
 etc/rc.d/init.d/networking/red.up/24-RS-qos
-etc/rc.d/init.d/networking/red.up/25-portfw
-etc/rc.d/init.d/networking/red.up/26-xtaccess
 etc/rc.d/init.d/networking/red.up/27-RS-squid
 etc/rc.d/init.d/networking/red.up/30-ddns
 etc/rc.d/init.d/networking/red.up/40-ipac
diff --git a/config/rootfiles/common/armv5tel/installer b/config/rootfiles/common/armv5tel/installer
deleted file mode 100644 (file)
index ef5e901..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-#etc/system-release
-#opt/pakfire/db/core/mine
-#var/ipfire/firebuild
index 58acd22d297523737007df4a3e8806b328707cd5..3354d9eeeb5118b588186ab9d075ee216c6a1661 100644 (file)
@@ -1,6 +1,7 @@
 boot/System.map-KVER-ipfire-kirkwood
 #boot/System.map-ipfire-kirkwood
 boot/config-KVER-ipfire-kirkwood
+boot/dtb-KVER-ipfire-kirkwood
 boot/uImage-ipfire-kirkwood
 boot/vmlinuz-KVER-ipfire-kirkwood
 etc/modprobe.d/framebuffer
diff --git a/config/rootfiles/common/armv5tel/linux-multi b/config/rootfiles/common/armv5tel/linux-multi
new file mode 100644 (file)
index 0000000..e047c9f
--- /dev/null
@@ -0,0 +1,2822 @@
+boot/System.map-KVER-ipfire-multi
+#boot/System.map-ipfire-multi
+boot/config-KVER-ipfire-multi
+boot/dtb-KVER-ipfire-multi
+#boot/dtb-KVER-ipfire-multi/am335x-bone.dtb
+#boot/dtb-KVER-ipfire-multi/am335x-evm.dtb
+#boot/dtb-KVER-ipfire-multi/am335x-evmsk.dtb
+#boot/dtb-KVER-ipfire-multi/armada-370-db.dtb
+#boot/dtb-KVER-ipfire-multi/armada-370-mirabox.dtb
+#boot/dtb-KVER-ipfire-multi/armada-370-rd.dtb
+#boot/dtb-KVER-ipfire-multi/armada-xp-db.dtb
+#boot/dtb-KVER-ipfire-multi/armada-xp-gp.dtb
+#boot/dtb-KVER-ipfire-multi/armada-xp-openblocks-ax3-4.dtb
+#boot/dtb-KVER-ipfire-multi/bcm11351-brt.dtb
+#boot/dtb-KVER-ipfire-multi/bcm2835-rpi-b.dtb
+#boot/dtb-KVER-ipfire-multi/ccu9540.dtb
+#boot/dtb-KVER-ipfire-multi/ecx-2000.dtb
+#boot/dtb-KVER-ipfire-multi/highbank.dtb
+#boot/dtb-KVER-ipfire-multi/hrefprev60.dtb
+#boot/dtb-KVER-ipfire-multi/hrefv60plus.dtb
+#boot/dtb-KVER-ipfire-multi/imx25-karo-tx25.dtb
+#boot/dtb-KVER-ipfire-multi/imx25-pdk.dtb
+#boot/dtb-KVER-ipfire-multi/imx27-apf27.dtb
+#boot/dtb-KVER-ipfire-multi/imx27-apf27dev.dtb
+#boot/dtb-KVER-ipfire-multi/imx27-pdk.dtb
+#boot/dtb-KVER-ipfire-multi/imx27-phytec-phycore.dtb
+#boot/dtb-KVER-ipfire-multi/imx31-bug.dtb
+#boot/dtb-KVER-ipfire-multi/imx51-apf51.dtb
+#boot/dtb-KVER-ipfire-multi/imx51-apf51dev.dtb
+#boot/dtb-KVER-ipfire-multi/imx51-babbage.dtb
+#boot/dtb-KVER-ipfire-multi/imx53-ard.dtb
+#boot/dtb-KVER-ipfire-multi/imx53-evk.dtb
+#boot/dtb-KVER-ipfire-multi/imx53-mba53.dtb
+#boot/dtb-KVER-ipfire-multi/imx53-qsb.dtb
+#boot/dtb-KVER-ipfire-multi/imx53-smd.dtb
+#boot/dtb-KVER-ipfire-multi/imx6dl-sabreauto.dtb
+#boot/dtb-KVER-ipfire-multi/imx6dl-sabresd.dtb
+#boot/dtb-KVER-ipfire-multi/imx6dl-wandboard.dtb
+#boot/dtb-KVER-ipfire-multi/imx6q-arm2.dtb
+#boot/dtb-KVER-ipfire-multi/imx6q-sabreauto.dtb
+#boot/dtb-KVER-ipfire-multi/imx6q-sabrelite.dtb
+#boot/dtb-KVER-ipfire-multi/imx6q-sabresd.dtb
+#boot/dtb-KVER-ipfire-multi/imx6q-sbc6x.dtb
+#boot/dtb-KVER-ipfire-multi/marco-evb.dtb
+#boot/dtb-KVER-ipfire-multi/omap2420-h4.dtb
+#boot/dtb-KVER-ipfire-multi/omap3-beagle-xm.dtb
+#boot/dtb-KVER-ipfire-multi/omap3-beagle.dtb
+#boot/dtb-KVER-ipfire-multi/omap3-devkit8000.dtb
+#boot/dtb-KVER-ipfire-multi/omap3-evm.dtb
+#boot/dtb-KVER-ipfire-multi/omap3-igep0020.dtb
+#boot/dtb-KVER-ipfire-multi/omap3-igep0030.dtb
+#boot/dtb-KVER-ipfire-multi/omap3-tobi.dtb
+#boot/dtb-KVER-ipfire-multi/omap3430-sdp.dtb
+#boot/dtb-KVER-ipfire-multi/omap4-panda-a4.dtb
+#boot/dtb-KVER-ipfire-multi/omap4-panda-es.dtb
+#boot/dtb-KVER-ipfire-multi/omap4-panda.dtb
+#boot/dtb-KVER-ipfire-multi/omap4-sdp.dtb
+#boot/dtb-KVER-ipfire-multi/omap4-var-som.dtb
+#boot/dtb-KVER-ipfire-multi/omap5-evm.dtb
+#boot/dtb-KVER-ipfire-multi/prima2-evb.dtb
+#boot/dtb-KVER-ipfire-multi/snowball.dtb
+#boot/dtb-KVER-ipfire-multi/socfpga_cyclone5.dtb
+#boot/dtb-KVER-ipfire-multi/socfpga_vt.dtb
+#boot/dtb-KVER-ipfire-multi/spear1310-evb.dtb
+#boot/dtb-KVER-ipfire-multi/spear1340-evb.dtb
+#boot/dtb-KVER-ipfire-multi/sun4i-a10-cubieboard.dtb
+#boot/dtb-KVER-ipfire-multi/sun4i-a10-hackberry.dtb
+#boot/dtb-KVER-ipfire-multi/sun4i-a10-mini-xplus.dtb
+#boot/dtb-KVER-ipfire-multi/sun5i-a13-olinuxino.dtb
+#boot/dtb-KVER-ipfire-multi/tegra114-dalmore.dtb
+#boot/dtb-KVER-ipfire-multi/tegra114-pluto.dtb
+#boot/dtb-KVER-ipfire-multi/tegra20-harmony.dtb
+#boot/dtb-KVER-ipfire-multi/tegra20-iris-512.dtb
+#boot/dtb-KVER-ipfire-multi/tegra20-medcom-wide.dtb
+#boot/dtb-KVER-ipfire-multi/tegra20-paz00.dtb
+#boot/dtb-KVER-ipfire-multi/tegra20-plutux.dtb
+#boot/dtb-KVER-ipfire-multi/tegra20-seaboard.dtb
+#boot/dtb-KVER-ipfire-multi/tegra20-tec.dtb
+#boot/dtb-KVER-ipfire-multi/tegra20-trimslice.dtb
+#boot/dtb-KVER-ipfire-multi/tegra20-ventana.dtb
+#boot/dtb-KVER-ipfire-multi/tegra20-whistler.dtb
+#boot/dtb-KVER-ipfire-multi/tegra30-beaver.dtb
+#boot/dtb-KVER-ipfire-multi/tegra30-cardhu-a02.dtb
+#boot/dtb-KVER-ipfire-multi/tegra30-cardhu-a04.dtb
+#boot/dtb-KVER-ipfire-multi/vexpress-v2p-ca15-tc1.dtb
+#boot/dtb-KVER-ipfire-multi/vexpress-v2p-ca15_a7.dtb
+#boot/dtb-KVER-ipfire-multi/vexpress-v2p-ca5s.dtb
+#boot/dtb-KVER-ipfire-multi/vexpress-v2p-ca9.dtb
+#boot/dtb-KVER-ipfire-multi/vt8500-bv07.dtb
+#boot/dtb-KVER-ipfire-multi/wm8505-ref.dtb
+#boot/dtb-KVER-ipfire-multi/wm8650-mid.dtb
+#boot/dtb-KVER-ipfire-multi/wm8850-w70v2.dtb
+#boot/dtb-KVER-ipfire-multi/xenvm-4.2.dtb
+#boot/dtb-KVER-ipfire-multi/zynq-zc702.dtb
+boot/vmlinuz-KVER-ipfire-multi
+boot/zImage-ipfire-multi
+boot/uInit-ipfire-multi
+lib/modules/KVER-ipfire-multi
+#lib/modules/KVER-ipfire-multi/build
+#lib/modules/KVER-ipfire-multi/kernel
+#lib/modules/KVER-ipfire-multi/kernel/arch
+#lib/modules/KVER-ipfire-multi/kernel/arch/arm
+#lib/modules/KVER-ipfire-multi/kernel/arch/arm/crypto
+#lib/modules/KVER-ipfire-multi/kernel/arch/arm/crypto/aes-arm.ko
+#lib/modules/KVER-ipfire-multi/kernel/arch/arm/crypto/sha1-arm.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto
+#lib/modules/KVER-ipfire-multi/kernel/crypto/ansi_cprng.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/anubis.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/arc4.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/asymmetric_keys
+#lib/modules/KVER-ipfire-multi/kernel/crypto/asymmetric_keys/asymmetric_keys.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/asymmetric_keys/public_key.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/asymmetric_keys/rsa.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/asymmetric_keys/x509_key_parser.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/async_tx
+#lib/modules/KVER-ipfire-multi/kernel/crypto/async_tx/async_memcpy.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/async_tx/async_pq.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/async_tx/async_raid6_recov.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/async_tx/async_tx.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/async_tx/async_xor.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/async_tx/raid6test.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/authenc.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/authencesn.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/blowfish_common.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/blowfish_generic.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/camellia_generic.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/cast5_generic.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/cast6_generic.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/cast_common.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/ccm.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/cmac.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/crypto_null.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/cts.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/deflate.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/des_generic.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/fcrypt.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/gcm.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/gf128mul.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/ghash-generic.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/khazad.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/lrw.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/lzo.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/md4.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/michael_mic.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/pcbc.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/pcrypt.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/rmd128.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/rmd160.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/rmd256.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/rmd320.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/salsa20_generic.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/seed.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/serpent_generic.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/sha1_generic.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/sha512_generic.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/tcrypt.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/tea.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/tgr192.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/twofish_common.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/twofish_generic.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/vmac.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/wp512.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/xcbc.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/xor.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/xts.ko
+#lib/modules/KVER-ipfire-multi/kernel/crypto/zlib.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/acard-ahci.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/ahci_platform.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/ata_generic.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_ali.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_amd.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_arasan_cf.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_artop.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_atiixp.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_atp867x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_cmd640.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_cmd64x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_cs5520.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_cs5530.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_cs5536.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_cypress.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_efar.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_hpt366.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_hpt37x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_hpt3x2n.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_hpt3x3.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_imx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_it8213.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_it821x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_jmicron.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_marvell.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_mpiix.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_netcell.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_ninja32.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_ns87410.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_ns87415.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_of_platform.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_oldpiix.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_opti.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_optidma.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_pdc2027x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_pdc202xx_old.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_piccolo.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_platform.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_rdc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_rz1000.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_sch.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_serverworks.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_sil680.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_sis.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_sl82c105.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_triflex.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_via.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pdc_adma.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/sata_highbank.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/sata_inic162x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/sata_mv.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/sata_nv.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/sata_promise.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/sata_qstor.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/sata_sil.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/sata_sil24.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/sata_sis.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/sata_svw.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/sata_sx4.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/sata_uli.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/sata_via.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/sata_vsc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/atm
+#lib/modules/KVER-ipfire-multi/kernel/drivers/atm/atmtcp.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/atm/eni.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/atm/fore_200e.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/atm/he.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/atm/idt77252.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/atm/iphase.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/atm/lanai.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/atm/nicstar.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/atm/solos-pci.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/atm/suni.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/block
+#lib/modules/KVER-ipfire-multi/kernel/drivers/block/DAC960.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/block/cciss.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/block/cryptoloop.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/block/mg_disk.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/block/nvme.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/block/rsxx
+#lib/modules/KVER-ipfire-multi/kernel/drivers/block/rsxx/rsxx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/block/sx8.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/block/umem.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/block/virtio_blk.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/bluetooth
+#lib/modules/KVER-ipfire-multi/kernel/drivers/bluetooth/ath3k.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/bluetooth/bcm203x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/bluetooth/bfusb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/bluetooth/bpa10x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/bluetooth/btmrvl.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/bluetooth/btmrvl_sdio.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/bluetooth/btsdio.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/bluetooth/btusb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/bluetooth/btwilink.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/bluetooth/hci_uart.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/bluetooth/hci_vhci.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/bus
+#lib/modules/KVER-ipfire-multi/kernel/drivers/bus/omap-ocp2scp.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/char
+#lib/modules/KVER-ipfire-multi/kernel/drivers/char/hw_random
+#lib/modules/KVER-ipfire-multi/kernel/drivers/char/hw_random/atmel-rng.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/char/hw_random/exynos-rng.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/char/hw_random/timeriomem-rng.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/char/hw_random/virtio-rng.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/char/ipmi
+#lib/modules/KVER-ipfire-multi/kernel/drivers/char/ipmi/ipmi_devintf.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/char/ipmi/ipmi_msghandler.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/char/ipmi/ipmi_poweroff.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/char/ipmi/ipmi_si.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/char/ipmi/ipmi_watchdog.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/clk
+#lib/modules/KVER-ipfire-multi/kernel/drivers/clk/clk-axi-clkgen.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/clk/clk-si5351.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/clk/clk-twl6040.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/crypto
+#lib/modules/KVER-ipfire-multi/kernel/drivers/crypto/hifn_795x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/crypto/mv_cesa.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/crypto/omap-aes.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/crypto/omap-sham.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/crypto/tegra-aes.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/dma
+#lib/modules/KVER-ipfire-multi/kernel/drivers/dma/imx-dma.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/dma/imx-sdma.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/dma/timb_dma.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/firewire
+#lib/modules/KVER-ipfire-multi/kernel/drivers/firewire/firewire-core.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/firewire/firewire-ohci.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/firewire/firewire-sbp2.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpio
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpio/gpio-adnp.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpio/gpio-ts5500.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpio/gpio-twl4030.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpio/gpio-twl6040.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpio/gpio-viperboard.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/ast
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/ast/ast.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/cirrus
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/cirrus/cirrus.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/drm.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/drm_kms_helper.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/drm_usb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/exynos
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/exynos/exynosdrm.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/i2c
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/i2c/ch7006.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/i2c/sil164.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/i2c/tda998x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/mga
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/mga/mga.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/mgag200
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/mgag200/mgag200.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/nouveau
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/nouveau/nouveau.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/omapdrm
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/omapdrm/omapdrm.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/qxl
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/qxl/qxl.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/r128
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/r128/r128.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/radeon
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/radeon/radeon.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/savage
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/savage/savage.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/tdfx
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/tdfx/tdfx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/ttm
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/ttm/ttm.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/udl
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/udl/udl.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/via
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/via/via.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/vmwgfx
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/vmwgfx/vmwgfx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hid
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hid/hid-aureal.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hid/hid-gyration.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hid/hid-keytouch.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hid/hid-lcpower.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hid/hid-lenovo-tpkbd.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hid/hid-logitech-dj.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hid/hid-ortek.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hid/hid-petalynx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hid/hid-picolcd.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hid/hid-roccat-arvo.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hid/hid-roccat-common.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hid/hid-roccat-isku.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hid/hid-roccat-kone.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hid/hid-roccat-koneplus.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hid/hid-roccat-konepure.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hid/hid-roccat-kovaplus.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hid/hid-roccat-lua.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hid/hid-roccat-pyra.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hid/hid-roccat-savu.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hid/hid-roccat.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hid/hid-saitek.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hid/hid-samsung.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hid/hid-sensor-hub.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hid/hid-speedlink.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hid/hid-sunplus.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hid/hid-thingm.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hid/hid-tivo.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hid/hid-topseed.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hid/hid-twinhan.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hid/hid-zydacron.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hid/i2c-hid
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hid/i2c-hid/i2c-hid.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hsi
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hsi/clients
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hsi/clients/hsi_char.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hsi/hsi.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/ad7414.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/ad7418.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/adm1021.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/adm1025.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/adm1026.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/adm1029.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/adm1031.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/adm9240.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/ads1015.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/ads7828.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/adt7410.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/adt7411.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/adt7462.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/adt7470.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/adt7475.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/adt7x10.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/amc6821.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/asc7621.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/atxp1.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/dme1737.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/ds1621.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/ds620.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/emc1403.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/emc6w201.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/f71805f.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/f71882fg.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/f75375s.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/g760a.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/gl518sm.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/gl520sm.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/hih6130.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/hwmon-vid.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/i5k_amb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/ibmaem.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/ibmpex.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/ina209.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/ina2xx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/it87.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/lineage-pem.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/lm63.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/lm73.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/lm75.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/lm77.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/lm78.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/lm80.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/lm83.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/lm85.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/lm87.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/lm90.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/lm92.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/lm93.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/lm95234.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/lm95241.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/lm95245.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/ltc4151.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/ltc4215.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/ltc4245.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/ltc4261.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/max16065.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/max1619.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/max1668.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/max197.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/max6639.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/max6642.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/max6650.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/max6697.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/mcp3021.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/nct6775.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/ntc_thermistor.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/pc87360.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/pc87427.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/pcf8591.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/pmbus
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/pmbus/adm1275.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/pmbus/lm25066.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/pmbus/max16064.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/pmbus/max34440.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/pmbus/max8688.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/pmbus/pmbus.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/pmbus/pmbus_core.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/pmbus/ucd9000.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/pmbus/ucd9200.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/sch5627.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/sch5636.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/sch56xx-common.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/sht15.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/sht21.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/sis5595.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/smsc47b397.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/smsc47m1.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/smsc47m192.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/thmc50.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/tmp102.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/tmp401.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/tmp421.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/via686a.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/vt1211.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/vt8231.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/w83627ehf.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/w83627hf.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/w83781d.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/w83791d.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/w83792d.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/w83793.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/w83795.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/w83l785ts.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/w83l786ng.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwspinlock
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwspinlock/hwspinlock_core.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwspinlock/omap_hwspinlock.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/algos
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/algos/i2c-algo-bit.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/algos/i2c-algo-pca.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-ali1535.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-ali1563.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-ali15x3.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-amd756.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-amd8111.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-cbus-gpio.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-diolan-u2c.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-i801.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-imx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-isch.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-mv64xxx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-nforce2.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-parport-light.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-pca-platform.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-piix4.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-simtec.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-sis5595.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-sis630.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-sis96x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-tiny-usb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-versatile.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-via.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-viapro.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-viperboard.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/i2c-dev.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/i2c-smbus.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/i2c-stub.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/iio
+#lib/modules/KVER-ipfire-multi/kernel/drivers/iio/common
+#lib/modules/KVER-ipfire-multi/kernel/drivers/iio/common/hid-sensors
+#lib/modules/KVER-ipfire-multi/kernel/drivers/iio/common/hid-sensors/hid-sensor-iio-common.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/iio/common/hid-sensors/hid-sensor-trigger.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/iio/industrialio.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/iio/kfifo_buf.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/input-polldev.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/keyboard
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/keyboard/gpio_keys.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/keyboard/gpio_keys_polled.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/keyboard/imx_keypad.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/keyboard/lm8333.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/keyboard/omap4-keypad.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/keyboard/tegra-kbc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/keyboard/twl4030_keypad.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/matrix-keymap.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/misc
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/misc/ati_remote2.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/misc/cm109.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/misc/keyspan_remote.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/misc/powermate.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/misc/retu-pwrbutton.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/misc/rotary_encoder.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/misc/uinput.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/misc/yealink.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/mouse
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/mouse/appletouch.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/mouse/bcm5974.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/mouse/cyapa.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/mouse/gpio_mouse.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/mouse/psmouse.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/mouse/sermouse.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/mouse/synaptics_i2c.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/mouse/synaptics_usb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/mouse/vsxxxaa.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/serio
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/serio/altera_ps2.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/serio/ambakmi.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/serio/apbps2.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/serio/arc_ps2.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/serio/serio_raw.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/sparse-keymap.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/capi
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/capi/capi.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/capi/capidrv.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/capi/kernelcapi.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/divert
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/divert/dss1_divert.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/gigaset
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/gigaset/gigaset.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/avm
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/avm/b1.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/avm/b1dma.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/avm/b1pci.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/avm/c4.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/avm/t1pci.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/eicon
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/eicon/diva_idi.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/eicon/diva_mnt.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/eicon/divacapi.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/eicon/divadidd.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/eicon/divas.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/mISDN
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/mISDN/avmfritz.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/mISDN/hfcmulti.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/mISDN/hfcpci.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/mISDN/hfcsusb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/mISDN/mISDNinfineon.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/mISDN/mISDNipac.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/mISDN/mISDNisar.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/mISDN/netjet.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/mISDN/speedfax.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/mISDN/w6692.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hisax
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hisax/hfc4s8s_l1.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hisax/hfc_usb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hisax/hisax.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hisax/hisax_fcpcipnp.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hisax/hisax_isac.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hisax/hisax_st5481.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hysdn
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hysdn/hysdn.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/i4l
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/i4l/isdn.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/i4l/isdn_bsdcomp.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/i4l/isdnhdlc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/mISDN
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/mISDN/l1oip.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/mISDN/mISDN_core.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/mISDN/mISDN_dsp.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/leds
+#lib/modules/KVER-ipfire-multi/kernel/drivers/leds/leds-blinkm.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/leds/leds-lm3530.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/leds/leds-lm3533.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/leds/leds-lm355x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/leds/leds-lm3642.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/leds/leds-lp3944.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/leds/leds-lp5521.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/leds/leds-lp5523.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/leds/leds-lp5562.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/leds/leds-lp55xx-common.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/leds/leds-lt3593.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/leds/leds-ot200.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/leds/leds-pca9633.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/leds/leds-regulator.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/leds/leds-tca6507.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/leds/trigger
+#lib/modules/KVER-ipfire-multi/kernel/drivers/leds/trigger/ledtrig-backlight.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/leds/trigger/ledtrig-camera.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/leds/trigger/ledtrig-default-on.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/leds/trigger/ledtrig-gpio.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/leds/trigger/ledtrig-netdev.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/leds/trigger/ledtrig-oneshot.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/leds/trigger/ledtrig-timer.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/leds/trigger/ledtrig-transient.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/md
+#lib/modules/KVER-ipfire-multi/kernel/drivers/md/bcache
+#lib/modules/KVER-ipfire-multi/kernel/drivers/md/bcache/bcache.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/md/dm-bio-prison.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/md/dm-bufio.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/md/dm-cache-cleaner.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/md/dm-cache-mq.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/md/dm-cache.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/md/dm-crypt.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/md/dm-log-userspace.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/md/dm-multipath.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/md/dm-queue-length.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/md/dm-raid.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/md/dm-round-robin.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/md/dm-service-time.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/md/dm-verity.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/md/faulty.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/md/linear.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/md/multipath.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/md/persistent-data
+#lib/modules/KVER-ipfire-multi/kernel/drivers/md/persistent-data/dm-persistent-data.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/md/raid0.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/md/raid1.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/md/raid10.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/md/raid456.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/common
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/common/b2c2
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/common/b2c2/b2c2-flexcop.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/common/btcx-risc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/common/cx2341x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/common/cypress_firmware.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/common/saa7146
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/common/saa7146/saa7146.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/common/saa7146/saa7146_vv.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/common/siano
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/common/siano/smsdvb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/common/siano/smsmdtv.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/common/tveeprom.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/a8293.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/af9013.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/af9033.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/atbm8830.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/au8522_common.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/au8522_decoder.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/au8522_dig.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/bcm3510.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/cx22700.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/cx22702.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/cx24110.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/cx24113.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/cx24116.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/cx24123.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/cxd2820r.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/dib0070.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/dib0090.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/dib3000mb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/dib3000mc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/dib7000m.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/dib7000p.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/dib8000.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/dibx000_common.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/drxd.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/drxk.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/ds3000.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/dvb-pll.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/ec100.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/isl6405.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/isl6421.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/isl6423.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/it913x-fe.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/itd1000.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/ix2505v.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/l64781.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/lg2160.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/lgdt3305.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/lgdt330x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/lgs8gxx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/lnbp21.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/lnbp22.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/m88dc2800.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/m88ds3103.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/m88rs2000.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/mb86a16.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/mb86a20s.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/mt312.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/mt352.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/nxt200x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/nxt6000.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/or51132.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/or51211.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/rtl2830.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/rtl2832.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/s5h1409.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/s5h1411.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/s5h1420.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/s921.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/si21xx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/sp8870.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/sp887x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/stb0899.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/stb6000.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/stb6100.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/stv0288.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/stv0297.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/stv0299.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/stv0367.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/stv0900.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/stv090x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/stv6110.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/stv6110x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/tda10021.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/tda10023.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/tda10048.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/tda1004x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/tda10071.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/tda10086.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/tda18271c2dd.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/tda665x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/tda8083.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/tda8261.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/tda826x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/ts2020.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/tua6100.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/ves1820.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/ves1x93.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/zl10036.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/zl10039.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/zl10353.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/firewire
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/firewire/firedtv.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/adv7180.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/cs5345.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/cs53l32a.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/cx25840
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/cx25840/cx25840.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/m52790.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/msp3400.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/mt9v011.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/ov7670.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/saa6588.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/saa7115.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/saa7127.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/saa717x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/soc_camera
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/soc_camera/imx074.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/soc_camera/mt9m001.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/soc_camera/mt9m111.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/soc_camera/mt9t031.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/soc_camera/mt9t112.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/soc_camera/mt9v022.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/soc_camera/ov2640.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/soc_camera/ov5642.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/soc_camera/ov6650.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/soc_camera/ov772x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/soc_camera/ov9640.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/soc_camera/ov9740.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/soc_camera/rj54n1cb0c.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/soc_camera/tw9910.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/tda7432.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/tda9840.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/tea6415c.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/tea6420.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/tvaudio.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/tvp5150.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/upd64031a.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/upd64083.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/vp27smpx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/wm8739.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/wm8775.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/mmc
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/mmc/siano
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/mmc/siano/smssdio.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/b2c2
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/b2c2/b2c2-flexcop-pci.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/bt8xx
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/bt8xx/bt878.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/bt8xx/bttv.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/bt8xx/dst.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/bt8xx/dst_ca.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/bt8xx/dvb-bt8xx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/cx18
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/cx18/cx18-alsa.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/cx18/cx18.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/cx23885
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/cx23885/altera-ci.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/cx23885/cx23885.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/cx25821
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/cx25821/cx25821-alsa.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/cx25821/cx25821.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/cx88
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/cx88/cx88-alsa.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/cx88/cx88-blackbird.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/cx88/cx88-dvb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/cx88/cx88-vp3054-i2c.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/cx88/cx8800.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/cx88/cx8802.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/cx88/cx88xx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/dm1105
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/dm1105/dm1105.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/ivtv
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/ivtv/ivtv-alsa.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/ivtv/ivtv.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/ivtv/ivtvfb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/mantis
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/mantis/hopper.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/mantis/mantis.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/mantis/mantis_core.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/ngene
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/ngene/ngene.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/pluto2
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/pluto2/pluto2.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/pt1
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/pt1/earth-pt1.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/saa7134
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/saa7134/saa6752hs.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/saa7134/saa7134-alsa.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/saa7134/saa7134-dvb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/saa7134/saa7134-empress.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/saa7134/saa7134.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/saa7146
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/saa7146/hexium_gemini.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/saa7146/hexium_orion.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/saa7146/mxb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/saa7164
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/saa7164/saa7164.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/ttpci
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/ttpci/budget-av.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/ttpci/budget-ci.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/ttpci/budget-core.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/ttpci/budget-patch.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/ttpci/budget.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/ttpci/dvb-ttpci.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/ttpci/ttpci-eeprom.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/coda.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/davinci
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/davinci/dm644x_ccdc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/davinci/vpfe_capture.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/davinci/vpss.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/m2m-deinterlace.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/marvell-ccic
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/marvell-ccic/cafe_ccic.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/omap
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/omap/omap-vout.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/sh_veu.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/soc_camera
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/soc_camera/mx3_camera.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/soc_camera/sh_mobile_ceu_camera.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/soc_camera/sh_mobile_csi2.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/soc_camera/soc_camera.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/soc_camera/soc_camera_platform.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/soc_camera/soc_mediabus.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/timblogiw.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/ati_remote.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/gpio-ir-recv.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/iguanair.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/imon.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/ir-jvc-decoder.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/ir-lirc-codec.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/ir-mce_kbd-decoder.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/ir-nec-decoder.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/ir-rc5-decoder.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/ir-rc5-sz-decoder.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/ir-rc6-decoder.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/ir-sanyo-decoder.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/ir-sony-decoder.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-adstech-dvb-t-pci.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-alink-dtu-m.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-anysee.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-apac-viewcomp.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-asus-pc39.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-asus-ps3-100.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-ati-tv-wonder-hd-600.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-ati-x10.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-avermedia-a16d.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-avermedia-cardbus.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-avermedia-dvbt.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-avermedia-m135a.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-avermedia-m733a-rm-k6.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-avermedia-rm-ks.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-avermedia.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-avertv-303.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-azurewave-ad-tu700.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-behold-columbus.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-behold.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-budget-ci-old.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-cinergy-1400.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-cinergy.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-dib0700-nec.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-dib0700-rc5.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-digitalnow-tinytwin.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-digittrade.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-dm1105-nec.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-dntv-live-dvb-t.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-dntv-live-dvbt-pro.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-dvbsky.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-em-terratec.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-encore-enltv-fm53.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-encore-enltv.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-encore-enltv2.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-evga-indtube.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-eztv.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-flydvb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-flyvideo.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-fusionhdtv-mce.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-gadmei-rm008z.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-genius-tvgo-a11mce.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-gotview7135.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-hauppauge.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-imon-mce.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-imon-pad.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-iodata-bctv7e.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-it913x-v1.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-it913x-v2.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-kaiomy.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-kworld-315u.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-kworld-pc150u.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-kworld-plus-tv-analog.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-leadtek-y04g0051.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-lirc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-lme2510.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-manli.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-medion-x10-digitainer.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-medion-x10-or2x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-medion-x10.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-msi-digivox-ii.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-msi-digivox-iii.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-msi-tvanywhere-plus.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-msi-tvanywhere.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-nebula.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-nec-terratec-cinergy-xs.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-norwood.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-npgtech.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-pctv-sedna.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-pinnacle-color.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-pinnacle-grey.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-pinnacle-pctv-hd.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-pixelview-002t.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-pixelview-mk12.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-pixelview-new.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-pixelview.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-powercolor-real-angel.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-proteus-2309.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-purpletv.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-pv951.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-rc6-mce.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-real-audio-220-32-keys.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-reddo.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-snapstream-firefly.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-streamzap.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-tbs-nec.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-technisat-usb2.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-terratec-cinergy-xs.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-terratec-slim-2.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-terratec-slim.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-tevii-nec.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-tivo.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-total-media-in-hand-02.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-total-media-in-hand.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-trekstor.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-tt-1500.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-twinhan1027.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-videomate-m1f.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-videomate-s350.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-videomate-tv-pvr.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-winfast-usbii-deluxe.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/keymaps/rc-winfast.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/lirc_dev.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/mceusb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/rc-loopback.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/redrat3.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/streamzap.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/ttusbir.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/tuners
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/tuners/e4000.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/tuners/fc0011.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/tuners/fc0012.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/tuners/fc0013.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/tuners/fc2580.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/tuners/max2165.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/tuners/mt2060.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/tuners/mt2063.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/tuners/mt2131.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/tuners/mt2266.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/tuners/mxl5005s.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/tuners/mxl5007t.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/tuners/qt1010.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/tuners/r820t.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/tuners/tda18212.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/tuners/tda18218.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/tuners/tua9001.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/tuners/tuner_it913x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/au0828
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/au0828/au0828.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/b2c2
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/b2c2/b2c2-flexcop-usb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/cpia2
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/cpia2/cpia2.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/cx231xx
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/cx231xx/cx231xx-alsa.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/cx231xx/cx231xx-dvb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/cx231xx/cx231xx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb-v2
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-af9015.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-af9035.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-anysee.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-au6610.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-az6007.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-ce6230.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-dvbsky.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-ec168.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-gl861.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-it913x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-lmedm04.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-mxl111sf.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-rtl28xxu.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb-v2/dvb_usb_v2.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb-v2/mxl111sf-demod.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb-v2/mxl111sf-tuner.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb/dvb-usb-a800.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb/dvb-usb-af9005-remote.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb/dvb-usb-af9005.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb/dvb-usb-az6027.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb/dvb-usb-cinergyT2.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb/dvb-usb-cxusb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb/dvb-usb-dib0700.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-common.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-mb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-mc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb/dvb-usb-digitv.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb/dvb-usb-dtt200u.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb/dvb-usb-dtv5100.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb/dvb-usb-dw2102.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb/dvb-usb-friio.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb/dvb-usb-gp8psk.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb/dvb-usb-m920x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb/dvb-usb-nova-t-usb2.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb/dvb-usb-opera.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb/dvb-usb-pctv452e.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb/dvb-usb-technisat-usb2.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb/dvb-usb-ttusb2.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb/dvb-usb-umt-010.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb/dvb-usb-vp702x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb/dvb-usb-vp7045.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/dvb-usb/dvb-usb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/em28xx
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/em28xx/em28xx-alsa.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/em28xx/em28xx-dvb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/em28xx/em28xx-rc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/em28xx/em28xx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gl860
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gl860/gspca_gl860.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_benq.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_conex.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_cpia1.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_etoms.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_finepix.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_jeilinj.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_jl2005bcd.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_kinect.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_konica.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_main.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_mars.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_mr97310a.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_nw80x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_ov519.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_ov534.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_ov534_9.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_pac207.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_pac7302.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_pac7311.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_se401.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_sn9c2028.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_sn9c20x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_sonixb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_sonixj.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_spca1528.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_spca500.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_spca501.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_spca505.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_spca506.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_spca508.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_spca561.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_sq905.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_sq905c.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_sq930x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_stk014.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_stv0680.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_sunplus.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_t613.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_topro.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_tv8532.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_vc032x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_vicam.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_xirlink_cit.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_zc3xx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/m5602
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/m5602/gspca_m5602.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/stv06xx
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/stv06xx/gspca_stv06xx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/hdpvr
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/hdpvr/hdpvr.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/pvrusb2
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/pvrusb2/pvrusb2.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/pwc
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/pwc/pwc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/s2255
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/s2255/s2255drv.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/siano
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/siano/smsusb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/sn9c102
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/sn9c102/sn9c102.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/stk1160
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/stk1160/stk1160.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/stkwebcam
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/stkwebcam/stkwebcam.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/tlg2300
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/tlg2300/poseidon.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/tm6000
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/tm6000/tm6000-alsa.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/tm6000/tm6000-dvb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/tm6000/tm6000.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/ttusb-budget
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/ttusb-budget/dvb-ttusb-budget.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/ttusb-dec
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/ttusb-dec/ttusb_dec.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/ttusb-dec/ttusbdecfe.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/usbvision
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/usbvision/usbvision.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/uvc
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/uvc/uvcvideo.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/zr364xx
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/zr364xx/zr364xx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/v4l2-core
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/v4l2-core/tuner.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/v4l2-core/v4l2-int-device.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/v4l2-core/v4l2-mem2mem.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/v4l2-core/videobuf-core.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/v4l2-core/videobuf-dma-contig.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/v4l2-core/videobuf-dma-sg.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/v4l2-core/videobuf-dvb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/v4l2-core/videobuf-vmalloc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/v4l2-core/videobuf2-core.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/v4l2-core/videobuf2-dma-contig.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/v4l2-core/videobuf2-memops.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/v4l2-core/videobuf2-vmalloc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/memory
+#lib/modules/KVER-ipfire-multi/kernel/drivers/memory/emif.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/memstick
+#lib/modules/KVER-ipfire-multi/kernel/drivers/memstick/core
+#lib/modules/KVER-ipfire-multi/kernel/drivers/memstick/core/memstick.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/memstick/core/mspro_block.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/memstick/host
+#lib/modules/KVER-ipfire-multi/kernel/drivers/memstick/host/jmb38x_ms.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/memstick/host/r592.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/memstick/host/rtsx_pci_ms.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/memstick/host/tifm_ms.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/message
+#lib/modules/KVER-ipfire-multi/kernel/drivers/message/fusion
+#lib/modules/KVER-ipfire-multi/kernel/drivers/message/fusion/mptbase.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/message/fusion/mptctl.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/message/fusion/mptfc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/message/fusion/mptsas.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/message/fusion/mptscsih.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/message/fusion/mptspi.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/message/i2o
+#lib/modules/KVER-ipfire-multi/kernel/drivers/message/i2o/i2o_block.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/message/i2o/i2o_bus.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/message/i2o/i2o_core.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/message/i2o/i2o_proc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/message/i2o/i2o_scsi.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/88pm800.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/88pm805.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/88pm80x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/lm3533-core.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/lm3533-ctrlbank.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/lpc_ich.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/lpc_sch.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/max8907.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/retu-mfd.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/rtsx_pci.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/sm501.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/twl4030-madc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/viperboard.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/vx855.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/wl1273-core.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/misc
+#lib/modules/KVER-ipfire-multi/kernel/drivers/misc/altera-stapl
+#lib/modules/KVER-ipfire-multi/kernel/drivers/misc/altera-stapl/altera-stapl.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/misc/bmp085-i2c.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/misc/cb710
+#lib/modules/KVER-ipfire-multi/kernel/drivers/misc/cb710/cb710.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/misc/ds1682.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/misc/dummy-irq.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/misc/eeprom
+#lib/modules/KVER-ipfire-multi/kernel/drivers/misc/eeprom/at24.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/misc/eeprom/eeprom.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/misc/eeprom/eeprom_93cx6.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/misc/eeprom/max6875.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/misc/enclosure.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/misc/fsa9480.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/misc/hpilo.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/misc/ics932s401.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/misc/pch_phub.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/misc/ti-st
+#lib/modules/KVER-ipfire-multi/kernel/drivers/misc/ti-st/st_drv.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/misc/tifm_7xx1.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/misc/tifm_core.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mmc
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/cb710-mmc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/dw_mmc-exynos.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/dw_mmc-pci.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/dw_mmc-pltfm.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/dw_mmc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/mmci.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/mvsdio.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/mxcmmc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/rtsx_pci_sdmmc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/sdhci-esdhc-imx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/sdhci-pci.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/sdhci-pltfm.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/sdhci-pxav2.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/sdhci-pxav3.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/sdhci-sirf.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/sdhci-tegra.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/tifm_sd.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/ushc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/via-sdmmc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/vub300.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/wmt-sdmmc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/chips
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/chips/map_ram.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/devices
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/devices/phram.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/devices/slram.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/maps
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/maps/plat-ram.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/nand
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/nand/mxc_nand.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/nand/orion_nand.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/sm_ftl.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/tests
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/tests/mtd_nandbiterrs.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/tests/mtd_nandecctest.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/tests/mtd_oobtest.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/tests/mtd_pagetest.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/tests/mtd_readtest.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/tests/mtd_speedtest.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/tests/mtd_stresstest.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/tests/mtd_subpagetest.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/tests/mtd_torturetest.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/bonding
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/bonding/bonding.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/dummy.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/3com
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/3com/typhoon.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/8390
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/8390/8390.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/8390/ax88796.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/8390/ne2k-pci.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/adaptec
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/adaptec/starfire.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/alteon
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/alteon/acenic.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/amd
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/amd/amd8111e.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/amd/pcnet32.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/atheros
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/atheros/alx
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/atheros/alx/alx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/atheros/atl1c
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/atheros/atl1c/atl1c.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/atheros/atl1e
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/atheros/atl1e/atl1e.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/atheros/atlx
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/atheros/atlx/atl1.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/atheros/atlx/atl2.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/broadcom
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/broadcom/b44.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/broadcom/bnx2.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/broadcom/bnx2x
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/broadcom/bnx2x/bnx2x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/broadcom/cnic.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/broadcom/tg3.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/brocade
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/brocade/bna
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/brocade/bna/bna.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/cadence
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/cadence/at91_ether.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/cadence/macb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/calxeda
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/calxeda/xgmac.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/chelsio
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/chelsio/cxgb
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/chelsio/cxgb/cxgb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/chelsio/cxgb3
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/chelsio/cxgb3/cxgb3.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/chelsio/cxgb4
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/chelsio/cxgb4/cxgb4.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/chelsio/cxgb4vf
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/cirrus
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/cirrus/cs89x0.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/cisco
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/cisco/enic
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/cisco/enic/enic.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/davicom
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/davicom/dm9000.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/dec
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/dec/tulip
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/dec/tulip/de2104x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/dec/tulip/dmfe.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/dec/tulip/tulip.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/dec/tulip/uli526x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/dec/tulip/winbond-840.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/dlink
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/dlink/dl2k.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/dlink/sundance.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/dnet.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/emulex
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/emulex/benet
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/emulex/benet/be2net.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/ethoc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/faraday
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/faraday/ftgmac100.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/faraday/ftmac100.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/fealnx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/freescale
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/freescale/fec.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/hp
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/hp/hp100.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/icplus
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/icplus/ipg.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/intel
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/intel/e100.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/intel/e1000
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/intel/e1000/e1000.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/intel/e1000e
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/intel/igb
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/intel/igb/igb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/intel/igbvf
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/intel/igbvf/igbvf.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/intel/ixgb
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/intel/ixgb/ixgb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/intel/ixgbe
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/jme.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/marvell
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/marvell/mv643xx_eth.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/marvell/mvmdio.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/marvell/mvneta.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/marvell/skge.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/marvell/sky2.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/mellanox
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/mellanox/mlx4
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/mellanox/mlx4/mlx4_core.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/mellanox/mlx4/mlx4_en.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/micrel
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/micrel/ks8842.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/micrel/ks8851_mll.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/micrel/ksz884x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/myricom
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/myricom/myri10ge
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/myricom/myri10ge/myri10ge.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/natsemi
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/natsemi/natsemi.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/natsemi/ns83820.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/neterion
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/neterion/s2io.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/neterion/vxge
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/neterion/vxge/vxge.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/nvidia
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/nvidia/forcedeth.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/oki-semi
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/oki-semi/pch_gbe
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/qlogic
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/qlogic/netxen
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/qlogic/netxen/netxen_nic.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/qlogic/qla3xxx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/qlogic/qlcnic
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/qlogic/qlcnic/qlcnic.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/qlogic/qlge
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/qlogic/qlge/qlge.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/rdc
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/rdc/r6040.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/realtek
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/realtek/8139cp.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/realtek/8139too.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/realtek/r8169.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/sfc
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/sfc/sfc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/silan
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/silan/sc92031.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/sis
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/sis/sis190.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/sis/sis900.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/smsc
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/smsc/epic100.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/smsc/smc911x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/smsc/smc91x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/smsc/smsc911x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/smsc/smsc9420.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/stmicro
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/stmicro/stmmac
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/sun
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/sun/cassini.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/sun/niu.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/sun/sungem.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/sun/sunhme.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/tehuti
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/tehuti/tehuti.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/ti
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/ti/davinci_cpdma.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/ti/davinci_emac.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/ti/davinci_mdio.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/ti/ti_cpsw.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/ti/tlan.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/via
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/via/via-rhine.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/via/via-velocity.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/wiznet
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/wiznet/w5100.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/wiznet/w5300.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ifb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/imq.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/macvlan.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/macvtap.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/mdio.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/mii.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/netconsole.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/phy
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/phy/amd.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/phy/at803x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/phy/bcm87xx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/phy/broadcom.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/phy/cicada.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/phy/davicom.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/phy/et1011c.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/phy/icplus.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/phy/lxt.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/phy/marvell.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/phy/mdio-bitbang.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/phy/mdio-mux-gpio.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/phy/mdio-mux-mmioreg.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/phy/mdio-mux.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/phy/micrel.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/phy/national.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/phy/qsemi.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/phy/realtek.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/phy/smsc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/phy/ste10Xp.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/phy/vitesse.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ppp
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ppp/bsd_comp.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ppp/ppp_async.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ppp/ppp_deflate.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ppp/ppp_generic.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ppp/ppp_mppe.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ppp/ppp_synctty.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ppp/pppoe.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ppp/pppox.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ppp/pptp.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/slip
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/slip/slhc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/sungem_phy.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/tun.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/usb
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/usb/asix.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/usb/ax88179_178a.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/usb/catc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/usb/cdc_eem.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/usb/cdc_ether.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/usb/cdc_mbim.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/usb/cdc_ncm.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/usb/cdc_subset.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/usb/cx82310_eth.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/usb/dm9601.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/usb/gl620a.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/usb/hso.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/usb/int51x1.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/usb/ipheth.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/usb/kalmia.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/usb/kaweth.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/usb/lg-vl600.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/usb/mcs7830.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/usb/net1080.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/usb/pegasus.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/usb/plusb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/usb/qmi_wwan.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/usb/r8152.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/usb/rndis_host.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/usb/rtl8150.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/usb/sierra_net.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/usb/smsc75xx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/usb/smsc95xx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/usb/usbnet.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/usb/zaurus.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/veth.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/virtio_net.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/vmxnet3
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/vmxnet3/vmxnet3.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/vxlan.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/adm8211.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/at76c50x-usb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/ar5523
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/ar5523/ar5523.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/ath.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/ath5k
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/ath5k/ath5k.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/ath9k
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/ath9k/ath9k.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/ath9k/ath9k_common.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/ath9k/ath9k_htc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/ath9k/ath9k_hw.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/carl9170
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/carl9170/carl9170.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/wil6210
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/wil6210/wil6210.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/atmel.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/atmel_pci.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/b43
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/b43/b43.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/b43legacy
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/b43legacy/b43legacy.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/brcm80211
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/brcm80211/brcmfmac
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/brcm80211/brcmfmac/brcmfmac.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/brcm80211/brcmutil
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/brcm80211/brcmutil/brcmutil.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/hostap
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/hostap/hostap.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/hostap/hostap_pci.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/hostap/hostap_plx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ipw2x00
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ipw2x00/ipw2100.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ipw2x00/ipw2200.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ipw2x00/libipw.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/iwlegacy
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/iwlegacy/iwl3945.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/iwlegacy/iwl4965.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/iwlegacy/iwlegacy.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/iwlwifi
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/iwlwifi/dvm
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/iwlwifi/dvm/iwldvm.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/iwlwifi/iwlwifi.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/iwlwifi/mvm
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/iwlwifi/mvm/iwlmvm.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/libertas
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/libertas/libertas.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/libertas/libertas_sdio.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/libertas/usb8xxx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/libertas_tf
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/libertas_tf/libertas_tf.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/libertas_tf/libertas_tf_usb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/mac80211_hwsim.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/mwifiex
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/mwifiex/mwifiex.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/mwifiex/mwifiex_pcie.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/mwifiex/mwifiex_sdio.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/mwifiex/mwifiex_usb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/mwl8k.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/orinoco
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/orinoco/orinoco.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/orinoco/orinoco_nortel.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/orinoco/orinoco_plx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/orinoco/orinoco_tmd.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/orinoco/orinoco_usb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/p54
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/p54/p54common.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/p54/p54pci.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/p54/p54usb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rndis_wlan.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rt2x00
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rt2x00/rt2400pci.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rt2x00/rt2500pci.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rt2x00/rt2500usb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rt2x00/rt2800lib.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rt2x00/rt2800pci.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rt2x00/rt2800usb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rt2x00/rt2x00lib.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rt2x00/rt2x00mmio.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rt2x00/rt2x00pci.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rt2x00/rt2x00usb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rt2x00/rt61pci.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rt2x00/rt73usb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rtl818x
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rtl818x/rtl8180
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rtl818x/rtl8180/rtl8180.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rtl818x/rtl8187
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rtl818x/rtl8187/rtl8187.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rtlwifi
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rtlwifi/rtl8188ee
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rtlwifi/rtl8188ee/rtl8188ee.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rtlwifi/rtl8192c
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rtlwifi/rtl8192ce
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rtlwifi/rtl8192ce/rtl8192ce.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rtlwifi/rtl8192cu
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rtlwifi/rtl8192cu/rtl8192cu.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rtlwifi/rtl8192de
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rtlwifi/rtl8192de/rtl8192de.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rtlwifi/rtl8192se
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rtlwifi/rtl8192se/rtl8192se.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rtlwifi/rtl8723ae
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rtlwifi/rtl8723ae/rtl8723ae.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rtlwifi/rtlwifi.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ti
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ti/wl1251
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ti/wl1251/wl1251.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ti/wl1251/wl1251_sdio.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ti/wl12xx
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ti/wl12xx/wl12xx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ti/wl18xx
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ti/wl18xx/wl18xx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ti/wlcore
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ti/wlcore/wlcore.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ti/wlcore/wlcore_sdio.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/zd1201.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/zd1211rw
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/zd1211rw/zd1211rw.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/power
+#lib/modules/KVER-ipfire-multi/kernel/drivers/power/generic-adc-battery.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/pps
+#lib/modules/KVER-ipfire-multi/kernel/drivers/pps/pps_core.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ptp
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ptp/ptp.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ptp/ptp_pch.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/aat2870-regulator.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/ad5398.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/anatop-regulator.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/as3711-regulator.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/da903x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/da9052-regulator.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/da9055-regulator.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/fan53555.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/isl6271a-regulator.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/lp3971.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/lp3972.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/lp8755.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/max1586.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/max77686.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/max8649.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/max8660.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/max8907-regulator.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/max8925-regulator.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/max8952.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/max8973-regulator.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/max8997.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/max8998.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/palmas-regulator.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/rc5t583-regulator.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/s2mps11.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/s5m8767.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/tps51632-regulator.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/tps62360-regulator.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/tps65023-regulator.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/tps6507x-regulator.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/tps65090-regulator.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/tps6586x-regulator.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/tps65910-regulator.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/tps65912-regulator.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/tps80031-regulator.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/vexpress.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/wm831x-dcdc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/wm831x-isink.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/wm831x-ldo.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/wm8350-regulator.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/wm8400-regulator.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/wm8994-regulator.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-bq32k.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-bq4802.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-ds1286.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-ds1307.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-ds1374.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-ds1511.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-ds1553.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-ds1672.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-ds1742.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-ds2404.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-ds3232.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-em3027.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-fm3130.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-hid-sensor-time.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-imxdi.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-isl12022.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-isl1208.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-m41t80.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-m48t35.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-m48t59.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-max6900.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-msm6242.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-mv.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-mxc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-omap.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-pcf8523.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-pcf8563.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-pcf8583.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-pl030.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-pl031.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-rp5c01.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-rs5c372.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-rv3029c2.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-rx8025.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-rx8581.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-snvs.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-stk17ta8.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-tegra.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-v3020.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-vt8500.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-x1205.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/3w-9xxx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/3w-sas.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/3w-xxxx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/a100u2w.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/aacraid
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/aacraid/aacraid.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/aic7xxx
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/aic7xxx/aic79xx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/aic7xxx/aic7xxx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/aic94xx
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/aic94xx/aic94xx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/arcmsr
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/arcmsr/arcmsr.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/be2iscsi
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/be2iscsi/be2iscsi.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/bfa
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/bfa/bfa.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/bnx2fc
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/bnx2fc/bnx2fc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/bnx2i
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/bnx2i/bnx2i.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/ch.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/csiostor
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/csiostor/csiostor.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/cxgbi
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/cxgbi/cxgb3i
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/cxgbi/cxgb3i/cxgb3i.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/cxgbi/cxgb4i
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/cxgbi/cxgb4i/cxgb4i.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/cxgbi/libcxgbi.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/dc395x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/device_handler
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/device_handler/scsi_dh_alua.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/device_handler/scsi_dh_emc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/device_handler/scsi_dh_hp_sw.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/device_handler/scsi_dh_rdac.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/dmx3191d.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/fcoe
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/fcoe/fcoe.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/fcoe/libfcoe.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/fdomain.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/hpsa.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/hptiop.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/initio.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/ipr.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/ips.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/iscsi_boot_sysfs.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/iscsi_tcp.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/libfc
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/libfc/libfc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/libiscsi.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/libiscsi_tcp.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/libsas
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/libsas/libsas.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/lpfc
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/lpfc/lpfc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/megaraid
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/megaraid.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/megaraid/megaraid_mbox.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/megaraid/megaraid_mm.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/megaraid/megaraid_sas.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/mpt2sas
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/mpt2sas/mpt2sas.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/mpt3sas
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/mpt3sas/mpt3sas.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/mvsas
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/mvsas/mvsas.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/osd
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/osd/libosd.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/osd/osd.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/osst.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/pm8001
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/pm8001/pm80xx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/pmcraid.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/qla1280.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/qla2xxx
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/qla2xxx/qla2xxx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/qla4xxx
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/qla4xxx/qla4xxx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/raid_class.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/scsi_tgt.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/scsi_transport_fc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/scsi_transport_iscsi.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/scsi_transport_sas.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/scsi_transport_spi.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/scsi_transport_srp.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/ses.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/st.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/stex.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/sym53c8xx_2
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/sym53c8xx_2/sym53c8xx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/tmscsim.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/ufs
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/ufs/ufshcd-pci.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/ufs/ufshcd-pltfrm.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/ufs/ufshcd.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/virtio_scsi.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ssb
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ssb/ssb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/staging
+#lib/modules/KVER-ipfire-multi/kernel/drivers/staging/ced1401
+#lib/modules/KVER-ipfire-multi/kernel/drivers/staging/ced1401/cedusb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/staging/echo
+#lib/modules/KVER-ipfire-multi/kernel/drivers/staging/echo/echo.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/staging/et131x
+#lib/modules/KVER-ipfire-multi/kernel/drivers/staging/et131x/et131x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/staging/fwserial
+#lib/modules/KVER-ipfire-multi/kernel/drivers/staging/fwserial/firewire-serial.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/staging/silicom
+#lib/modules/KVER-ipfire-multi/kernel/drivers/staging/silicom/bpctl_mod.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/staging/silicom/bypasslib
+#lib/modules/KVER-ipfire-multi/kernel/drivers/staging/silicom/bypasslib/bypass.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/thermal
+#lib/modules/KVER-ipfire-multi/kernel/drivers/thermal/armada_thermal.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/tty
+#lib/modules/KVER-ipfire-multi/kernel/drivers/tty/cyclades.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/tty/n_gsm.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/tty/n_hdlc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/tty/n_r3964.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/tty/nozomi.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/tty/rocket.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/tty/serial
+#lib/modules/KVER-ipfire-multi/kernel/drivers/tty/serial/arc_uart.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/tty/serial/jsm
+#lib/modules/KVER-ipfire-multi/kernel/drivers/tty/serial/jsm/jsm.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/tty/serial/rp2.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/tty/serial/sccnxp.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/tty/synclink_gt.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/tty/synclinkmp.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/uio
+#lib/modules/KVER-ipfire-multi/kernel/drivers/uio/uio.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/uio/uio_aec.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/uio/uio_pci_generic.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/uio/uio_sercos3.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/atm
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/atm/cxacru.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/atm/speedtch.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/atm/ueagle-atm.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/atm/usbatm.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/atm/xusbatm.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/chipidea
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/chipidea/ci13xxx_imx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/chipidea/ci13xxx_msm.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/chipidea/ci13xxx_pci.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/chipidea/ci_hdrc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/chipidea/usbmisc_imx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/class
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/class/cdc-acm.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/class/cdc-wdm.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/class/usblp.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/class/usbtmc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/dwc3
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/dwc3/dwc3-exynos.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/dwc3/dwc3-omap.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/dwc3/dwc3-pci.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/dwc3/dwc3.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/host
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/host/ehci-mxc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/host/ehci-orion.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/host/hwa-hc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/host/imx21-hcd.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/host/isp1362-hcd.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/host/sl811-hcd.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/host/ssb-hcd.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/host/whci
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/host/whci/whci-hcd.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/image
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/image/mdc800.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/image/microtek.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/misc
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/misc/adutux.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/misc/emi26.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/misc/emi62.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/misc/ezusb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/misc/ftdi-elan.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/misc/iowarrior.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/misc/sisusbvga
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/misc/sisusbvga/sisusbvga.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/misc/usb3503.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/misc/usblcd.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/misc/usbled.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/misc/usbsevseg.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/misc/yurex.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/mon
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/mon/usbmon.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/phy
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/phy/phy-ab8500-usb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/phy/phy-gpio-vbus-usb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/phy/phy-isp1301.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/phy/phy-mxs-usb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/phy/phy-nop.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/phy/phy-omap-control.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/phy/phy-omap-usb2.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/phy/phy-omap-usb3.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/phy/phy-rcar-usb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/aircable.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/ark3116.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/belkin_sa.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/ch341.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/cp210x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/cypress_m8.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/digi_acceleport.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/f81232.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/ftdi_sio.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/funsoft.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/io_edgeport.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/io_ti.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/ipaq.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/ipw.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/ir-usb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/iuu_phoenix.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/keyspan_pda.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/kl5kusb105.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/mct_u232.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/mos7720.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/mos7840.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/moto_modem.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/option.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/oti6858.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/pl2303.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/qcaux.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/qcserial.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/quatech2.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/siemens_mpi.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/sierra.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/spcp8x5.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/ssu100.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/usb_wwan.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/usbserial.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/visor.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/whiteheat.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/serial/zte_ev.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/storage
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/storage/ums-alauda.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/storage/ums-cypress.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/storage/ums-datafab.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/storage/ums-eneub6250.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/storage/ums-freecom.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/storage/ums-isd200.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/storage/ums-jumpshot.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/storage/ums-karma.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/storage/ums-onetouch.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/storage/ums-realtek.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/storage/ums-sddr09.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/storage/ums-sddr55.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/storage/ums-usbat.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/wusbcore
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/wusbcore/wusb-cbaf.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/wusbcore/wusb-wa.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/wusbcore/wusbcore.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/uwb
+#lib/modules/KVER-ipfire-multi/kernel/drivers/uwb/hwa-rc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/uwb/i1480
+#lib/modules/KVER-ipfire-multi/kernel/drivers/uwb/i1480/dfu
+#lib/modules/KVER-ipfire-multi/kernel/drivers/uwb/i1480/dfu/i1480-dfu-usb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/uwb/i1480/i1480-est.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/uwb/umc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/uwb/uwb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/uwb/whc-rc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/uwb/whci.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/amba-clcd.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/arkfb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/aty
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/aty/atyfb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/auo_k1900fb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/auo_k1901fb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/auo_k190x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/backlight
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/backlight/lcd.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/broadsheetfb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/carminefb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/cfbcopyarea.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/cfbfillrect.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/cfbimgblt.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/cirrusfb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/console
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/console/font.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/cyber2000fb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/fb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/fb_ddc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/fb_sys_fops.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/i740fb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/kyro
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/kyro/kyrofb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/macmodes.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/matrox
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/matrox/i2c-matroxfb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/matrox/matroxfb_DAC1064.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/matrox/matroxfb_Ti3026.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/matrox/matroxfb_accel.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/matrox/matroxfb_base.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/matrox/matroxfb_misc.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/mb862xx
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/mb862xx/mb862xxfb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/metronomefb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/mx3fb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/neofb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/omap2
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/omap2/displays
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/omap2/displays/panel-tfp410.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/output.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/pm2fb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/pm3fb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/riva
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/riva/rivafb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/s1d13xxxfb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/s3fb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/savage
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/savage/savagefb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/smscufx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/ssd1307fb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/sstfb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/svgalib.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/syscopyarea.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/sysfillrect.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/sysimgblt.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/tridentfb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/udlfb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/vgastate.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/vt8623fb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/virtio
+#lib/modules/KVER-ipfire-multi/kernel/drivers/virtio/virtio_balloon.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/w1
+#lib/modules/KVER-ipfire-multi/kernel/drivers/w1/masters
+#lib/modules/KVER-ipfire-multi/kernel/drivers/w1/masters/ds1wm.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/w1/masters/ds2482.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/w1/masters/ds2490.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/w1/masters/mxc_w1.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/w1/slaves
+#lib/modules/KVER-ipfire-multi/kernel/drivers/w1/slaves/w1_bq27000.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/w1/slaves/w1_ds2408.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/w1/slaves/w1_ds2413.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/w1/slaves/w1_ds2423.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/w1/slaves/w1_ds2431.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/w1/slaves/w1_ds2433.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/w1/slaves/w1_ds2760.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/w1/slaves/w1_ds2780.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/w1/slaves/w1_ds2781.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/w1/slaves/w1_ds28e04.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/w1/slaves/w1_smem.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/w1/slaves/w1_therm.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/w1/wire.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/watchdog
+#lib/modules/KVER-ipfire-multi/kernel/drivers/watchdog/alim7101_wdt.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/watchdog/i6300esb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/watchdog/imx2_wdt.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/watchdog/pcwd_pci.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/watchdog/pcwd_usb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/watchdog/retu_wdt.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/watchdog/softdog.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/watchdog/wdt_pci.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs
+#lib/modules/KVER-ipfire-multi/kernel/fs/btrfs
+#lib/modules/KVER-ipfire-multi/kernel/fs/btrfs/btrfs.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/cachefiles
+#lib/modules/KVER-ipfire-multi/kernel/fs/cachefiles/cachefiles.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/cifs
+#lib/modules/KVER-ipfire-multi/kernel/fs/cifs/cifs.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/configfs
+#lib/modules/KVER-ipfire-multi/kernel/fs/configfs/configfs.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/dlm
+#lib/modules/KVER-ipfire-multi/kernel/fs/dlm/dlm.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/exofs
+#lib/modules/KVER-ipfire-multi/kernel/fs/exofs/libore.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/fat
+#lib/modules/KVER-ipfire-multi/kernel/fs/fat/fat.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/fat/msdos.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/fat/vfat.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/fscache
+#lib/modules/KVER-ipfire-multi/kernel/fs/fscache/fscache.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/fuse
+#lib/modules/KVER-ipfire-multi/kernel/fs/fuse/cuse.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/fuse/fuse.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/lockd
+#lib/modules/KVER-ipfire-multi/kernel/fs/lockd/lockd.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nfs
+#lib/modules/KVER-ipfire-multi/kernel/fs/nfs/blocklayout
+#lib/modules/KVER-ipfire-multi/kernel/fs/nfs/blocklayout/blocklayoutdriver.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nfs/nfs.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nfs/nfs_layout_nfsv41_files.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nfs/nfsv2.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nfs/nfsv3.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nfs/nfsv4.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nfs/objlayout
+#lib/modules/KVER-ipfire-multi/kernel/fs/nfs/objlayout/objlayoutdriver.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nfs_common
+#lib/modules/KVER-ipfire-multi/kernel/fs/nfs_common/nfs_acl.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nfsd
+#lib/modules/KVER-ipfire-multi/kernel/fs/nfsd/nfsd.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/mac-celtic.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/mac-centeuro.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/mac-croatian.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/mac-cyrillic.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/mac-gaelic.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/mac-greek.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/mac-iceland.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/mac-inuit.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/mac-roman.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/mac-romanian.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/mac-turkish.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_cp1250.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_cp1251.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_cp1255.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_cp737.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_cp775.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_cp850.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_cp852.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_cp855.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_cp857.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_cp860.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_cp861.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_cp862.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_cp863.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_cp864.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_cp865.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_cp866.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_cp869.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_cp874.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_cp932.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_cp936.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_cp949.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_cp950.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_euc-jp.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_iso8859-1.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_iso8859-13.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_iso8859-14.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_iso8859-15.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_iso8859-2.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_iso8859-3.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_iso8859-4.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_iso8859-5.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_iso8859-6.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_iso8859-7.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_iso8859-9.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_koi8-r.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_koi8-ru.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_koi8-u.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/nls/nls_utf8.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/reiserfs
+#lib/modules/KVER-ipfire-multi/kernel/fs/reiserfs/reiserfs.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/udf
+#lib/modules/KVER-ipfire-multi/kernel/fs/udf/udf.ko
+#lib/modules/KVER-ipfire-multi/kernel/fs/xfs
+#lib/modules/KVER-ipfire-multi/kernel/fs/xfs/xfs.ko
+#lib/modules/KVER-ipfire-multi/kernel/kernel
+#lib/modules/KVER-ipfire-multi/kernel/kernel/trace
+#lib/modules/KVER-ipfire-multi/kernel/kernel/trace/ring_buffer_benchmark.ko
+#lib/modules/KVER-ipfire-multi/kernel/lib
+#lib/modules/KVER-ipfire-multi/kernel/lib/asn1_decoder.ko
+#lib/modules/KVER-ipfire-multi/kernel/lib/cordic.ko
+#lib/modules/KVER-ipfire-multi/kernel/lib/crc-itu-t.ko
+#lib/modules/KVER-ipfire-multi/kernel/lib/crc7.ko
+#lib/modules/KVER-ipfire-multi/kernel/lib/crc8.ko
+#lib/modules/KVER-ipfire-multi/kernel/lib/libcrc32c.ko
+#lib/modules/KVER-ipfire-multi/kernel/lib/mpi
+#lib/modules/KVER-ipfire-multi/kernel/lib/mpi/mpi.ko
+#lib/modules/KVER-ipfire-multi/kernel/lib/oid_registry.ko
+#lib/modules/KVER-ipfire-multi/kernel/lib/raid6
+#lib/modules/KVER-ipfire-multi/kernel/lib/raid6/raid6_pq.ko
+#lib/modules/KVER-ipfire-multi/kernel/lib/rbtree_test.ko
+#lib/modules/KVER-ipfire-multi/kernel/lib/ts_bm.ko
+#lib/modules/KVER-ipfire-multi/kernel/lib/ts_fsm.ko
+#lib/modules/KVER-ipfire-multi/kernel/lib/ts_kmp.ko
+#lib/modules/KVER-ipfire-multi/kernel/lib/zlib_deflate
+#lib/modules/KVER-ipfire-multi/kernel/lib/zlib_deflate/zlib_deflate.ko
+#lib/modules/KVER-ipfire-multi/kernel/net
+#lib/modules/KVER-ipfire-multi/kernel/net/atm
+#lib/modules/KVER-ipfire-multi/kernel/net/atm/atm.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/atm/br2684.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/atm/clip.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/atm/pppoatm.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/batman-adv
+#lib/modules/KVER-ipfire-multi/kernel/net/batman-adv/batman-adv.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/bluetooth
+#lib/modules/KVER-ipfire-multi/kernel/net/bluetooth/bluetooth.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/bluetooth/bnep
+#lib/modules/KVER-ipfire-multi/kernel/net/bluetooth/bnep/bnep.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/bluetooth/cmtp
+#lib/modules/KVER-ipfire-multi/kernel/net/bluetooth/cmtp/cmtp.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/bluetooth/hidp
+#lib/modules/KVER-ipfire-multi/kernel/net/bluetooth/hidp/hidp.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/bluetooth/rfcomm
+#lib/modules/KVER-ipfire-multi/kernel/net/bluetooth/rfcomm/rfcomm.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/bridge
+#lib/modules/KVER-ipfire-multi/kernel/net/bridge/netfilter
+#lib/modules/KVER-ipfire-multi/kernel/net/bridge/netfilter/ebt_802_3.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/bridge/netfilter/ebt_among.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/bridge/netfilter/ebt_arp.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/bridge/netfilter/ebt_arpreply.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/bridge/netfilter/ebt_dnat.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/bridge/netfilter/ebt_ip.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/bridge/netfilter/ebt_ip6.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/bridge/netfilter/ebt_limit.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/bridge/netfilter/ebt_log.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/bridge/netfilter/ebt_mark.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/bridge/netfilter/ebt_mark_m.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/bridge/netfilter/ebt_nflog.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/bridge/netfilter/ebt_pkttype.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/bridge/netfilter/ebt_redirect.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/bridge/netfilter/ebt_snat.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/bridge/netfilter/ebt_stp.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/bridge/netfilter/ebt_vlan.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/bridge/netfilter/ebtable_broute.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/bridge/netfilter/ebtable_filter.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/bridge/netfilter/ebtable_nat.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/bridge/netfilter/ebtables.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/core
+#lib/modules/KVER-ipfire-multi/kernel/net/core/netprio_cgroup.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/ah4.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/esp4.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/gre.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/inet_diag.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/ip_gre.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/ip_tunnel.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/ip_vti.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/ipcomp.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/ipip.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/netfilter
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/netfilter/arp_tables.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/netfilter/arpt_mangle.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/netfilter/arptable_filter.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/netfilter/ipt_CLUSTERIP.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/netfilter/ipt_ECN.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/netfilter/ipt_MASQUERADE.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/netfilter/ipt_REJECT.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/netfilter/ipt_ah.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/netfilter/ipt_ipp2p.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/netfilter/ipt_rpfilter.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/netfilter/iptable_filter.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/netfilter/iptable_mangle.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/netfilter/iptable_nat.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/netfilter/iptable_raw.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/netfilter/iptable_security.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/netfilter/nf_nat_h323.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/netfilter/nf_nat_ipv4.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/netfilter/nf_nat_pptp.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/netfilter/nf_nat_proto_gre.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/netfilter/nf_nat_snmp_basic.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/tcp_bic.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/tcp_diag.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/tcp_highspeed.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/tcp_htcp.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/tcp_hybla.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/tcp_illinois.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/tcp_lp.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/tcp_scalable.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/tcp_vegas.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/tcp_veno.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/tcp_westwood.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/tcp_yeah.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/tunnel4.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/udp_diag.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/xfrm4_mode_beet.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/xfrm4_mode_transport.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/xfrm4_mode_tunnel.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv4/xfrm4_tunnel.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv6
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv6/ah6.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv6/esp6.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv6/ip6_gre.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv6/ip6_tunnel.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv6/ipcomp6.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv6/mip6.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv6/netfilter
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv6/netfilter/ip6t_MASQUERADE.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv6/netfilter/ip6t_NPT.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv6/netfilter/ip6t_REJECT.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv6/netfilter/ip6t_ah.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv6/netfilter/ip6t_eui64.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv6/netfilter/ip6t_frag.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv6/netfilter/ip6t_hbh.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv6/netfilter/ip6t_ipv6header.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv6/netfilter/ip6t_mh.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv6/netfilter/ip6t_rpfilter.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv6/netfilter/ip6t_rt.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv6/netfilter/ip6table_filter.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv6/netfilter/ip6table_mangle.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv6/netfilter/ip6table_nat.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv6/netfilter/ip6table_raw.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv6/netfilter/ip6table_security.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv6/netfilter/nf_nat_ipv6.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv6/sit.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv6/tunnel6.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv6/xfrm6_mode_beet.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv6/xfrm6_mode_ro.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv6/xfrm6_mode_transport.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv6/xfrm6_mode_tunnel.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/ipv6/xfrm6_tunnel.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/key
+#lib/modules/KVER-ipfire-multi/kernel/net/key/af_key.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/l2tp
+#lib/modules/KVER-ipfire-multi/kernel/net/l2tp/l2tp_core.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/l2tp/l2tp_eth.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/l2tp/l2tp_ip.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/l2tp/l2tp_ip6.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/l2tp/l2tp_netlink.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/l2tp/l2tp_ppp.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/mac80211
+#lib/modules/KVER-ipfire-multi/kernel/net/mac80211/mac80211.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/ipset
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/ipset/ip_set.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/ipset/ip_set_bitmap_ip.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/ipset/ip_set_bitmap_ipmac.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/ipset/ip_set_bitmap_port.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/ipset/ip_set_hash_ip.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/ipset/ip_set_hash_ipport.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/ipset/ip_set_hash_ipportip.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/ipset/ip_set_hash_ipportnet.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/ipset/ip_set_hash_net.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/ipset/ip_set_hash_netiface.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/ipset/ip_set_hash_netport.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/ipset/ip_set_list_set.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/ipvs
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/ipvs/ip_vs.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/ipvs/ip_vs_dh.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/ipvs/ip_vs_ftp.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/ipvs/ip_vs_lblc.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/ipvs/ip_vs_lblcr.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/ipvs/ip_vs_lc.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/ipvs/ip_vs_nq.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/ipvs/ip_vs_pe_sip.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/ipvs/ip_vs_rr.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/ipvs/ip_vs_sed.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/ipvs/ip_vs_sh.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/ipvs/ip_vs_wlc.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/ipvs/ip_vs_wrr.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/nf_conntrack_amanda.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/nf_conntrack_broadcast.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/nf_conntrack_ftp.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/nf_conntrack_h323.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/nf_conntrack_irc.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/nf_conntrack_netbios_ns.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/nf_conntrack_netlink.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/nf_conntrack_pptp.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/nf_conntrack_proto_dccp.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/nf_conntrack_proto_gre.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/nf_conntrack_proto_sctp.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/nf_conntrack_proto_udplite.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/nf_conntrack_sane.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/nf_conntrack_sip.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/nf_conntrack_snmp.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/nf_conntrack_tftp.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/nf_nat.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/nf_nat_amanda.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/nf_nat_ftp.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/nf_nat_irc.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/nf_nat_proto_dccp.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/nf_nat_proto_sctp.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/nf_nat_proto_udplite.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/nf_nat_sip.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/nf_nat_tftp.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/nf_tproxy_core.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/nfnetlink.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/nfnetlink_acct.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/nfnetlink_cthelper.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/nfnetlink_cttimeout.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/nfnetlink_log.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/nfnetlink_queue.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_AUDIT.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_CHECKSUM.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_CLASSIFY.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_CONNSECMARK.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_CT.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_DSCP.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_HL.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_HMARK.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_IDLETIMER.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_IMQ.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_LED.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_LOG.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_NETMAP.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_NFLOG.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_NFQUEUE.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_RATEEST.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_REDIRECT.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_SECMARK.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_TCPMSS.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_TCPOPTSTRIP.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_TEE.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_TPROXY.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_TRACE.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_addrtype.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_bpf.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_cluster.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_comment.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_connbytes.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_connlabel.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_connlimit.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_connmark.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_conntrack.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_cpu.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_dccp.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_devgroup.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_dscp.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_ecn.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_esp.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_hashlimit.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_helper.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_hl.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_iprange.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_layer7.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_length.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_limit.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_mac.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_mark.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_multiport.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_nat.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_nfacct.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_osf.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_owner.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_physdev.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_pkttype.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_policy.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_quota.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_rateest.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_realm.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_recent.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_sctp.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_set.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_socket.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_state.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_statistic.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_string.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_tcpmss.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_time.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netfilter/xt_u32.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/netlink
+#lib/modules/KVER-ipfire-multi/kernel/net/netlink/netlink_diag.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/openvswitch
+#lib/modules/KVER-ipfire-multi/kernel/net/openvswitch/openvswitch.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/rfkill
+#lib/modules/KVER-ipfire-multi/kernel/net/rfkill/rfkill.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/act_csum.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/act_gact.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/act_ipt.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/act_mirred.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/act_nat.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/act_pedit.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/act_police.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/act_simple.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/act_skbedit.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/cls_basic.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/cls_cgroup.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/cls_flow.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/cls_fw.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/cls_route.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/cls_rsvp.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/cls_rsvp6.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/cls_tcindex.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/cls_u32.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/em_cmp.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/em_ipset.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/em_meta.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/em_nbyte.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/em_text.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/em_u32.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/sch_atm.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/sch_cbq.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/sch_choke.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/sch_codel.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/sch_drr.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/sch_dsmark.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/sch_fq_codel.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/sch_gred.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/sch_hfsc.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/sch_htb.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/sch_ingress.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/sch_mqprio.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/sch_multiq.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/sch_netem.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/sch_plug.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/sch_prio.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/sch_qfq.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/sch_red.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/sch_sfb.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/sch_sfq.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/sch_tbf.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sched/sch_teql.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sctp
+#lib/modules/KVER-ipfire-multi/kernel/net/sctp/sctp.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sunrpc
+#lib/modules/KVER-ipfire-multi/kernel/net/sunrpc/auth_gss
+#lib/modules/KVER-ipfire-multi/kernel/net/sunrpc/auth_gss/auth_rpcgss.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sunrpc/auth_gss/rpcsec_gss_krb5.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/sunrpc/sunrpc.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/unix
+#lib/modules/KVER-ipfire-multi/kernel/net/unix/unix_diag.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/vmw_vsock
+#lib/modules/KVER-ipfire-multi/kernel/net/vmw_vsock/vsock.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/wireless
+#lib/modules/KVER-ipfire-multi/kernel/net/wireless/cfg80211.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/wireless/lib80211.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/wireless/lib80211_crypt_ccmp.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/wireless/lib80211_crypt_tkip.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/wireless/lib80211_crypt_wep.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/xfrm
+#lib/modules/KVER-ipfire-multi/kernel/net/xfrm/xfrm_ipcomp.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound
+#lib/modules/KVER-ipfire-multi/kernel/sound/ac97_bus.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/arm
+#lib/modules/KVER-ipfire-multi/kernel/sound/arm/snd-aaci.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/core
+#lib/modules/KVER-ipfire-multi/kernel/sound/core/oss
+#lib/modules/KVER-ipfire-multi/kernel/sound/core/oss/snd-mixer-oss.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/core/oss/snd-pcm-oss.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/core/seq
+#lib/modules/KVER-ipfire-multi/kernel/sound/core/seq/oss
+#lib/modules/KVER-ipfire-multi/kernel/sound/core/seq/oss/snd-seq-oss.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/core/seq/snd-seq-device.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/core/seq/snd-seq-dummy.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/core/seq/snd-seq-midi-emul.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/core/seq/snd-seq-midi-event.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/core/seq/snd-seq-midi.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/core/seq/snd-seq-virmidi.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/core/seq/snd-seq.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/core/snd-compress.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/core/snd-hrtimer.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/core/snd-hwdep.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/core/snd-page-alloc.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/core/snd-pcm.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/core/snd-rawmidi.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/core/snd-timer.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/core/snd.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/drivers
+#lib/modules/KVER-ipfire-multi/kernel/sound/drivers/mpu401
+#lib/modules/KVER-ipfire-multi/kernel/sound/drivers/mpu401/snd-mpu401-uart.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/drivers/mpu401/snd-mpu401.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/drivers/opl3
+#lib/modules/KVER-ipfire-multi/kernel/sound/drivers/opl3/snd-opl3-lib.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/drivers/opl3/snd-opl3-synth.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/drivers/snd-aloop.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/drivers/snd-dummy.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/drivers/snd-mtpav.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/drivers/snd-serial-u16550.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/drivers/snd-virmidi.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/drivers/vx
+#lib/modules/KVER-ipfire-multi/kernel/sound/drivers/vx/snd-vx-lib.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/firewire
+#lib/modules/KVER-ipfire-multi/kernel/sound/firewire/snd-firewire-lib.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/firewire/snd-firewire-speakers.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/i2c
+#lib/modules/KVER-ipfire-multi/kernel/sound/i2c/other
+#lib/modules/KVER-ipfire-multi/kernel/sound/i2c/other/snd-ak4113.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/i2c/other/snd-ak4114.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/i2c/other/snd-ak4xxx-adda.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/i2c/other/snd-pt2258.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/i2c/other/snd-tea575x-tuner.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/i2c/snd-cs8427.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/i2c/snd-i2c.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/ac97
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/ac97/snd-ac97-codec.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/ali5451
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/ali5451/snd-ali5451.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/au88x0
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/au88x0/snd-au8810.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/au88x0/snd-au8820.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/au88x0/snd-au8830.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/aw2
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/aw2/snd-aw2.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/ca0106
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/ca0106/snd-ca0106.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/cs46xx
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/cs46xx/snd-cs46xx.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/cs5535audio
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/cs5535audio/snd-cs5535audio.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/ctxfi
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/ctxfi/snd-ctxfi.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/echoaudio
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/echoaudio/snd-darla20.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/echoaudio/snd-darla24.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/echoaudio/snd-echo3g.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/echoaudio/snd-gina20.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/echoaudio/snd-gina24.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/echoaudio/snd-indigo.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/echoaudio/snd-indigodj.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/echoaudio/snd-indigodjx.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/echoaudio/snd-indigoio.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/echoaudio/snd-indigoiox.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/echoaudio/snd-layla20.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/echoaudio/snd-layla24.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/echoaudio/snd-mia.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/echoaudio/snd-mona.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/emu10k1
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/emu10k1/snd-emu10k1-synth.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/emu10k1/snd-emu10k1.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/emu10k1/snd-emu10k1x.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/hda
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/hda/snd-hda-codec-analog.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/hda/snd-hda-codec-ca0110.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/hda/snd-hda-codec-ca0132.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/hda/snd-hda-codec-cirrus.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/hda/snd-hda-codec-cmedia.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/hda/snd-hda-codec-conexant.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/hda/snd-hda-codec-hdmi.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/hda/snd-hda-codec-idt.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/hda/snd-hda-codec-realtek.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/hda/snd-hda-codec-si3054.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/hda/snd-hda-codec-via.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/hda/snd-hda-codec.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/hda/snd-hda-intel.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/ice1712
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/ice1712/snd-ice1712.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/ice1712/snd-ice1724.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/ice1712/snd-ice17xx-ak4xxx.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/korg1212
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/korg1212/snd-korg1212.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/lola
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/lola/snd-lola.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/mixart
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/mixart/snd-mixart.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/nm256
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/nm256/snd-nm256.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/oxygen
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/oxygen/snd-oxygen-lib.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/oxygen/snd-oxygen.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/oxygen/snd-virtuoso.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/pcxhr
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/pcxhr/snd-pcxhr.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/riptide
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/riptide/snd-riptide.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/rme9652
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/rme9652/snd-hdsp.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/rme9652/snd-hdspm.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/rme9652/snd-rme9652.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/snd-ad1889.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/snd-als300.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/snd-atiixp-modem.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/snd-atiixp.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/snd-azt3328.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/snd-bt87x.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/snd-cmipci.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/snd-cs4281.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/snd-ens1370.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/snd-ens1371.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/snd-es1938.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/snd-es1968.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/snd-fm801.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/snd-intel8x0.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/snd-intel8x0m.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/snd-maestro3.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/snd-rme32.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/snd-rme96.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/snd-sonicvibes.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/snd-via82xx-modem.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/snd-via82xx.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/trident
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/trident/snd-trident.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/vx222
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/vx222/snd-vx222.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/ymfpci
+#lib/modules/KVER-ipfire-multi/kernel/sound/pci/ymfpci/snd-ymfpci.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/atmel
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/atmel/snd-soc-atmel-pcm.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs/snd-soc-ab8500-codec.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs/snd-soc-alc5632.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs/snd-soc-dmic.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs/snd-soc-omap-hdmi-codec.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs/snd-soc-sgtl5000.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs/snd-soc-tlv320aic23.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs/snd-soc-tlv320aic3x.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs/snd-soc-tpa6130a2.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs/snd-soc-twl4030.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs/snd-soc-twl6040.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs/snd-soc-wm8903.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs/snd-soc-wm9712.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/dwc
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/dwc/designware_i2s.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/fsl
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/fsl/snd-soc-eukrea-tlv320.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/fsl/snd-soc-fsl-ssi.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/fsl/snd-soc-fsl-utils.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/fsl/snd-soc-imx-audmux.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/fsl/snd-soc-imx-pcm.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/fsl/snd-soc-imx-sgtl5000.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/fsl/snd-soc-imx-ssi.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/generic
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/generic/snd-soc-simple-card.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/omap
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/omap/snd-soc-am3517evm.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/omap/snd-soc-omap-abe-twl6040.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/omap/snd-soc-omap-dmic.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/omap/snd-soc-omap-hdmi-card.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/omap/snd-soc-omap-hdmi.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/omap/snd-soc-omap-mcbsp.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/omap/snd-soc-omap-mcpdm.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/omap/snd-soc-omap-twl4030.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/omap/snd-soc-omap.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/omap/snd-soc-omap3pandora.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/omap/snd-soc-rx51.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/snd-soc-core.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra/snd-soc-tegra-alc5632.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra/snd-soc-tegra-pcm.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra/snd-soc-tegra-trimslice.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra/snd-soc-tegra-utils.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra/snd-soc-tegra-wm8903.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra/snd-soc-tegra-wm9712.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra/snd-soc-tegra20-ac97.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra/snd-soc-tegra20-das.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra/snd-soc-tegra20-i2s.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra/snd-soc-tegra20-spdif.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra/snd-soc-tegra30-ahub.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra/snd-soc-tegra30-i2s.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/ux500
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/ux500/snd-soc-ux500-mach-mop500.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/ux500/snd-soc-ux500-plat-dma.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soc/ux500/snd-soc-ux500-plat-msp-i2s.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/soundcore.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/synth
+#lib/modules/KVER-ipfire-multi/kernel/sound/synth/emux
+#lib/modules/KVER-ipfire-multi/kernel/sound/synth/emux/snd-emux-synth.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/synth/snd-util-mem.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/usb
+#lib/modules/KVER-ipfire-multi/kernel/sound/usb/6fire
+#lib/modules/KVER-ipfire-multi/kernel/sound/usb/6fire/snd-usb-6fire.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/usb/caiaq
+#lib/modules/KVER-ipfire-multi/kernel/sound/usb/caiaq/snd-usb-caiaq.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/usb/misc
+#lib/modules/KVER-ipfire-multi/kernel/sound/usb/misc/snd-ua101.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/usb/snd-usb-audio.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/usb/snd-usbmidi-lib.ko
+#lib/modules/KVER-ipfire-multi/modules.alias
+#lib/modules/KVER-ipfire-multi/modules.alias.bin
+#lib/modules/KVER-ipfire-multi/modules.builtin
+#lib/modules/KVER-ipfire-multi/modules.ccwmap
+#lib/modules/KVER-ipfire-multi/modules.dep
+#lib/modules/KVER-ipfire-multi/modules.dep.bin
+#lib/modules/KVER-ipfire-multi/modules.ieee1394map
+#lib/modules/KVER-ipfire-multi/modules.inputmap
+#lib/modules/KVER-ipfire-multi/modules.isapnpmap
+#lib/modules/KVER-ipfire-multi/modules.ofmap
+#lib/modules/KVER-ipfire-multi/modules.order
+#lib/modules/KVER-ipfire-multi/modules.pcimap
+#lib/modules/KVER-ipfire-multi/modules.seriomap
+#lib/modules/KVER-ipfire-multi/modules.symbols
+#lib/modules/KVER-ipfire-multi/modules.symbols.bin
+#lib/modules/KVER-ipfire-multi/modules.usbmap
+#lib/modules/KVER-ipfire-multi/source
diff --git a/config/rootfiles/common/armv5tel/linux-omap b/config/rootfiles/common/armv5tel/linux-omap
deleted file mode 100644 (file)
index 708ec05..0000000
+++ /dev/null
@@ -1,1479 +0,0 @@
-boot/System.map-KVER-ipfire-omap
-#boot/System.map-ipfire-omap
-boot/config-KVER-ipfire-omap
-boot/uImage-ipfire-omap
-boot/vmlinuz-KVER-ipfire-omap
-lib/modules/KVER-ipfire-omap
-#lib/modules/KVER-ipfire-omap/build
-#lib/modules/KVER-ipfire-omap/kernel
-#lib/modules/KVER-ipfire-omap/kernel/crypto
-#lib/modules/KVER-ipfire-omap/kernel/crypto/aes_generic.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/af_alg.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/algif_hash.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/algif_skcipher.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/ansi_cprng.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/anubis.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/arc4.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/async_tx
-#lib/modules/KVER-ipfire-omap/kernel/crypto/async_tx/async_memcpy.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/async_tx/async_pq.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/async_tx/async_raid6_recov.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/async_tx/async_tx.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/async_tx/async_xor.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/async_tx/raid6test.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/authenc.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/authencesn.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/blowfish_common.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/blowfish_generic.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/camellia.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/cast5.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/cast6.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/cbc.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/ccm.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/crc32c.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/cryptd.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/crypto_user.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/ctr.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/cts.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/des_generic.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/ecb.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/fcrypt.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/gcm.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/gf128mul.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/ghash-generic.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/khazad.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/lrw.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/lzo.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/md4.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/md5.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/michael_mic.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/pcbc.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/pcrypt.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/rmd128.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/rmd160.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/rmd256.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/rmd320.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/salsa20_generic.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/seed.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/seqiv.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/serpent.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/sha1_generic.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/sha256_generic.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/sha512_generic.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/tea.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/tgr192.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/twofish_common.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/twofish_generic.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/vmac.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/wp512.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/xcbc.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/xor.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/xts.ko
-#lib/modules/KVER-ipfire-omap/kernel/crypto/zlib.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers
-#lib/modules/KVER-ipfire-omap/kernel/drivers/ata
-#lib/modules/KVER-ipfire-omap/kernel/drivers/ata/ahci_platform.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/ata/libahci.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/ata/libata.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/ata/pata_arasan_cf.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/ata/pata_of_platform.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/ata/pata_platform.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/ata/sata_mv.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/atm
-#lib/modules/KVER-ipfire-omap/kernel/drivers/atm/atmtcp.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/base
-#lib/modules/KVER-ipfire-omap/kernel/drivers/base/regmap
-#lib/modules/KVER-ipfire-omap/kernel/drivers/base/regmap/regmap-i2c.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/bcma
-#lib/modules/KVER-ipfire-omap/kernel/drivers/bcma/bcma.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/block
-#lib/modules/KVER-ipfire-omap/kernel/drivers/block/aoe
-#lib/modules/KVER-ipfire-omap/kernel/drivers/block/aoe/aoe.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/block/cryptoloop.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/block/mg_disk.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/block/nbd.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/block/osdblk.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/block/rbd.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/bluetooth
-#lib/modules/KVER-ipfire-omap/kernel/drivers/bluetooth/ath3k.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/bluetooth/bcm203x.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/bluetooth/bfusb.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/bluetooth/bpa10x.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/bluetooth/btmrvl.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/bluetooth/btmrvl_sdio.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/bluetooth/btsdio.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/bluetooth/btusb.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/bluetooth/btwilink.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/bluetooth/hci_uart.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/bluetooth/hci_vhci.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/cdrom
-#lib/modules/KVER-ipfire-omap/kernel/drivers/cdrom/cdrom.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/char
-#lib/modules/KVER-ipfire-omap/kernel/drivers/char/hw_random
-#lib/modules/KVER-ipfire-omap/kernel/drivers/char/hw_random/omap-rng.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/char/hw_random/rng-core.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/char/hw_random/timeriomem-rng.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/char/ipmi
-#lib/modules/KVER-ipfire-omap/kernel/drivers/char/ipmi/ipmi_devintf.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/char/ipmi/ipmi_msghandler.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/char/ipmi/ipmi_poweroff.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/char/ipmi/ipmi_si.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/char/ipmi/ipmi_watchdog.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/char/lp.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/char/nvram.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/char/ppdev.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/connector
-#lib/modules/KVER-ipfire-omap/kernel/drivers/connector/cn.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/crypto
-#lib/modules/KVER-ipfire-omap/kernel/drivers/crypto/omap-aes.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/crypto/omap-sham.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/dma
-#lib/modules/KVER-ipfire-omap/kernel/drivers/dma/dmatest.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/dma/dw_dmac.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/dma/timb_dma.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/gpio
-#lib/modules/KVER-ipfire-omap/kernel/drivers/gpio/gpio-adp5588.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/gpio/gpio-generic.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/gpio/gpio-it8761e.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/gpio/gpio-max7300.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/gpio/gpio-max730x.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/gpio/gpio-max732x.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/gpio/gpio-mcp23s08.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/gpio/gpio-pca953x.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/gpio/gpio-pcf857x.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/gpio/gpio-twl4030.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/gpu
-#lib/modules/KVER-ipfire-omap/kernel/drivers/gpu/drm
-#lib/modules/KVER-ipfire-omap/kernel/drivers/gpu/drm/drm.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-a4tech.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-apple.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-axff.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-belkin.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-cherry.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-chicony.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-cypress.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-dr.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-elecom.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-ezkey.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-gaff.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-gyration.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-holtekff.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-kensington.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-keytouch.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-kye.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-lcpower.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-logitech-dj.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-logitech.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-magicmouse.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-microsoft.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-monterey.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-multitouch.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-ntrig.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-ortek.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-petalynx.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-picolcd.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-pl.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-primax.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-prodikeys.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-quanta.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-roccat-arvo.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-roccat-common.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-roccat-kone.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-roccat-koneplus.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-roccat-kovaplus.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-roccat-pyra.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-roccat.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-samsung.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-sjoy.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-sony.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-speedlink.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-sunplus.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-tmff.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-topseed.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-twinhan.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-uclogic.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-wacom.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-waltop.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-wiimote.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-zpff.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/hid-zydacron.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/usbhid
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/usbhid/usbhid.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/usbhid/usbkbd.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hid/usbhid/usbmouse.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/ad7414.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/ad7418.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/adm1021.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/adm1025.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/adm1026.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/adm1029.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/adm1031.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/adm9240.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/ads1015.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/ads7828.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/adt7411.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/adt7462.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/adt7470.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/adt7475.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/amc6821.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/asc7621.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/atxp1.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/dme1737.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/ds1621.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/ds620.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/emc1403.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/emc2103.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/emc6w201.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/f71805f.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/f71882fg.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/f75375s.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/g760a.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/gl518sm.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/gl520sm.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/gpio-fan.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/hwmon-vid.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/hwmon.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/ibmaem.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/ibmpex.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/it87.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/jc42.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/lineage-pem.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/lm63.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/lm73.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/lm75.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/lm77.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/lm78.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/lm80.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/lm83.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/lm85.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/lm87.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/lm90.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/lm92.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/lm93.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/lm95241.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/lm95245.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/ltc4151.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/ltc4215.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/ltc4245.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/ltc4261.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/max16065.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/max1619.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/max1668.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/max6639.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/max6642.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/max6650.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/ntc_thermistor.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/pc87360.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/pc87427.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/pcf8591.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/pmbus
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/pmbus/adm1275.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/pmbus/lm25066.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/pmbus/ltc2978.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/pmbus/max16064.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/pmbus/max34440.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/pmbus/max8688.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/pmbus/pmbus.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/pmbus/pmbus_core.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/pmbus/ucd9000.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/pmbus/ucd9200.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/pmbus/zl6100.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/sch5627.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/sch5636.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/sch56xx-common.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/sht15.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/sht21.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/smm665.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/smsc47b397.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/smsc47m1.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/smsc47m192.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/thmc50.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/tmp102.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/tmp401.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/tmp421.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/twl4030-madc-hwmon.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/vt1211.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/w83627ehf.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/w83627hf.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/w83781d.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/w83791d.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/w83792d.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/w83793.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/w83795.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/w83l785ts.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwmon/w83l786ng.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwspinlock
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwspinlock/hwspinlock_core.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/hwspinlock/omap_hwspinlock.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/i2c
-#lib/modules/KVER-ipfire-omap/kernel/drivers/i2c/algos
-#lib/modules/KVER-ipfire-omap/kernel/drivers/i2c/algos/i2c-algo-bit.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/i2c/algos/i2c-algo-pca.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/i2c/busses
-#lib/modules/KVER-ipfire-omap/kernel/drivers/i2c/busses/i2c-diolan-u2c.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/i2c/busses/i2c-gpio.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/i2c/busses/i2c-ocores.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/i2c/busses/i2c-parport-light.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/i2c/busses/i2c-parport.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/i2c/busses/i2c-pca-platform.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/i2c/busses/i2c-simtec.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/i2c/busses/i2c-stub.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/i2c/busses/i2c-taos-evm.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/i2c/busses/i2c-tiny-usb.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/i2c/busses/i2c-xiic.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/i2c/i2c-dev.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/i2c/i2c-mux.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/i2c/i2c-smbus.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/i2c/muxes
-#lib/modules/KVER-ipfire-omap/kernel/drivers/i2c/muxes/gpio-i2cmux.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/i2c/muxes/pca9541.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/i2c/muxes/pca954x.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/ieee802154
-#lib/modules/KVER-ipfire-omap/kernel/drivers/ieee802154/fakehard.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/ff-memless.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/input-polldev.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/keyboard
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/keyboard/adp5588-keys.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/keyboard/adp5589-keys.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/keyboard/gpio_keys.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/keyboard/gpio_keys_polled.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/keyboard/lkkbd.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/keyboard/lm8323.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/keyboard/matrix_keypad.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/keyboard/max7359_keypad.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/keyboard/mcs_touchkey.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/keyboard/mpr121_touchkey.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/keyboard/newtonkbd.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/keyboard/omap-keypad.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/keyboard/omap4-keypad.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/keyboard/opencores-kbd.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/keyboard/qt1070.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/keyboard/qt2160.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/keyboard/stowaway.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/keyboard/sunkbd.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/keyboard/tca6416-keypad.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/keyboard/twl4030_keypad.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/keyboard/xtkbd.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/misc
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/misc/ad714x-i2c.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/misc/ad714x.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/misc/ati_remote2.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/misc/bma150.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/misc/cm109.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/misc/keyspan_remote.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/misc/pcf50633-input.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/misc/pcf8574_keypad.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/misc/powermate.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/misc/pwm-beeper.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/misc/rotary_encoder.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/misc/twl4030-pwrbutton.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/misc/twl4030-vibra.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/misc/twl6040-vibra.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/misc/yealink.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/serio
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/serio/altera_ps2.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/serio/ps2mult.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/input/sparse-keymap.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/isdn
-#lib/modules/KVER-ipfire-omap/kernel/drivers/isdn/capi
-#lib/modules/KVER-ipfire-omap/kernel/drivers/isdn/capi/capi.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/isdn/capi/capidrv.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/isdn/capi/kernelcapi.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/isdn/divert
-#lib/modules/KVER-ipfire-omap/kernel/drivers/isdn/divert/dss1_divert.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/isdn/gigaset
-#lib/modules/KVER-ipfire-omap/kernel/drivers/isdn/gigaset/bas_gigaset.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/isdn/gigaset/gigaset.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/isdn/gigaset/ser_gigaset.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/isdn/gigaset/usb_gigaset.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/isdn/hardware
-#lib/modules/KVER-ipfire-omap/kernel/drivers/isdn/hardware/mISDN
-#lib/modules/KVER-ipfire-omap/kernel/drivers/isdn/hardware/mISDN/hfcsusb.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/isdn/hisax
-#lib/modules/KVER-ipfire-omap/kernel/drivers/isdn/hisax/hfc4s8s_l1.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/isdn/hisax/hfc_usb.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/isdn/hisax/hisax.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/isdn/hisax/hisax_st5481.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/isdn/i4l
-#lib/modules/KVER-ipfire-omap/kernel/drivers/isdn/i4l/isdn.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/isdn/i4l/isdn_bsdcomp.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/isdn/i4l/isdnhdlc.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/isdn/mISDN
-#lib/modules/KVER-ipfire-omap/kernel/drivers/isdn/mISDN/l1oip.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/isdn/mISDN/mISDN_core.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/isdn/mISDN/mISDN_dsp.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/leds
-#lib/modules/KVER-ipfire-omap/kernel/drivers/leds/leds-bd2802.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/leds/leds-gpio.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/leds/leds-lm3530.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/leds/leds-lp3944.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/leds/leds-lp5521.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/leds/leds-lp5523.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/leds/leds-lt3593.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/leds/leds-pca9532.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/leds/leds-pca955x.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/leds/leds-regulator.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/leds/ledtrig-backlight.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/leds/ledtrig-default-on.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/leds/ledtrig-gpio.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/leds/ledtrig-netdev.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/leds/ledtrig-timer.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/md
-#lib/modules/KVER-ipfire-omap/kernel/drivers/md/dm-bufio.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/md/dm-crypt.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/md/dm-delay.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/md/dm-flakey.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/md/dm-log-userspace.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/md/dm-log.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/md/dm-mirror.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/md/dm-mod.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/md/dm-multipath.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/md/dm-queue-length.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/md/dm-raid.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/md/dm-region-hash.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/md/dm-round-robin.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/md/dm-service-time.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/md/dm-snapshot.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/md/dm-thin-pool.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/md/dm-zero.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/md/linear.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/md/md-mod.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/md/multipath.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/md/persistent-data
-#lib/modules/KVER-ipfire-omap/kernel/drivers/md/persistent-data/dm-persistent-data.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/md/raid0.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/md/raid1.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/md/raid10.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/md/raid456.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/common
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/common/tuners
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/common/tuners/mc44s803.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/common/tuners/mt20xx.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/common/tuners/tda18271.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/common/tuners/tda827x.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/common/tuners/tda8290.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/common/tuners/tda9887.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/common/tuners/tea5761.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/common/tuners/tea5767.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/common/tuners/tuner-simple.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/common/tuners/tuner-types.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/common/tuners/tuner-xc2028.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/common/tuners/xc4000.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/common/tuners/xc5000.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/dvb
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/dvb/dvb-core
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/dvb/dvb-core/dvb-core.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/media.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/radio
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/radio/wl128x
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/radio/wl128x/fm_drv.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-adstech-dvb-t-pci.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-alink-dtu-m.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-anysee.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-apac-viewcomp.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-asus-pc39.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-ati-tv-wonder-hd-600.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-ati-x10.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-avermedia-a16d.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-avermedia-cardbus.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-avermedia-dvbt.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-avermedia-m135a.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-avermedia-m733a-rm-k6.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-avermedia-rm-ks.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-avermedia.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-avertv-303.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-azurewave-ad-tu700.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-behold-columbus.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-behold.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-budget-ci-old.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-cinergy-1400.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-cinergy.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-dib0700-nec.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-dib0700-rc5.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-digitalnow-tinytwin.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-digittrade.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-dm1105-nec.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-dntv-live-dvb-t.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-dntv-live-dvbt-pro.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-em-terratec.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-encore-enltv-fm53.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-encore-enltv.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-encore-enltv2.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-evga-indtube.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-eztv.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-flydvb.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-flyvideo.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-fusionhdtv-mce.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-gadmei-rm008z.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-genius-tvgo-a11mce.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-gotview7135.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-hauppauge.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-imon-mce.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-imon-pad.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-iodata-bctv7e.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-kaiomy.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-kworld-315u.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-kworld-plus-tv-analog.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-leadtek-y04g0051.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-lirc.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-lme2510.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-manli.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-medion-x10.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-msi-digivox-ii.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-msi-digivox-iii.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-msi-tvanywhere-plus.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-msi-tvanywhere.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-nebula.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-nec-terratec-cinergy-xs.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-norwood.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-npgtech.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-pctv-sedna.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-pinnacle-color.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-pinnacle-grey.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-pinnacle-pctv-hd.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-pixelview-002t.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-pixelview-mk12.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-pixelview-new.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-pixelview.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-powercolor-real-angel.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-proteus-2309.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-purpletv.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-pv951.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-rc6-mce.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-real-audio-220-32-keys.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-snapstream-firefly.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-streamzap.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-tbs-nec.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-technisat-usb2.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-terratec-cinergy-xs.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-terratec-slim-2.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-terratec-slim.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-tevii-nec.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-tivo.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-total-media-in-hand.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-trekstor.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-tt-1500.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-twinhan1027.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-videomate-m1f.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-videomate-s350.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-videomate-tv-pvr.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-winfast-usbii-deluxe.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/keymaps/rc-winfast.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/lirc_dev.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/rc/rc-core.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/video
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/video/ir-kbd-i2c.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/video/v4l2-common.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/video/v4l2-int-device.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/media/video/videodev.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/memstick
-#lib/modules/KVER-ipfire-omap/kernel/drivers/memstick/core
-#lib/modules/KVER-ipfire-omap/kernel/drivers/memstick/core/memstick.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/memstick/core/mspro_block.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mfd
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mfd/htc-pasic3.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mfd/pcf50633-adc.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mfd/pcf50633-gpio.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mfd/pcf50633.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mfd/sm501.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mfd/tps6105x.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mfd/tps65010.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mfd/tps6507x.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mfd/twl4030-madc.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mfd/twl6030-pwm.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mfd/wl1273-core.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mfd/wm8400-core.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/misc
-#lib/modules/KVER-ipfire-omap/kernel/drivers/misc/apds9802als.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/misc/apds990x.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/misc/bh1770glc.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/misc/bh1780gli.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/misc/bmp085.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/misc/c2port
-#lib/modules/KVER-ipfire-omap/kernel/drivers/misc/c2port/core.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/misc/ds1682.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/misc/eeprom
-#lib/modules/KVER-ipfire-omap/kernel/drivers/misc/eeprom/at24.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/misc/eeprom/eeprom.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/misc/eeprom/eeprom_93cx6.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/misc/eeprom/max6875.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/misc/enclosure.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/misc/fsa9480.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/misc/hmc6352.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/misc/ics932s401.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/misc/isl29003.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/misc/isl29020.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/misc/iwmc3200top
-#lib/modules/KVER-ipfire-omap/kernel/drivers/misc/iwmc3200top/iwmc3200top.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/misc/lis3lv02d
-#lib/modules/KVER-ipfire-omap/kernel/drivers/misc/lis3lv02d/lis3lv02d.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/misc/lis3lv02d/lis3lv02d_i2c.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/misc/ti-st
-#lib/modules/KVER-ipfire-omap/kernel/drivers/misc/ti-st/st_drv.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/misc/tsl2550.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mmc
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mmc/card
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mmc/card/mmc_block.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mmc/card/mmc_test.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mmc/card/sdio_uart.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mmc/host
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mmc/host/dw_mmc.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mmc/host/sdhci-pltfm.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mmc/host/sdhci.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mmc/host/ushc.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mmc/host/vub300.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mtd
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mtd/ar7part.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mtd/chips
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mtd/chips/chipreg.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mtd/lpddr
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mtd/lpddr/lpddr_cmds.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mtd/lpddr/qinfo_probe.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mtd/maps
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mtd/maps/physmap.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mtd/mtd.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mtd/mtd_blkdevs.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mtd/mtdblock.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mtd/mtdchar.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mtd/nand
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mtd/nand/nand_ecc.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mtd/ofpart.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mtd/sm_ftl.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mtd/tests
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mtd/tests/mtd_nandecctest.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mtd/tests/mtd_oobtest.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mtd/tests/mtd_pagetest.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mtd/tests/mtd_readtest.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mtd/tests/mtd_speedtest.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mtd/tests/mtd_stresstest.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mtd/tests/mtd_subpagetest.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mtd/tests/mtd_torturetest.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mtd/ubi
-#lib/modules/KVER-ipfire-omap/kernel/drivers/mtd/ubi/ubi.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/bonding
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/bonding/bonding.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/dummy.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/eql.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/ethernet
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/ethernet/8390
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/ethernet/8390/ax88796.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/ethernet/broadcom
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/ethernet/broadcom/b44.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/ethernet/davicom
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/ethernet/davicom/dm9000.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/ethernet/dlink
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/ethernet/dlink/de600.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/ethernet/dlink/de620.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/ethernet/dnet.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/ethernet/ethoc.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/ethernet/micrel
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/ethernet/micrel/ks8842.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/ethernet/micrel/ks8851_mll.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/ethernet/seeq
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/ethernet/seeq/seeq8005.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/ethernet/smsc
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/ethernet/smsc/smc911x.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/ethernet/smsc/smc91x.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/ethernet/smsc/smsc911x.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/ethernet/stmicro
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/ethernet/stmicro/stmmac
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/ifb.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/imq.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/irda
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/irda/irda-usb.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/irda/irtty-sir.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/irda/kingsun-sir.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/irda/ks959-sir.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/irda/ksdazzle-sir.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/irda/mcs7780.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/irda/sir-dev.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/irda/stir4200.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/macvlan.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/macvtap.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/mii.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/phy
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/phy/broadcom.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/phy/cicada.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/phy/davicom.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/phy/dp83640.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/phy/et1011c.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/phy/icplus.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/phy/lxt.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/phy/marvell.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/phy/mdio-bitbang.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/phy/mdio-gpio.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/phy/micrel.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/phy/national.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/phy/qsemi.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/phy/realtek.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/phy/smsc.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/phy/ste10Xp.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/phy/vitesse.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/ppp
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/ppp/bsd_comp.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/ppp/ppp_async.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/ppp/ppp_deflate.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/ppp/ppp_generic.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/ppp/ppp_mppe.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/ppp/ppp_synctty.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/ppp/pppoe.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/ppp/pppox.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/ppp/pptp.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/slip
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/slip/slhc.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/slip/slip.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/tun.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/usb
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/usb/asix.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/usb/catc.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/usb/cdc_eem.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/usb/cdc_ether.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/usb/cdc_ncm.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/usb/cdc_subset.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/usb/cx82310_eth.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/usb/dm9601.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/usb/gl620a.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/usb/hso.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/usb/int51x1.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/usb/kalmia.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/usb/kaweth.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/usb/lg-vl600.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/usb/mcs7830.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/usb/net1080.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/usb/pegasus.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/usb/plusb.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/usb/rndis_host.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/usb/rtl8150.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/usb/sierra_net.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/usb/smsc75xx.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/usb/smsc95xx.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/usb/usbnet.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/usb/zaurus.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/veth.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/wan
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/wan/dlci.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/wan/hdlc.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/wan/hdlc_cisco.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/wan/hdlc_fr.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/wan/hdlc_ppp.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/wan/hdlc_raw.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/wan/hdlc_raw_eth.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/wireless
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/wireless/at76c50x-usb.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/wireless/hostap
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/wireless/hostap/hostap.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/wireless/rndis_wlan.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/net/wireless/zd1201.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/parport
-#lib/modules/KVER-ipfire-omap/kernel/drivers/parport/parport.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/parport/parport_ax88796.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/power
-#lib/modules/KVER-ipfire-omap/kernel/drivers/power/gpio-charger.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/power/twl4030_charger.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/pps
-#lib/modules/KVER-ipfire-omap/kernel/drivers/pps/pps_core.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/ptp
-#lib/modules/KVER-ipfire-omap/kernel/drivers/ptp/ptp.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/regulator
-#lib/modules/KVER-ipfire-omap/kernel/drivers/regulator/gpio-regulator.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/rtc
-#lib/modules/KVER-ipfire-omap/kernel/drivers/rtc/rtc-cmos.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/rtc/rtc-ds1286.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/rtc/rtc-ds1307.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/rtc/rtc-ds1374.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/rtc/rtc-ds1511.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/rtc/rtc-ds1553.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/rtc/rtc-ds1672.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/rtc/rtc-ds1742.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/rtc/rtc-ds3232.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/rtc/rtc-em3027.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/rtc/rtc-fm3130.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/rtc/rtc-isl12022.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/rtc/rtc-isl1208.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/rtc/rtc-m41t80.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/rtc/rtc-m48t35.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/rtc/rtc-m48t59.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/rtc/rtc-m48t86.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/rtc/rtc-max6900.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/rtc/rtc-msm6242.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/rtc/rtc-pcf50633.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/rtc/rtc-pcf8563.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/rtc/rtc-pcf8583.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/rtc/rtc-rp5c01.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/rtc/rtc-rs5c372.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/rtc/rtc-rv3029c2.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/rtc/rtc-rx8025.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/rtc/rtc-rx8581.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/rtc/rtc-s35390a.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/rtc/rtc-stk17ta8.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/rtc/rtc-v3020.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/rtc/rtc-x1205.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/scsi
-#lib/modules/KVER-ipfire-omap/kernel/drivers/scsi/ch.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/scsi/device_handler
-#lib/modules/KVER-ipfire-omap/kernel/drivers/scsi/device_handler/scsi_dh.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/scsi/device_handler/scsi_dh_alua.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/scsi/device_handler/scsi_dh_emc.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/scsi/device_handler/scsi_dh_hp_sw.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/scsi/device_handler/scsi_dh_rdac.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/scsi/fcoe
-#lib/modules/KVER-ipfire-omap/kernel/drivers/scsi/fcoe/libfcoe.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/scsi/iscsi_boot_sysfs.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/scsi/iscsi_tcp.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/scsi/libfc
-#lib/modules/KVER-ipfire-omap/kernel/drivers/scsi/libfc/libfc.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/scsi/libiscsi.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/scsi/libiscsi_tcp.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/scsi/libsas
-#lib/modules/KVER-ipfire-omap/kernel/drivers/scsi/libsas/libsas.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/scsi/osd
-#lib/modules/KVER-ipfire-omap/kernel/drivers/scsi/osd/libosd.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/scsi/osd/osd.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/scsi/raid_class.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/scsi/scsi_mod.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/scsi/scsi_transport_fc.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/scsi/scsi_transport_iscsi.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/scsi/scsi_transport_sas.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/scsi/scsi_transport_spi.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/scsi/scsi_transport_srp.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/scsi/scsi_wait_scan.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/scsi/sd_mod.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/scsi/ses.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/scsi/sg.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/scsi/sr_mod.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/ssb
-#lib/modules/KVER-ipfire-omap/kernel/drivers/ssb/ssb.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/staging
-#lib/modules/KVER-ipfire-omap/kernel/drivers/staging/usbip
-#lib/modules/KVER-ipfire-omap/kernel/drivers/staging/usbip/usbip-core.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/staging/usbip/usbip-host.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/staging/usbip/vhci-hcd.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/tty
-#lib/modules/KVER-ipfire-omap/kernel/drivers/tty/n_gsm.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/tty/serial
-#lib/modules/KVER-ipfire-omap/kernel/drivers/tty/serial/8250_dw.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/tty/serial/altera_jtaguart.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/tty/serial/altera_uart.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/tty/serial/timbuart.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/tty/serial/xilinx_uartps.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/uio
-#lib/modules/KVER-ipfire-omap/kernel/drivers/uio/uio.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/uio/uio_pdrv.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/uio/uio_pdrv_genirq.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/atm
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/atm/cxacru.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/atm/speedtch.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/atm/ueagle-atm.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/atm/usbatm.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/atm/xusbatm.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/class
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/class/cdc-acm.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/class/cdc-wdm.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/class/usblp.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/class/usbtmc.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/dwc3
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/dwc3/dwc3-omap.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/dwc3/dwc3.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/host
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/host/isp116x-hcd.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/host/isp1362-hcd.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/host/oxu210hp-hcd.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/host/r8a66597-hcd.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/host/sl811-hcd.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/host/u132-hcd.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/misc
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/misc/cypress_cy7c63.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/misc/cytherm.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/misc/emi26.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/misc/emi62.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/misc/ftdi-elan.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/misc/iowarrior.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/misc/isight_firmware.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/misc/sisusbvga
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/misc/sisusbvga/sisusbvga.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/misc/usblcd.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/misc/usbled.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/misc/usbsevseg.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/misc/uss720.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/misc/yurex.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/otg
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/otg/gpio_vbus.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/otg/twl4030-usb.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/otg/twl6030-usb.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/aircable.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/ark3116.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/belkin_sa.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/ch341.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/cp210x.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/cypress_m8.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/digi_acceleport.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/empeg.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/ftdi_sio.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/funsoft.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/garmin_gps.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/hp4x.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/io_edgeport.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/io_ti.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/ipaq.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/ipw.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/ir-usb.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/iuu_phoenix.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/keyspan_pda.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/mct_u232.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/mos7720.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/mos7840.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/moto_modem.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/opticon.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/option.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/oti6858.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/pl2303.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/qcaux.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/qcserial.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/safe_serial.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/siemens_mpi.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/sierra.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/spcp8x5.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/ssu100.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/symbolserial.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/ti_usb_3410_5052.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/usb_wwan.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/usbserial.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/visor.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/vivopay-serial.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/whiteheat.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/serial/zio.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/storage
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/storage/uas.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/storage/ums-alauda.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/storage/ums-cypress.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/storage/ums-datafab.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/storage/ums-eneub6250.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/storage/ums-freecom.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/storage/ums-isd200.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/storage/ums-jumpshot.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/storage/ums-karma.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/storage/ums-onetouch.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/storage/ums-realtek.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/storage/ums-sddr09.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/storage/ums-sddr55.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/storage/ums-usbat.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/usb/storage/usb-storage.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/video
-#lib/modules/KVER-ipfire-omap/kernel/drivers/video/backlight
-#lib/modules/KVER-ipfire-omap/kernel/drivers/video/backlight/adp8860_bl.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/video/backlight/adp8870_bl.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/video/backlight/lcd.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/video/backlight/pcf50633-backlight.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/video/backlight/platform_lcd.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/video/backlight/pwm_bl.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/video/fb_sys_fops.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/video/metronomefb.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/video/output.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/video/sm501fb.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/video/smscufx.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/video/syscopyarea.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/video/sysfillrect.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/video/sysimgblt.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/video/tmiofb.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/video/uvesafb.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/w1
-#lib/modules/KVER-ipfire-omap/kernel/drivers/w1/masters
-#lib/modules/KVER-ipfire-omap/kernel/drivers/w1/masters/ds1wm.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/w1/masters/ds2482.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/w1/masters/ds2490.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/w1/masters/omap_hdq.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/w1/masters/w1-gpio.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/w1/slaves
-#lib/modules/KVER-ipfire-omap/kernel/drivers/w1/slaves/w1_bq27000.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/w1/slaves/w1_ds2408.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/w1/slaves/w1_ds2423.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/w1/slaves/w1_ds2431.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/w1/slaves/w1_ds2433.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/w1/slaves/w1_ds2760.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/w1/slaves/w1_ds2780.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/w1/slaves/w1_smem.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/w1/slaves/w1_therm.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/w1/wire.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/watchdog
-#lib/modules/KVER-ipfire-omap/kernel/drivers/watchdog/dw_wdt.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/watchdog/max63xx_wdt.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/watchdog/mpcore_wdt.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/watchdog/omap_wdt.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/watchdog/pcwd_usb.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/watchdog/softdog.ko
-#lib/modules/KVER-ipfire-omap/kernel/drivers/watchdog/twl4030_wdt.ko
-#lib/modules/KVER-ipfire-omap/kernel/fs
-#lib/modules/KVER-ipfire-omap/kernel/fs/autofs4
-#lib/modules/KVER-ipfire-omap/kernel/fs/autofs4/autofs4.ko
-#lib/modules/KVER-ipfire-omap/kernel/fs/cachefiles
-#lib/modules/KVER-ipfire-omap/kernel/fs/cachefiles/cachefiles.ko
-#lib/modules/KVER-ipfire-omap/kernel/fs/cifs
-#lib/modules/KVER-ipfire-omap/kernel/fs/cifs/cifs.ko
-#lib/modules/KVER-ipfire-omap/kernel/fs/ecryptfs
-#lib/modules/KVER-ipfire-omap/kernel/fs/ecryptfs/ecryptfs.ko
-#lib/modules/KVER-ipfire-omap/kernel/fs/exportfs
-#lib/modules/KVER-ipfire-omap/kernel/fs/exportfs/exportfs.ko
-#lib/modules/KVER-ipfire-omap/kernel/fs/fat
-#lib/modules/KVER-ipfire-omap/kernel/fs/fat/fat.ko
-#lib/modules/KVER-ipfire-omap/kernel/fs/fat/vfat.ko
-#lib/modules/KVER-ipfire-omap/kernel/fs/fscache
-#lib/modules/KVER-ipfire-omap/kernel/fs/fscache/fscache.ko
-#lib/modules/KVER-ipfire-omap/kernel/fs/fuse
-#lib/modules/KVER-ipfire-omap/kernel/fs/fuse/cuse.ko
-#lib/modules/KVER-ipfire-omap/kernel/fs/fuse/fuse.ko
-#lib/modules/KVER-ipfire-omap/kernel/fs/isofs
-#lib/modules/KVER-ipfire-omap/kernel/fs/isofs/isofs.ko
-#lib/modules/KVER-ipfire-omap/kernel/fs/jffs2
-#lib/modules/KVER-ipfire-omap/kernel/fs/jffs2/jffs2.ko
-#lib/modules/KVER-ipfire-omap/kernel/fs/jfs
-#lib/modules/KVER-ipfire-omap/kernel/fs/jfs/jfs.ko
-#lib/modules/KVER-ipfire-omap/kernel/fs/lockd
-#lib/modules/KVER-ipfire-omap/kernel/fs/lockd/lockd.ko
-#lib/modules/KVER-ipfire-omap/kernel/fs/nfs
-#lib/modules/KVER-ipfire-omap/kernel/fs/nfs/nfs.ko
-#lib/modules/KVER-ipfire-omap/kernel/fs/nfs_common
-#lib/modules/KVER-ipfire-omap/kernel/fs/nfs_common/nfs_acl.ko
-#lib/modules/KVER-ipfire-omap/kernel/fs/nfsd
-#lib/modules/KVER-ipfire-omap/kernel/fs/nfsd/nfsd.ko
-#lib/modules/KVER-ipfire-omap/kernel/fs/quota
-#lib/modules/KVER-ipfire-omap/kernel/fs/quota/quota_tree.ko
-#lib/modules/KVER-ipfire-omap/kernel/fs/quota/quota_v1.ko
-#lib/modules/KVER-ipfire-omap/kernel/fs/quota/quota_v2.ko
-#lib/modules/KVER-ipfire-omap/kernel/fs/reiserfs
-#lib/modules/KVER-ipfire-omap/kernel/fs/reiserfs/reiserfs.ko
-#lib/modules/KVER-ipfire-omap/kernel/fs/udf
-#lib/modules/KVER-ipfire-omap/kernel/fs/udf/udf.ko
-#lib/modules/KVER-ipfire-omap/kernel/fs/ufs
-#lib/modules/KVER-ipfire-omap/kernel/fs/ufs/ufs.ko
-#lib/modules/KVER-ipfire-omap/kernel/fs/xfs
-#lib/modules/KVER-ipfire-omap/kernel/fs/xfs/xfs.ko
-#lib/modules/KVER-ipfire-omap/kernel/lib
-#lib/modules/KVER-ipfire-omap/kernel/lib/cordic.ko
-#lib/modules/KVER-ipfire-omap/kernel/lib/crc-ccitt.ko
-#lib/modules/KVER-ipfire-omap/kernel/lib/crc-itu-t.ko
-#lib/modules/KVER-ipfire-omap/kernel/lib/crc-t10dif.ko
-#lib/modules/KVER-ipfire-omap/kernel/lib/crc7.ko
-#lib/modules/KVER-ipfire-omap/kernel/lib/crc8.ko
-#lib/modules/KVER-ipfire-omap/kernel/lib/libcrc32c.ko
-#lib/modules/KVER-ipfire-omap/kernel/lib/raid6
-#lib/modules/KVER-ipfire-omap/kernel/lib/raid6/raid6_pq.ko
-#lib/modules/KVER-ipfire-omap/kernel/lib/ts_bm.ko
-#lib/modules/KVER-ipfire-omap/kernel/lib/ts_fsm.ko
-#lib/modules/KVER-ipfire-omap/kernel/lib/ts_kmp.ko
-#lib/modules/KVER-ipfire-omap/kernel/net
-#lib/modules/KVER-ipfire-omap/kernel/net/802
-#lib/modules/KVER-ipfire-omap/kernel/net/802/garp.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/802/p8022.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/802/psnap.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/802/stp.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/8021q
-#lib/modules/KVER-ipfire-omap/kernel/net/8021q/8021q.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/atm
-#lib/modules/KVER-ipfire-omap/kernel/net/atm/atm.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/atm/br2684.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/atm/clip.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/atm/pppoatm.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/batman-adv
-#lib/modules/KVER-ipfire-omap/kernel/net/batman-adv/batman-adv.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/bluetooth
-#lib/modules/KVER-ipfire-omap/kernel/net/bluetooth/bluetooth.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/bluetooth/bnep
-#lib/modules/KVER-ipfire-omap/kernel/net/bluetooth/bnep/bnep.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/bluetooth/cmtp
-#lib/modules/KVER-ipfire-omap/kernel/net/bluetooth/cmtp/cmtp.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/bluetooth/hidp
-#lib/modules/KVER-ipfire-omap/kernel/net/bluetooth/hidp/hidp.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/bluetooth/rfcomm
-#lib/modules/KVER-ipfire-omap/kernel/net/bluetooth/rfcomm/rfcomm.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/bridge
-#lib/modules/KVER-ipfire-omap/kernel/net/bridge/bridge.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/bridge/netfilter
-#lib/modules/KVER-ipfire-omap/kernel/net/bridge/netfilter/ebt_802_3.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/bridge/netfilter/ebt_among.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/bridge/netfilter/ebt_arp.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/bridge/netfilter/ebt_arpreply.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/bridge/netfilter/ebt_dnat.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/bridge/netfilter/ebt_ip.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/bridge/netfilter/ebt_ip6.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/bridge/netfilter/ebt_limit.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/bridge/netfilter/ebt_log.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/bridge/netfilter/ebt_mark.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/bridge/netfilter/ebt_mark_m.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/bridge/netfilter/ebt_nflog.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/bridge/netfilter/ebt_pkttype.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/bridge/netfilter/ebt_redirect.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/bridge/netfilter/ebt_snat.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/bridge/netfilter/ebt_stp.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/bridge/netfilter/ebt_ulog.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/bridge/netfilter/ebt_vlan.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/bridge/netfilter/ebtable_broute.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/bridge/netfilter/ebtable_filter.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/bridge/netfilter/ebtable_nat.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/bridge/netfilter/ebtables.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ceph
-#lib/modules/KVER-ipfire-omap/kernel/net/ceph/libceph.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ieee802154
-#lib/modules/KVER-ipfire-omap/kernel/net/ieee802154/6lowpan.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ieee802154/af_802154.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ieee802154/ieee802154.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/ah4.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/esp4.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/gre.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/inet_diag.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/ip_gre.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/ipcomp.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/ipip.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/netfilter
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/netfilter/arp_tables.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/netfilter/arpt_mangle.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/netfilter/arptable_filter.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/netfilter/ip_queue.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/netfilter/ip_tables.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/netfilter/ipt_CLUSTERIP.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/netfilter/ipt_ECN.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/netfilter/ipt_LOG.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/netfilter/ipt_MASQUERADE.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/netfilter/ipt_NETMAP.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/netfilter/ipt_REDIRECT.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/netfilter/ipt_REJECT.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/netfilter/ipt_ULOG.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/netfilter/ipt_ah.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/netfilter/ipt_ecn.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/netfilter/ipt_ipp2p.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/netfilter/iptable_filter.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/netfilter/iptable_mangle.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/netfilter/iptable_nat.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/netfilter/iptable_raw.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/netfilter/nf_conntrack_ipv4.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/netfilter/nf_defrag_ipv4.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/netfilter/nf_nat.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/netfilter/nf_nat_amanda.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/netfilter/nf_nat_ftp.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/netfilter/nf_nat_h323.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/netfilter/nf_nat_irc.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/netfilter/nf_nat_pptp.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/netfilter/nf_nat_proto_dccp.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/netfilter/nf_nat_proto_gre.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/netfilter/nf_nat_proto_sctp.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/netfilter/nf_nat_proto_udplite.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/netfilter/nf_nat_sip.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/netfilter/nf_nat_snmp_basic.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/netfilter/nf_nat_tftp.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/tcp_bic.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/tcp_cubic.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/tcp_diag.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/tcp_highspeed.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/tcp_htcp.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/tcp_hybla.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/tcp_illinois.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/tcp_lp.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/tcp_scalable.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/tcp_vegas.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/tcp_veno.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/tcp_westwood.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/tcp_yeah.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/tunnel4.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv4/xfrm4_tunnel.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv6
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv6/ah6.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv6/esp6.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv6/ip6_tunnel.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv6/ipcomp6.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv6/mip6.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv6/netfilter
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv6/netfilter/ip6_queue.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv6/netfilter/ip6_tables.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv6/netfilter/ip6t_LOG.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv6/netfilter/ip6t_REJECT.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv6/netfilter/ip6t_ah.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv6/netfilter/ip6t_eui64.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv6/netfilter/ip6t_frag.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv6/netfilter/ip6t_hbh.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv6/netfilter/ip6t_ipv6header.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv6/netfilter/ip6t_mh.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv6/netfilter/ip6t_rt.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv6/netfilter/ip6table_filter.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv6/netfilter/ip6table_mangle.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv6/netfilter/ip6table_raw.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv6/netfilter/nf_conntrack_ipv6.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv6/netfilter/nf_defrag_ipv6.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv6/sit.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv6/tunnel6.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv6/xfrm6_mode_beet.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv6/xfrm6_mode_ro.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv6/xfrm6_mode_transport.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv6/xfrm6_mode_tunnel.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/ipv6/xfrm6_tunnel.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/irda
-#lib/modules/KVER-ipfire-omap/kernel/net/irda/ircomm
-#lib/modules/KVER-ipfire-omap/kernel/net/irda/ircomm/ircomm-tty.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/irda/ircomm/ircomm.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/irda/irda.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/irda/irlan
-#lib/modules/KVER-ipfire-omap/kernel/net/irda/irlan/irlan.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/irda/irnet
-#lib/modules/KVER-ipfire-omap/kernel/net/irda/irnet/irnet.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/key
-#lib/modules/KVER-ipfire-omap/kernel/net/key/af_key.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/l2tp
-#lib/modules/KVER-ipfire-omap/kernel/net/l2tp/l2tp_core.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/l2tp/l2tp_eth.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/l2tp/l2tp_ip.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/l2tp/l2tp_netlink.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/l2tp/l2tp_ppp.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/llc
-#lib/modules/KVER-ipfire-omap/kernel/net/llc/llc.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/mac80211
-#lib/modules/KVER-ipfire-omap/kernel/net/mac80211/mac80211.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/ipvs
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/ipvs/ip_vs.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/ipvs/ip_vs_dh.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/ipvs/ip_vs_ftp.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/ipvs/ip_vs_lblc.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/ipvs/ip_vs_lblcr.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/ipvs/ip_vs_lc.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/ipvs/ip_vs_nq.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/ipvs/ip_vs_pe_sip.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/ipvs/ip_vs_rr.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/ipvs/ip_vs_sed.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/ipvs/ip_vs_sh.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/ipvs/ip_vs_wlc.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/ipvs/ip_vs_wrr.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/nf_conntrack.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/nf_conntrack_amanda.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/nf_conntrack_broadcast.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/nf_conntrack_ftp.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/nf_conntrack_h323.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/nf_conntrack_irc.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/nf_conntrack_netbios_ns.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/nf_conntrack_netlink.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/nf_conntrack_pptp.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/nf_conntrack_proto_dccp.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/nf_conntrack_proto_gre.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/nf_conntrack_proto_sctp.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/nf_conntrack_proto_udplite.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/nf_conntrack_sane.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/nf_conntrack_sip.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/nf_conntrack_snmp.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/nf_conntrack_tftp.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/nf_tproxy_core.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/nfnetlink.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/nfnetlink_log.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/nfnetlink_queue.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/x_tables.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_AUDIT.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_CHECKSUM.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_CLASSIFY.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_CT.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_DSCP.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_HL.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_IDLETIMER.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_IMQ.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_LED.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_NFLOG.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_NFQUEUE.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_NOTRACK.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_RATEEST.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_TCPMSS.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_TCPOPTSTRIP.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_TEE.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_TPROXY.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_TRACE.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_addrtype.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_cluster.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_comment.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_connbytes.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_connlimit.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_connmark.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_conntrack.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_cpu.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_dccp.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_devgroup.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_dscp.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_esp.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_hashlimit.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_helper.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_hl.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_iprange.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_ipvs.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_layer7.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_length.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_limit.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_mac.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_mark.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_multiport.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_osf.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_owner.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_physdev.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_pkttype.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_policy.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_quota.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_rateest.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_realm.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_recent.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_sctp.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_socket.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_state.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_statistic.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_string.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_tcpmss.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_tcpudp.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_time.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/netfilter/xt_u32.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/rfkill
-#lib/modules/KVER-ipfire-omap/kernel/net/rfkill/rfkill-gpio.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/rfkill/rfkill-regulator.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/rfkill/rfkill.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/rxrpc
-#lib/modules/KVER-ipfire-omap/kernel/net/rxrpc/af-rxrpc.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/rxrpc/rxkad.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/act_csum.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/act_gact.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/act_ipt.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/act_mirred.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/act_nat.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/act_pedit.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/act_police.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/act_simple.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/act_skbedit.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/cls_basic.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/cls_flow.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/cls_fw.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/cls_route.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/cls_rsvp.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/cls_rsvp6.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/cls_tcindex.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/cls_u32.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/em_cmp.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/em_meta.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/em_nbyte.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/em_text.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/em_u32.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/sch_atm.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/sch_cbq.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/sch_choke.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/sch_drr.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/sch_dsmark.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/sch_gred.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/sch_hfsc.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/sch_htb.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/sch_ingress.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/sch_mqprio.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/sch_multiq.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/sch_netem.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/sch_prio.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/sch_qfq.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/sch_red.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/sch_sfb.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/sch_sfq.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/sch_tbf.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sched/sch_teql.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sunrpc
-#lib/modules/KVER-ipfire-omap/kernel/net/sunrpc/auth_gss
-#lib/modules/KVER-ipfire-omap/kernel/net/sunrpc/auth_gss/auth_rpcgss.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sunrpc/auth_gss/rpcsec_gss_krb5.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/sunrpc/sunrpc.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/wireless
-#lib/modules/KVER-ipfire-omap/kernel/net/wireless/cfg80211.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/wireless/lib80211.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/wireless/lib80211_crypt_ccmp.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/wireless/lib80211_crypt_tkip.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/wireless/lib80211_crypt_wep.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/xfrm
-#lib/modules/KVER-ipfire-omap/kernel/net/xfrm/xfrm_ipcomp.ko
-#lib/modules/KVER-ipfire-omap/kernel/net/xfrm/xfrm_user.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound
-#lib/modules/KVER-ipfire-omap/kernel/sound/core
-#lib/modules/KVER-ipfire-omap/kernel/sound/core/oss
-#lib/modules/KVER-ipfire-omap/kernel/sound/core/oss/snd-mixer-oss.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/core/oss/snd-pcm-oss.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/core/seq
-#lib/modules/KVER-ipfire-omap/kernel/sound/core/seq/oss
-#lib/modules/KVER-ipfire-omap/kernel/sound/core/seq/oss/snd-seq-oss.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/core/seq/snd-seq-device.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/core/seq/snd-seq-dummy.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/core/seq/snd-seq-midi-event.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/core/seq/snd-seq-midi.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/core/seq/snd-seq-virmidi.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/core/seq/snd-seq.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/core/snd-hrtimer.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/core/snd-hwdep.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/core/snd-page-alloc.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/core/snd-pcm.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/core/snd-rawmidi.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/core/snd-timer.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/core/snd.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/drivers
-#lib/modules/KVER-ipfire-omap/kernel/sound/drivers/mpu401
-#lib/modules/KVER-ipfire-omap/kernel/sound/drivers/mpu401/snd-mpu401-uart.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/drivers/mpu401/snd-mpu401.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/drivers/snd-aloop.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/drivers/snd-dummy.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/drivers/snd-mtpav.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/drivers/snd-mts64.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/drivers/snd-portman2x4.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/drivers/snd-serial-u16550.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/drivers/snd-virmidi.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/soc
-#lib/modules/KVER-ipfire-omap/kernel/sound/soc/codecs
-#lib/modules/KVER-ipfire-omap/kernel/sound/soc/codecs/snd-soc-tlv320aic23.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/soc/codecs/snd-soc-tlv320aic3x.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/soc/codecs/snd-soc-tpa6130a2.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/soc/codecs/snd-soc-twl4030.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/soc/codecs/snd-soc-twl6040.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/soc/omap
-#lib/modules/KVER-ipfire-omap/kernel/sound/soc/omap/snd-soc-am3517evm.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/soc/omap/snd-soc-igep0020.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/soc/omap/snd-soc-omap-mcbsp.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/soc/omap/snd-soc-omap-mcpdm.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/soc/omap/snd-soc-omap.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/soc/omap/snd-soc-omap3beagle.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/soc/omap/snd-soc-omap3evm.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/soc/omap/snd-soc-omap3pandora.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/soc/omap/snd-soc-overo.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/soc/omap/snd-soc-rx51.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/soc/omap/snd-soc-sdp3430.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/soc/omap/snd-soc-sdp4430.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/soc/omap/snd-soc-zoom2.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/soc/snd-soc-core.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/soundcore.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/usb
-#lib/modules/KVER-ipfire-omap/kernel/sound/usb/6fire
-#lib/modules/KVER-ipfire-omap/kernel/sound/usb/6fire/snd-usb-6fire.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/usb/caiaq
-#lib/modules/KVER-ipfire-omap/kernel/sound/usb/caiaq/snd-usb-caiaq.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/usb/misc
-#lib/modules/KVER-ipfire-omap/kernel/sound/usb/misc/snd-ua101.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/usb/snd-usb-audio.ko
-#lib/modules/KVER-ipfire-omap/kernel/sound/usb/snd-usbmidi-lib.ko
-#lib/modules/KVER-ipfire-omap/modules.alias
-#lib/modules/KVER-ipfire-omap/modules.alias.bin
-#lib/modules/KVER-ipfire-omap/modules.builtin
-#lib/modules/KVER-ipfire-omap/modules.ccwmap
-#lib/modules/KVER-ipfire-omap/modules.dep
-#lib/modules/KVER-ipfire-omap/modules.dep.bin
-#lib/modules/KVER-ipfire-omap/modules.ieee1394map
-#lib/modules/KVER-ipfire-omap/modules.inputmap
-#lib/modules/KVER-ipfire-omap/modules.isapnpmap
-#lib/modules/KVER-ipfire-omap/modules.ofmap
-#lib/modules/KVER-ipfire-omap/modules.order
-#lib/modules/KVER-ipfire-omap/modules.pcimap
-#lib/modules/KVER-ipfire-omap/modules.seriomap
-#lib/modules/KVER-ipfire-omap/modules.symbols
-#lib/modules/KVER-ipfire-omap/modules.symbols.bin
-#lib/modules/KVER-ipfire-omap/modules.usbmap
-#lib/modules/KVER-ipfire-omap/source
-boot/uInit-ipfire-omap
index 3024548c1f169fd1363d4e729d028cf2119ee7e7..3fb76938942dee92d0f51727807fc8a187dce07b 100644 (file)
@@ -2,8 +2,9 @@
 boot/bootcode.bin
 boot/cmdline.txt
 boot/config.txt
-#boot/first32k.bin
-boot/start.elf
-boot/start_cd.elf
 boot/fixup.dat
 boot/fixup_cd.dat
+boot/fixup_x.dat
+boot/start.elf
+boot/start_cd.elf
+boot/start_x.elf
index 759d41d76f5456bc93e3e2c819f2c34d5ebe69ac..1048dc8182a91d6e838c060d79a06b220b3d7073 100644 (file)
@@ -1,6 +1,12 @@
-#boot/MLO
-#boot/u-boot.bin
 usr/bin/mkimage
-boot/boot.scr
-boot/boot.script
-boot/convert_bootscript
+#usr/share/u-boot
+#usr/share/u-boot/pandaboard
+#usr/share/u-boot/pandaboard/MLO
+#usr/share/u-boot/pandaboard/u-boot.bin
+#usr/share/u-boot/pandaboard/u-boot.img
+#usr/share/u-boot/wandboard_dl
+#usr/share/u-boot/wandboard_dl/u-boot.imx
+#usr/share/u-boot/wandboard_quad
+#usr/share/u-boot/wandboard_quad/u-boot.imx
+#usr/share/u-boot/wandboard_solo
+#usr/share/u-boot/wandboard_solo/u-boot.imx
diff --git a/config/rootfiles/common/armv5tel/u-boot-panda b/config/rootfiles/common/armv5tel/u-boot-panda
new file mode 100644 (file)
index 0000000..544d9d7
--- /dev/null
@@ -0,0 +1,5 @@
+#boot/MLO
+#boot/u-boot.bin
+boot/boot.scr
+boot/boot.script
+boot/convert_bootscript
diff --git a/config/rootfiles/common/as86 b/config/rootfiles/common/as86
deleted file mode 100644 (file)
index 96a23e3..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-#usr/bin/as86
-#usr/bin/as86_encap
-#var/ipfire/firebuild
-#etc/system-release
-#opt/pakfire/db/core/mine
diff --git a/config/rootfiles/common/compat-drivers b/config/rootfiles/common/compat-drivers
deleted file mode 100644 (file)
index 5a562d2..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-lib/udev/rules.d/50-compat_firmware.rules
-lib/udev/compat_firmware.sh
index 8965ff70e5a071acf96de06daf92feff2806a464..7fdc983ea2febf203ab7bf384224473a722f5a0d 100644 (file)
@@ -1,10 +1,15 @@
+usr/sbin/convert-dmz
+usr/sbin/convert-outgoingfw
+usr/sbin/convert-portfw
+usr/sbin/convert-xtaccess
+usr/sbin/firewall-policy
 #var/ipfire
 var/ipfire/addon-lang
 var/ipfire/auth
 #var/ipfire/auth/users
-#var/ipfire/backup
-var/ipfire/backup/exclude.user
-var/ipfire/backup/include.user
+var/ipfire/backup
+#var/ipfire/backup/exclude.user
+#var/ipfire/backup/include.user
 var/ipfire/ca
 var/ipfire/certs
 #var/ipfire/certs/index.txt
@@ -26,8 +31,6 @@ var/ipfire/dhcp
 #var/ipfire/dhcp/fixleases
 #var/ipfire/dhcp/settings
 var/ipfire/dhcpc
-var/ipfire/dmzholes
-#var/ipfire/dmzholes/config
 var/ipfire/dns
 #var/ipfire/dns/settings
 var/ipfire/dnsforward
@@ -39,13 +42,31 @@ var/ipfire/ethernet
 #var/ipfire/ethernet/settings
 #var/ipfire/ethernet/vlans
 #var/ipfire/ethernet/wireless
-#var/ipfire/extrahd
+var/ipfire/extrahd
 #var/ipfire/extrahd/bin
-var/ipfire/extrahd/bin/extrahd.pl
-var/ipfire/extrahd/devices
-var/ipfire/extrahd/partitions
-var/ipfire/extrahd/scan
-var/ipfire/extrahd/settings
+#var/ipfire/extrahd/bin/extrahd.pl
+#var/ipfire/extrahd/devices
+#var/ipfire/extrahd/partitions
+#var/ipfire/extrahd/scan
+#var/ipfire/extrahd/settings
+var/ipfire/firewall
+#var/ipfire/firewall/bin
+#var/ipfire/firewall/bin/firewall-lib.pl
+#var/ipfire/firewall/bin/rules.pl
+#var/ipfire/firewall/config
+#var/ipfire/firewall/dmz
+#var/ipfire/firewall/input
+#var/ipfire/firewall/nat
+#var/ipfire/firewall/outgoing
+#var/ipfire/firewall/p2protocols
+#var/ipfire/firewall/settings
+var/ipfire/fwhosts
+#var/ipfire/fwhosts/customgroups
+#var/ipfire/fwhosts/customhosts
+#var/ipfire/fwhosts/customnetworks
+#var/ipfire/fwhosts/customservicegrp
+#var/ipfire/fwhosts/customservices
+#var/ipfire/fwhosts/icmp-types
 var/ipfire/fwlogs
 #var/ipfire/fwlogs/ipsettings
 #var/ipfire/fwlogs/portsettings
@@ -106,20 +127,10 @@ var/ipfire/net-traffic
 #var/ipfire/nfs/nfs-server
 var/ipfire/optionsfw
 #var/ipfire/optionsfw/settings
-var/ipfire/outgoing
-#var/ipfire/outgoing/bin
-#var/ipfire/outgoing/bin/outgoingfw.pl
-var/ipfire/outgoing/defaultservices
-#var/ipfire/outgoing/groups
-#var/ipfire/outgoing/groups/ipgroups
-#var/ipfire/outgoing/groups/macgroups
-#var/ipfire/outgoing/p2protocols
-#var/ipfire/outgoing/rules
-#var/ipfire/outgoing/settings
 var/ipfire/ovpn
-var/ipfire/ovpn/ccd.conf
-var/ipfire/ovpn/ccdroute
-var/ipfire/ovpn/ccdroute2
+#var/ipfire/ovpn/ccd.conf
+#var/ipfire/ovpn/ccdroute
+#var/ipfire/ovpn/ccdroute2
 var/ipfire/pakfire
 #var/ipfire/pakfire/settings
 #var/ipfire/patches
@@ -188,7 +199,3 @@ var/ipfire/wakeonlan
 var/ipfire/wireless
 #var/ipfire/wireless/config
 #var/ipfire/wireless/settings
-var/ipfire/xtaccess
-#var/ipfire/xtaccess/config
-var/ipfire/firebuild
-etc/system-release
index 4fe13bc5220d168b0055e40337e7db11e82bcc03..287ef378cb4f67cdac907d72744dda1e788c80d3 100644 (file)
@@ -37,53 +37,54 @@ usr/lib/sasl2/libsasldb.so
 usr/lib/sasl2/libsasldb.so.2
 usr/lib/sasl2/libsasldb.so.2.0.21
 usr/lib/sasl2/smtpd.conf
-#usr/man/man3/sasl.3
-#usr/man/man3/sasl_authorize_t.3
-#usr/man/man3/sasl_auxprop.3
-#usr/man/man3/sasl_auxprop_getctx.3
-#usr/man/man3/sasl_auxprop_request.3
-#usr/man/man3/sasl_callbacks.3
-#usr/man/man3/sasl_canon_user_t.3
-#usr/man/man3/sasl_chalprompt_t.3
-#usr/man/man3/sasl_checkapop.3
-#usr/man/man3/sasl_checkpass.3
-#usr/man/man3/sasl_client_init.3
-#usr/man/man3/sasl_client_new.3
-#usr/man/man3/sasl_client_start.3
-#usr/man/man3/sasl_client_step.3
-#usr/man/man3/sasl_decode.3
-#usr/man/man3/sasl_dispose.3
-#usr/man/man3/sasl_done.3
-#usr/man/man3/sasl_encode.3
-#usr/man/man3/sasl_encodev.3
-#usr/man/man3/sasl_errdetail.3
-#usr/man/man3/sasl_errors.3
-#usr/man/man3/sasl_errstring.3
-#usr/man/man3/sasl_getopt_t.3
-#usr/man/man3/sasl_getpath_t.3
-#usr/man/man3/sasl_getprop.3
-#usr/man/man3/sasl_getrealm_t.3
-#usr/man/man3/sasl_getsecret_t.3
-#usr/man/man3/sasl_getsimple_t.3
-#usr/man/man3/sasl_global_listmech.3
-#usr/man/man3/sasl_idle.3
-#usr/man/man3/sasl_listmech.3
-#usr/man/man3/sasl_log_t.3
-#usr/man/man3/sasl_server_init.3
-#usr/man/man3/sasl_server_new.3
-#usr/man/man3/sasl_server_start.3
-#usr/man/man3/sasl_server_step.3
-#usr/man/man3/sasl_server_userdb_checkpass_t.3
-#usr/man/man3/sasl_server_userdb_setpass_t.3
-#usr/man/man3/sasl_setpass.3
-#usr/man/man3/sasl_setprop.3
-#usr/man/man3/sasl_user_exists.3
-#usr/man/man3/sasl_verifyfile_t.3
-#usr/man/man8/saslauthd.8
-#usr/man/man8/sasldblistusers2.8
-#usr/man/man8/saslpasswd2.8
+#usr/man/cat8
+#usr/man/cat8/saslauthd.8
 usr/sbin/saslauthd
 usr/sbin/sasldblistusers2
 usr/sbin/saslpasswd2
+#usr/share/man/man3/sasl.3
+#usr/share/man/man3/sasl_authorize_t.3
+#usr/share/man/man3/sasl_auxprop.3
+#usr/share/man/man3/sasl_auxprop_getctx.3
+#usr/share/man/man3/sasl_auxprop_request.3
+#usr/share/man/man3/sasl_callbacks.3
+#usr/share/man/man3/sasl_canon_user_t.3
+#usr/share/man/man3/sasl_chalprompt_t.3
+#usr/share/man/man3/sasl_checkapop.3
+#usr/share/man/man3/sasl_checkpass.3
+#usr/share/man/man3/sasl_client_init.3
+#usr/share/man/man3/sasl_client_new.3
+#usr/share/man/man3/sasl_client_start.3
+#usr/share/man/man3/sasl_client_step.3
+#usr/share/man/man3/sasl_decode.3
+#usr/share/man/man3/sasl_dispose.3
+#usr/share/man/man3/sasl_done.3
+#usr/share/man/man3/sasl_encode.3
+#usr/share/man/man3/sasl_encodev.3
+#usr/share/man/man3/sasl_errdetail.3
+#usr/share/man/man3/sasl_errors.3
+#usr/share/man/man3/sasl_errstring.3
+#usr/share/man/man3/sasl_getopt_t.3
+#usr/share/man/man3/sasl_getpath_t.3
+#usr/share/man/man3/sasl_getprop.3
+#usr/share/man/man3/sasl_getrealm_t.3
+#usr/share/man/man3/sasl_getsecret_t.3
+#usr/share/man/man3/sasl_getsimple_t.3
+#usr/share/man/man3/sasl_global_listmech.3
+#usr/share/man/man3/sasl_idle.3
+#usr/share/man/man3/sasl_listmech.3
+#usr/share/man/man3/sasl_log_t.3
+#usr/share/man/man3/sasl_server_init.3
+#usr/share/man/man3/sasl_server_new.3
+#usr/share/man/man3/sasl_server_start.3
+#usr/share/man/man3/sasl_server_step.3
+#usr/share/man/man3/sasl_server_userdb_checkpass_t.3
+#usr/share/man/man3/sasl_server_userdb_setpass_t.3
+#usr/share/man/man3/sasl_setpass.3
+#usr/share/man/man3/sasl_setprop.3
+#usr/share/man/man3/sasl_user_exists.3
+#usr/share/man/man3/sasl_verifyfile_t.3
+#usr/share/man/man8/sasldblistusers2.8
+#usr/share/man/man8/saslpasswd2.8
 var/lib/sasl
 var/run/saslauthd
index ab7ecef0a557ea3883e0e96821d7f9d857c02a34..a4e209f941fdd5a04f5c5d7508f209e05e315569 100644 (file)
@@ -1,15 +1,27 @@
 usr/bin/sendprofile
-usr/lib/python2.7/site-packages/_fireinfo.so
 usr/lib/python2.7/site-packages/fireinfo
 usr/lib/python2.7/site-packages/fireinfo/__init__.py
 usr/lib/python2.7/site-packages/fireinfo/__init__.pyc
+usr/lib/python2.7/site-packages/fireinfo/__init__.pyo
+#usr/lib/python2.7/site-packages/fireinfo/_fireinfo.la
+usr/lib/python2.7/site-packages/fireinfo/_fireinfo.so
+usr/lib/python2.7/site-packages/fireinfo/bios.py
+usr/lib/python2.7/site-packages/fireinfo/bios.pyc
+usr/lib/python2.7/site-packages/fireinfo/bios.pyo
 usr/lib/python2.7/site-packages/fireinfo/cpu.py
 usr/lib/python2.7/site-packages/fireinfo/cpu.pyc
+usr/lib/python2.7/site-packages/fireinfo/cpu.pyo
 usr/lib/python2.7/site-packages/fireinfo/device.py
 usr/lib/python2.7/site-packages/fireinfo/device.pyc
+usr/lib/python2.7/site-packages/fireinfo/device.pyo
 usr/lib/python2.7/site-packages/fireinfo/hypervisor.py
 usr/lib/python2.7/site-packages/fireinfo/hypervisor.pyc
+usr/lib/python2.7/site-packages/fireinfo/hypervisor.pyo
 usr/lib/python2.7/site-packages/fireinfo/network.py
 usr/lib/python2.7/site-packages/fireinfo/network.pyc
+usr/lib/python2.7/site-packages/fireinfo/network.pyo
 usr/lib/python2.7/site-packages/fireinfo/system.py
 usr/lib/python2.7/site-packages/fireinfo/system.pyc
+usr/lib/python2.7/site-packages/fireinfo/system.pyo
+usr/share/doc/fireinfo
+usr/share/doc/fireinfo/COPYING
index 3aca59ece3f4332114bb463227fdaf26983ba9e9..ca47f807c6851f587a21d23d747aeb803aaf0808 100644 (file)
@@ -83,11 +83,9 @@ etc/rc.d/init.d/networking/red.up/05-RS-dnsmasq
 etc/rc.d/init.d/networking/red.up/10-miniupnpd
 etc/rc.d/init.d/networking/red.up/10-multicast
 etc/rc.d/init.d/networking/red.up/20-RL-firewall
-etc/rc.d/init.d/networking/red.up/22-outgoingfwctrl
+etc/rc.d/init.d/networking/red.up/22-forwardfwctrl
 etc/rc.d/init.d/networking/red.up/23-RS-snort
 etc/rc.d/init.d/networking/red.up/24-RS-qos
-etc/rc.d/init.d/networking/red.up/25-portfw
-etc/rc.d/init.d/networking/red.up/26-xtaccess
 etc/rc.d/init.d/networking/red.up/27-RS-squid
 etc/rc.d/init.d/networking/red.up/30-ddns
 etc/rc.d/init.d/networking/red.up/40-ipac
diff --git a/config/rootfiles/common/i586/mISDN b/config/rootfiles/common/i586/mISDN
deleted file mode 100644 (file)
index 4cf067a..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-etc/modprobe.d/mISDN
-#lib/modules/2.6.32.15-ipfire/mISDN
-#lib/modules/2.6.32.15-ipfire/mISDN/avmfritz.ko
-#lib/modules/2.6.32.15-ipfire/mISDN/hfcmulti.ko
-#lib/modules/2.6.32.15-ipfire/mISDN/hfcpci.ko
-#lib/modules/2.6.32.15-ipfire/mISDN/hfcsusb.ko
-#lib/modules/2.6.32.15-ipfire/mISDN/l1oip.ko
-#lib/modules/2.6.32.15-ipfire/mISDN/mISDN_core.ko
-#lib/modules/2.6.32.15-ipfire/mISDN/mISDN_dsp.ko
-#lib/modules/2.6.32.15-ipfire/mISDN/mISDN_dsp_kb1ec.ko
-#lib/modules/2.6.32.15-ipfire/mISDN/mISDN_dsp_mec2.ko
-#lib/modules/2.6.32.15-ipfire/mISDN/mISDN_dsp_mg2ec.ko
-#lib/modules/2.6.32.15-ipfire/mISDN/mISDN_dsp_octwareec.ko
-#lib/modules/2.6.32.15-ipfire/mISDN/mISDN_dsp_oslec.ko
-#lib/modules/2.6.32.15-ipfire/mISDN/mISDN_l1loop.ko
-#lib/modules/2.6.32.15-ipfire/mISDN/mISDNinfineon.ko
-#lib/modules/2.6.32.15-ipfire/mISDN/mISDNipac.ko
-#lib/modules/2.6.32.15-ipfire/mISDN/mISDNisar.ko
-#lib/modules/2.6.32.15-ipfire/mISDN/octvqe
-#lib/modules/2.6.32.15-ipfire/mISDN/octvqe/octvqe.ko
-#lib/modules/2.6.32.15-ipfire/mISDN/speedfax.ko
-#lib/modules/2.6.32.15-ipfire/mISDN/w6692.ko
-#lib/modules/2.6.32.15-ipfire/mISDN/xhfc.ko
index 39225a43ba69a572c16b273ce89ae9a6724c344d..907783052746fc9b6826cf4a57f620d7f27a87d4 100644 (file)
@@ -16,12 +16,19 @@ lib/libiptc.so.0
 lib/libiptc.so.0.0.0
 #lib/libxtables.la
 lib/libxtables.so
-lib/libxtables.so.7
-lib/libxtables.so.7.0.0
+lib/libxtables.so.10
+lib/libxtables.so.10.0.0
 lib/xtables
+#lib/xtables/libip6t_DNAT.so
+#lib/xtables/libip6t_DNPT.so
 #lib/xtables/libip6t_HL.so
 #lib/xtables/libip6t_LOG.so
+#lib/xtables/libip6t_MASQUERADE.so
+#lib/xtables/libip6t_NETMAP.so
+#lib/xtables/libip6t_REDIRECT.so
 #lib/xtables/libip6t_REJECT.so
+#lib/xtables/libip6t_SNAT.so
+#lib/xtables/libip6t_SNPT.so
 #lib/xtables/libip6t_ah.so
 #lib/xtables/libip6t_dst.so
 #lib/xtables/libip6t_eui64.so
@@ -58,6 +65,7 @@ lib/xtables
 #lib/xtables/libxt_CONNSECMARK.so
 #lib/xtables/libxt_CT.so
 #lib/xtables/libxt_DSCP.so
+#lib/xtables/libxt_HMARK.so
 #lib/xtables/libxt_IDLETIMER.so
 #lib/xtables/libxt_IMQ.so
 #lib/xtables/libxt_LED.so
@@ -75,6 +83,7 @@ lib/xtables
 #lib/xtables/libxt_TPROXY.so
 #lib/xtables/libxt_TRACE.so
 #lib/xtables/libxt_addrtype.so
+#lib/xtables/libxt_bpf.so
 #lib/xtables/libxt_cluster.so
 #lib/xtables/libxt_comment.so
 #lib/xtables/libxt_connbytes.so
@@ -128,9 +137,6 @@ sbin/iptables-restore
 sbin/iptables-save
 sbin/iptables-xml
 sbin/xtables-multi
-#usr/include/iptables
-#usr/include/iptables.h
-#usr/include/iptables/internal.h
 #usr/include/libipq.h
 #usr/include/libiptc
 #usr/include/libiptc/ipt_kernel_headers.h
@@ -138,8 +144,6 @@ sbin/xtables-multi
 #usr/include/libiptc/libiptc.h
 #usr/include/libiptc/libxtc.h
 #usr/include/libiptc/xtcshared.h
-#usr/include/libipulog
-#usr/include/libipulog/libipulog.h
 #usr/include/libnetfilter_conntrack
 #usr/include/libnetfilter_conntrack/libnetfilter_conntrack.h
 #usr/include/libnetfilter_conntrack/libnetfilter_conntrack_dccp.h
@@ -153,36 +157,13 @@ sbin/xtables-multi
 #usr/include/libnetfilter_cttimeout
 #usr/include/libnetfilter_cttimeout/libnetfilter_cttimeout.h
 #usr/include/libnetfilter_queue
-#usr/include/libnetfilter_queue/libipq.h
 #usr/include/libnetfilter_queue/libnetfilter_queue.h
 #usr/include/libnetfilter_queue/linux_nfnetlink_queue.h
 #usr/include/libnfnetlink
 #usr/include/libnfnetlink/libnfnetlink.h
 #usr/include/libnfnetlink/linux_nfnetlink.h
 #usr/include/libnfnetlink/linux_nfnetlink_compat.h
-#usr/include/linux/netfilter/Kbuild
-#usr/include/linux/netfilter/ipset/Kbuild
-#usr/include/linux/netfilter/ipset/ip_set_ahash.h
-#usr/include/linux/netfilter/ipset/ip_set_getport.h
-#usr/include/linux/netfilter/ipset/ip_set_timeout.h
-#usr/include/linux/netfilter/ipset/pfxlen.h
-#usr/include/linux/netfilter/nf_conntrack_amanda.h
-#usr/include/linux/netfilter/nf_conntrack_dccp.h
-#usr/include/linux/netfilter/nf_conntrack_h323.h
-#usr/include/linux/netfilter/nf_conntrack_h323_asn1.h
-#usr/include/linux/netfilter/nf_conntrack_h323_types.h
-#usr/include/linux/netfilter/nf_conntrack_irc.h
-#usr/include/linux/netfilter/nf_conntrack_pptp.h
-#usr/include/linux/netfilter/nf_conntrack_proto_gre.h
-#usr/include/linux/netfilter/nf_conntrack_sane.h
-#usr/include/linux/netfilter/nf_conntrack_sip.h
-#usr/include/linux/netfilter/nf_conntrack_snmp.h
-#usr/include/linux/netfilter/nf_conntrack_tftp.h
-#usr/include/linux/netfilter/xt_IMQ.h
-#usr/include/linux/netfilter/xt_layer7.h
-#usr/include/net/netfilter
-#usr/include/net/netfilter/nf_conntrack_tuple.h
-#usr/include/net/netfilter/nf_nat.h
+#usr/include/xtables-version.h
 #usr/include/xtables.h
 #usr/lib/libnetfilter_conntrack.la
 usr/lib/libnetfilter_conntrack.so
@@ -192,16 +173,10 @@ usr/lib/libnetfilter_conntrack.so.3.4.0
 usr/lib/libnetfilter_cttimeout.so
 usr/lib/libnetfilter_cttimeout.so.1
 usr/lib/libnetfilter_cttimeout.so.1.0.0
-#usr/lib/libnetfilter_queue.a
 #usr/lib/libnetfilter_queue.la
 usr/lib/libnetfilter_queue.so
 usr/lib/libnetfilter_queue.so.1
-usr/lib/libnetfilter_queue.so.1.1.0
-#usr/lib/libnetfilter_queue_libipq.a
-#usr/lib/libnetfilter_queue_libipq.la
-usr/lib/libnetfilter_queue_libipq.so
-usr/lib/libnetfilter_queue_libipq.so.1
-usr/lib/libnetfilter_queue_libipq.so.1.0.0
+usr/lib/libnetfilter_queue.so.1.2.0
 #usr/lib/libnfnetlink.a
 #usr/lib/libnfnetlink.la
 usr/lib/libnfnetlink.so
@@ -231,6 +206,7 @@ usr/lib/libnfnetlink.so.0.2.0
 #usr/share/man/man8/ip6tables-restore.8
 #usr/share/man/man8/ip6tables-save.8
 #usr/share/man/man8/ip6tables.8
+#usr/share/man/man8/iptables-extensions.8
 #usr/share/man/man8/iptables-restore.8
 #usr/share/man/man8/iptables-save.8
 #usr/share/man/man8/iptables.8
diff --git a/config/rootfiles/common/jquery b/config/rootfiles/common/jquery
new file mode 100644 (file)
index 0000000..cb55288
--- /dev/null
@@ -0,0 +1 @@
+srv/web/ipfire/html/include/jquery.js
index 2beb80010f517086882c74b813772162df2ce7a7..960e1c82738c7b2f92c32330a0b8e7b56dcc053d 100644 (file)
@@ -53,7 +53,8 @@
 #usr/include/netlink/socket.h
 #usr/include/netlink/types.h
 #usr/include/netlink/utils.h
+#usr/lib/libnl.a
 usr/lib/libnl.so
 usr/lib/libnl.so.1
-usr/lib/libnl.so.1.1
+usr/lib/libnl.so.1.1.4
 #usr/lib/pkgconfig/libnl-1.pc
index ea2eb77f3616c8de577b86103508c47d4b56cf28..07c1edda52a9062292fc3d1752d0559be475f746 100644 (file)
@@ -54,7 +54,7 @@
 #usr/lib/libxml2.la
 usr/lib/libxml2.so
 usr/lib/libxml2.so.2
-usr/lib/libxml2.so.2.6.26
+usr/lib/libxml2.so.2.6.32
 #usr/lib/pkgconfig/libxml-2.0.pc
 usr/lib/python2.7/site-packages/drv_libxml2.py
 usr/lib/python2.7/site-packages/libxml2.py
@@ -62,219 +62,217 @@ usr/lib/python2.7/site-packages/libxml2.py
 #usr/lib/python2.7/site-packages/libxml2mod.la
 usr/lib/python2.7/site-packages/libxml2mod.so
 #usr/lib/xml2Conf.sh
-#usr/man/man1/xml2-config.1
-#usr/man/man1/xmlcatalog.1
-#usr/man/man1/xmllint.1
-#usr/man/man3/libxml.3
 #usr/share/aclocal/libxml.m4
-#usr/share/doc/libxml2-2.6.26
-#usr/share/doc/libxml2-2.6.26/Copyright
-#usr/share/doc/libxml2-2.6.26/examples
-#usr/share/doc/libxml2-2.6.26/examples/testHTML.c
-#usr/share/doc/libxml2-2.6.26/examples/testSAX.c
-#usr/share/doc/libxml2-2.6.26/examples/testXPath.c
-#usr/share/doc/libxml2-2.6.26/examples/xmllint.c
-#usr/share/doc/libxml2-2.6.26/html
-#usr/share/doc/libxml2-2.6.26/html/DOM.gif
-#usr/share/doc/libxml2-2.6.26/html/FAQ.html
-#usr/share/doc/libxml2-2.6.26/html/Libxml2-Logo-180x168.gif
-#usr/share/doc/libxml2-2.6.26/html/Libxml2-Logo-90x34.gif
-#usr/share/doc/libxml2-2.6.26/html/encoding.html
-#usr/share/doc/libxml2-2.6.26/html/examples.xml
-#usr/share/doc/libxml2-2.6.26/html/examples.xsl
-#usr/share/doc/libxml2-2.6.26/html/html
-#usr/share/doc/libxml2-2.6.26/html/html/book1.html
-#usr/share/doc/libxml2-2.6.26/html/html/home.png
-#usr/share/doc/libxml2-2.6.26/html/html/index.html
-#usr/share/doc/libxml2-2.6.26/html/html/left.png
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-DOCBparser.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-HTMLparser.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-HTMLtree.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-SAX.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-SAX2.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-c14n.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-catalog.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-chvalid.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-debugXML.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-dict.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-encoding.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-entities.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-globals.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-hash.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-lib.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-list.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-nanoftp.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-nanohttp.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-parser.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-parserInternals.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-pattern.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-relaxng.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-schemasInternals.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-schematron.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-threads.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-tree.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-uri.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-valid.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-xinclude.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-xlink.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-xmlIO.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-xmlautomata.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-xmlerror.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-xmlexports.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-xmlmemory.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-xmlmodule.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-xmlreader.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-xmlregexp.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-xmlsave.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-xmlschemas.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-xmlschemastypes.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-xmlstring.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-xmlunicode.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-xmlversion.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-xmlwriter.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-xpath.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-xpathInternals.html
-#usr/share/doc/libxml2-2.6.26/html/html/libxml-xpointer.html
-#usr/share/doc/libxml2-2.6.26/html/html/right.png
-#usr/share/doc/libxml2-2.6.26/html/html/up.png
-#usr/share/doc/libxml2-2.6.26/html/io1.c
-#usr/share/doc/libxml2-2.6.26/html/io1.res
-#usr/share/doc/libxml2-2.6.26/html/io2.c
-#usr/share/doc/libxml2-2.6.26/html/io2.res
-#usr/share/doc/libxml2-2.6.26/html/libxml.gif
-#usr/share/doc/libxml2-2.6.26/html/parse1.c
-#usr/share/doc/libxml2-2.6.26/html/parse2.c
-#usr/share/doc/libxml2-2.6.26/html/parse3.c
-#usr/share/doc/libxml2-2.6.26/html/parse4.c
-#usr/share/doc/libxml2-2.6.26/html/reader1.c
-#usr/share/doc/libxml2-2.6.26/html/reader1.res
-#usr/share/doc/libxml2-2.6.26/html/reader2.c
-#usr/share/doc/libxml2-2.6.26/html/reader3.c
-#usr/share/doc/libxml2-2.6.26/html/reader3.res
-#usr/share/doc/libxml2-2.6.26/html/reader4.c
-#usr/share/doc/libxml2-2.6.26/html/reader4.res
-#usr/share/doc/libxml2-2.6.26/html/redhat.gif
-#usr/share/doc/libxml2-2.6.26/html/smallfootonly.gif
-#usr/share/doc/libxml2-2.6.26/html/structure.gif
-#usr/share/doc/libxml2-2.6.26/html/test1.xml
-#usr/share/doc/libxml2-2.6.26/html/test2.xml
-#usr/share/doc/libxml2-2.6.26/html/test3.xml
-#usr/share/doc/libxml2-2.6.26/html/testWriter.c
-#usr/share/doc/libxml2-2.6.26/html/tree1.c
-#usr/share/doc/libxml2-2.6.26/html/tree1.res
-#usr/share/doc/libxml2-2.6.26/html/tree2.c
-#usr/share/doc/libxml2-2.6.26/html/tree2.res
-#usr/share/doc/libxml2-2.6.26/html/tst.xml
-#usr/share/doc/libxml2-2.6.26/html/tutorial
-#usr/share/doc/libxml2-2.6.26/html/tutorial/apa.html
-#usr/share/doc/libxml2-2.6.26/html/tutorial/apb.html
-#usr/share/doc/libxml2-2.6.26/html/tutorial/apc.html
-#usr/share/doc/libxml2-2.6.26/html/tutorial/apd.html
-#usr/share/doc/libxml2-2.6.26/html/tutorial/ape.html
-#usr/share/doc/libxml2-2.6.26/html/tutorial/apf.html
-#usr/share/doc/libxml2-2.6.26/html/tutorial/apg.html
-#usr/share/doc/libxml2-2.6.26/html/tutorial/aph.html
-#usr/share/doc/libxml2-2.6.26/html/tutorial/api.html
-#usr/share/doc/libxml2-2.6.26/html/tutorial/ar01s02.html
-#usr/share/doc/libxml2-2.6.26/html/tutorial/ar01s03.html
-#usr/share/doc/libxml2-2.6.26/html/tutorial/ar01s04.html
-#usr/share/doc/libxml2-2.6.26/html/tutorial/ar01s05.html
-#usr/share/doc/libxml2-2.6.26/html/tutorial/ar01s06.html
-#usr/share/doc/libxml2-2.6.26/html/tutorial/ar01s07.html
-#usr/share/doc/libxml2-2.6.26/html/tutorial/ar01s08.html
-#usr/share/doc/libxml2-2.6.26/html/tutorial/ar01s09.html
-#usr/share/doc/libxml2-2.6.26/html/tutorial/images
-#usr/share/doc/libxml2-2.6.26/html/tutorial/images/blank.png
-#usr/share/doc/libxml2-2.6.26/html/tutorial/images/callouts
-#usr/share/doc/libxml2-2.6.26/html/tutorial/images/callouts/1.png
-#usr/share/doc/libxml2-2.6.26/html/tutorial/images/callouts/10.png
-#usr/share/doc/libxml2-2.6.26/html/tutorial/images/callouts/2.png
-#usr/share/doc/libxml2-2.6.26/html/tutorial/images/callouts/3.png
-#usr/share/doc/libxml2-2.6.26/html/tutorial/images/callouts/4.png
-#usr/share/doc/libxml2-2.6.26/html/tutorial/images/callouts/5.png
-#usr/share/doc/libxml2-2.6.26/html/tutorial/images/callouts/6.png
-#usr/share/doc/libxml2-2.6.26/html/tutorial/images/callouts/7.png
-#usr/share/doc/libxml2-2.6.26/html/tutorial/images/callouts/8.png
-#usr/share/doc/libxml2-2.6.26/html/tutorial/images/callouts/9.png
-#usr/share/doc/libxml2-2.6.26/html/tutorial/images/caution.png
-#usr/share/doc/libxml2-2.6.26/html/tutorial/images/draft.png
-#usr/share/doc/libxml2-2.6.26/html/tutorial/images/home.png
-#usr/share/doc/libxml2-2.6.26/html/tutorial/images/important.png
-#usr/share/doc/libxml2-2.6.26/html/tutorial/images/next.png
-#usr/share/doc/libxml2-2.6.26/html/tutorial/images/note.png
-#usr/share/doc/libxml2-2.6.26/html/tutorial/images/prev.png
-#usr/share/doc/libxml2-2.6.26/html/tutorial/images/tip.png
-#usr/share/doc/libxml2-2.6.26/html/tutorial/images/toc-blank.png
-#usr/share/doc/libxml2-2.6.26/html/tutorial/images/toc-minus.png
-#usr/share/doc/libxml2-2.6.26/html/tutorial/images/toc-plus.png
-#usr/share/doc/libxml2-2.6.26/html/tutorial/images/up.png
-#usr/share/doc/libxml2-2.6.26/html/tutorial/images/warning.png
-#usr/share/doc/libxml2-2.6.26/html/tutorial/includeaddattribute.c
-#usr/share/doc/libxml2-2.6.26/html/tutorial/includeaddkeyword.c
-#usr/share/doc/libxml2-2.6.26/html/tutorial/includeconvert.c
-#usr/share/doc/libxml2-2.6.26/html/tutorial/includegetattribute.c
-#usr/share/doc/libxml2-2.6.26/html/tutorial/includekeyword.c
-#usr/share/doc/libxml2-2.6.26/html/tutorial/includexpath.c
-#usr/share/doc/libxml2-2.6.26/html/tutorial/index.html
-#usr/share/doc/libxml2-2.6.26/html/tutorial/ix01.html
-#usr/share/doc/libxml2-2.6.26/html/tutorial/xmltutorial.pdf
-#usr/share/doc/libxml2-2.6.26/html/w3c.png
-#usr/share/doc/libxml2-2.6.26/html/writer.xml
-#usr/share/doc/libxml2-2.6.26/html/xml.html
-#usr/share/doc/libxml2-2.6.26/html/xpath1.c
-#usr/share/doc/libxml2-2.6.26/html/xpath1.res
-#usr/share/doc/libxml2-2.6.26/html/xpath2.c
-#usr/share/doc/libxml2-2.6.26/html/xpath2.res
-#usr/share/doc/libxml2-python-2.6.26
-#usr/share/doc/libxml2-python-2.6.26/TODO
-#usr/share/doc/libxml2-python-2.6.26/examples
-#usr/share/doc/libxml2-python-2.6.26/examples/attribs.py
-#usr/share/doc/libxml2-python-2.6.26/examples/build.py
-#usr/share/doc/libxml2-python-2.6.26/examples/ctxterror.py
-#usr/share/doc/libxml2-python-2.6.26/examples/cutnpaste.py
-#usr/share/doc/libxml2-python-2.6.26/examples/dtdvalid.py
-#usr/share/doc/libxml2-python-2.6.26/examples/error.py
-#usr/share/doc/libxml2-python-2.6.26/examples/inbuf.py
-#usr/share/doc/libxml2-python-2.6.26/examples/indexes.py
-#usr/share/doc/libxml2-python-2.6.26/examples/invalid.xml
-#usr/share/doc/libxml2-python-2.6.26/examples/nsdel.py
-#usr/share/doc/libxml2-python-2.6.26/examples/outbuf.py
-#usr/share/doc/libxml2-python-2.6.26/examples/push.py
-#usr/share/doc/libxml2-python-2.6.26/examples/pushSAX.py
-#usr/share/doc/libxml2-python-2.6.26/examples/pushSAXhtml.py
-#usr/share/doc/libxml2-python-2.6.26/examples/reader.py
-#usr/share/doc/libxml2-python-2.6.26/examples/reader2.py
-#usr/share/doc/libxml2-python-2.6.26/examples/reader3.py
-#usr/share/doc/libxml2-python-2.6.26/examples/reader4.py
-#usr/share/doc/libxml2-python-2.6.26/examples/reader5.py
-#usr/share/doc/libxml2-python-2.6.26/examples/reader6.py
-#usr/share/doc/libxml2-python-2.6.26/examples/reader7.py
-#usr/share/doc/libxml2-python-2.6.26/examples/reader8.py
-#usr/share/doc/libxml2-python-2.6.26/examples/readererr.py
-#usr/share/doc/libxml2-python-2.6.26/examples/readernext.py
-#usr/share/doc/libxml2-python-2.6.26/examples/regexp.py
-#usr/share/doc/libxml2-python-2.6.26/examples/relaxng.py
-#usr/share/doc/libxml2-python-2.6.26/examples/resolver.py
-#usr/share/doc/libxml2-python-2.6.26/examples/schema.py
-#usr/share/doc/libxml2-python-2.6.26/examples/serialize.py
-#usr/share/doc/libxml2-python-2.6.26/examples/sync.py
-#usr/share/doc/libxml2-python-2.6.26/examples/test.dtd
-#usr/share/doc/libxml2-python-2.6.26/examples/thread2.py
-#usr/share/doc/libxml2-python-2.6.26/examples/tst.py
-#usr/share/doc/libxml2-python-2.6.26/examples/tst.xml
-#usr/share/doc/libxml2-python-2.6.26/examples/tstLastError.py
-#usr/share/doc/libxml2-python-2.6.26/examples/tstURI.py
-#usr/share/doc/libxml2-python-2.6.26/examples/tstmem.py
-#usr/share/doc/libxml2-python-2.6.26/examples/tstxpath.py
-#usr/share/doc/libxml2-python-2.6.26/examples/valid.xml
-#usr/share/doc/libxml2-python-2.6.26/examples/validDTD.py
-#usr/share/doc/libxml2-python-2.6.26/examples/validRNG.py
-#usr/share/doc/libxml2-python-2.6.26/examples/validSchemas.py
-#usr/share/doc/libxml2-python-2.6.26/examples/validate.py
-#usr/share/doc/libxml2-python-2.6.26/examples/walker.py
-#usr/share/doc/libxml2-python-2.6.26/examples/xpath.py
-#usr/share/doc/libxml2-python-2.6.26/examples/xpathext.py
-#usr/share/doc/libxml2-python-2.6.26/examples/xpathret.py
+#usr/share/doc/libxml2-2.6.32
+#usr/share/doc/libxml2-2.6.32/Copyright
+#usr/share/doc/libxml2-2.6.32/examples
+#usr/share/doc/libxml2-2.6.32/examples/testHTML.c
+#usr/share/doc/libxml2-2.6.32/examples/testSAX.c
+#usr/share/doc/libxml2-2.6.32/examples/testXPath.c
+#usr/share/doc/libxml2-2.6.32/examples/xmllint.c
+#usr/share/doc/libxml2-2.6.32/html
+#usr/share/doc/libxml2-2.6.32/html/DOM.gif
+#usr/share/doc/libxml2-2.6.32/html/FAQ.html
+#usr/share/doc/libxml2-2.6.32/html/Libxml2-Logo-180x168.gif
+#usr/share/doc/libxml2-2.6.32/html/Libxml2-Logo-90x34.gif
+#usr/share/doc/libxml2-2.6.32/html/encoding.html
+#usr/share/doc/libxml2-2.6.32/html/examples.xml
+#usr/share/doc/libxml2-2.6.32/html/examples.xsl
+#usr/share/doc/libxml2-2.6.32/html/html
+#usr/share/doc/libxml2-2.6.32/html/html/book1.html
+#usr/share/doc/libxml2-2.6.32/html/html/home.png
+#usr/share/doc/libxml2-2.6.32/html/html/index.html
+#usr/share/doc/libxml2-2.6.32/html/html/left.png
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-DOCBparser.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-HTMLparser.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-HTMLtree.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-SAX.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-SAX2.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-c14n.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-catalog.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-chvalid.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-debugXML.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-dict.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-encoding.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-entities.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-globals.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-hash.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-lib.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-list.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-nanoftp.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-nanohttp.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-parser.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-parserInternals.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-pattern.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-relaxng.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-schemasInternals.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-schematron.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-threads.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-tree.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-uri.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-valid.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-xinclude.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-xlink.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-xmlIO.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-xmlautomata.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-xmlerror.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-xmlexports.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-xmlmemory.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-xmlmodule.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-xmlreader.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-xmlregexp.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-xmlsave.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-xmlschemas.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-xmlschemastypes.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-xmlstring.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-xmlunicode.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-xmlversion.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-xmlwriter.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-xpath.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-xpathInternals.html
+#usr/share/doc/libxml2-2.6.32/html/html/libxml-xpointer.html
+#usr/share/doc/libxml2-2.6.32/html/html/right.png
+#usr/share/doc/libxml2-2.6.32/html/html/up.png
+#usr/share/doc/libxml2-2.6.32/html/io1.c
+#usr/share/doc/libxml2-2.6.32/html/io1.res
+#usr/share/doc/libxml2-2.6.32/html/io2.c
+#usr/share/doc/libxml2-2.6.32/html/io2.res
+#usr/share/doc/libxml2-2.6.32/html/libxml.gif
+#usr/share/doc/libxml2-2.6.32/html/parse1.c
+#usr/share/doc/libxml2-2.6.32/html/parse2.c
+#usr/share/doc/libxml2-2.6.32/html/parse3.c
+#usr/share/doc/libxml2-2.6.32/html/parse4.c
+#usr/share/doc/libxml2-2.6.32/html/reader1.c
+#usr/share/doc/libxml2-2.6.32/html/reader1.res
+#usr/share/doc/libxml2-2.6.32/html/reader2.c
+#usr/share/doc/libxml2-2.6.32/html/reader3.c
+#usr/share/doc/libxml2-2.6.32/html/reader3.res
+#usr/share/doc/libxml2-2.6.32/html/reader4.c
+#usr/share/doc/libxml2-2.6.32/html/reader4.res
+#usr/share/doc/libxml2-2.6.32/html/redhat.gif
+#usr/share/doc/libxml2-2.6.32/html/smallfootonly.gif
+#usr/share/doc/libxml2-2.6.32/html/structure.gif
+#usr/share/doc/libxml2-2.6.32/html/test1.xml
+#usr/share/doc/libxml2-2.6.32/html/test2.xml
+#usr/share/doc/libxml2-2.6.32/html/test3.xml
+#usr/share/doc/libxml2-2.6.32/html/testWriter.c
+#usr/share/doc/libxml2-2.6.32/html/tree1.c
+#usr/share/doc/libxml2-2.6.32/html/tree1.res
+#usr/share/doc/libxml2-2.6.32/html/tree2.c
+#usr/share/doc/libxml2-2.6.32/html/tree2.res
+#usr/share/doc/libxml2-2.6.32/html/tst.xml
+#usr/share/doc/libxml2-2.6.32/html/tutorial
+#usr/share/doc/libxml2-2.6.32/html/tutorial/apa.html
+#usr/share/doc/libxml2-2.6.32/html/tutorial/apb.html
+#usr/share/doc/libxml2-2.6.32/html/tutorial/apc.html
+#usr/share/doc/libxml2-2.6.32/html/tutorial/apd.html
+#usr/share/doc/libxml2-2.6.32/html/tutorial/ape.html
+#usr/share/doc/libxml2-2.6.32/html/tutorial/apf.html
+#usr/share/doc/libxml2-2.6.32/html/tutorial/apg.html
+#usr/share/doc/libxml2-2.6.32/html/tutorial/aph.html
+#usr/share/doc/libxml2-2.6.32/html/tutorial/api.html
+#usr/share/doc/libxml2-2.6.32/html/tutorial/ar01s02.html
+#usr/share/doc/libxml2-2.6.32/html/tutorial/ar01s03.html
+#usr/share/doc/libxml2-2.6.32/html/tutorial/ar01s04.html
+#usr/share/doc/libxml2-2.6.32/html/tutorial/ar01s05.html
+#usr/share/doc/libxml2-2.6.32/html/tutorial/ar01s06.html
+#usr/share/doc/libxml2-2.6.32/html/tutorial/ar01s07.html
+#usr/share/doc/libxml2-2.6.32/html/tutorial/ar01s08.html
+#usr/share/doc/libxml2-2.6.32/html/tutorial/ar01s09.html
+#usr/share/doc/libxml2-2.6.32/html/tutorial/images
+#usr/share/doc/libxml2-2.6.32/html/tutorial/images/blank.png
+#usr/share/doc/libxml2-2.6.32/html/tutorial/images/callouts
+#usr/share/doc/libxml2-2.6.32/html/tutorial/images/callouts/1.png
+#usr/share/doc/libxml2-2.6.32/html/tutorial/images/callouts/10.png
+#usr/share/doc/libxml2-2.6.32/html/tutorial/images/callouts/2.png
+#usr/share/doc/libxml2-2.6.32/html/tutorial/images/callouts/3.png
+#usr/share/doc/libxml2-2.6.32/html/tutorial/images/callouts/4.png
+#usr/share/doc/libxml2-2.6.32/html/tutorial/images/callouts/5.png
+#usr/share/doc/libxml2-2.6.32/html/tutorial/images/callouts/6.png
+#usr/share/doc/libxml2-2.6.32/html/tutorial/images/callouts/7.png
+#usr/share/doc/libxml2-2.6.32/html/tutorial/images/callouts/8.png
+#usr/share/doc/libxml2-2.6.32/html/tutorial/images/callouts/9.png
+#usr/share/doc/libxml2-2.6.32/html/tutorial/images/caution.png
+#usr/share/doc/libxml2-2.6.32/html/tutorial/images/draft.png
+#usr/share/doc/libxml2-2.6.32/html/tutorial/images/home.png
+#usr/share/doc/libxml2-2.6.32/html/tutorial/images/important.png
+#usr/share/doc/libxml2-2.6.32/html/tutorial/images/next.png
+#usr/share/doc/libxml2-2.6.32/html/tutorial/images/note.png
+#usr/share/doc/libxml2-2.6.32/html/tutorial/images/prev.png
+#usr/share/doc/libxml2-2.6.32/html/tutorial/images/tip.png
+#usr/share/doc/libxml2-2.6.32/html/tutorial/images/toc-blank.png
+#usr/share/doc/libxml2-2.6.32/html/tutorial/images/toc-minus.png
+#usr/share/doc/libxml2-2.6.32/html/tutorial/images/toc-plus.png
+#usr/share/doc/libxml2-2.6.32/html/tutorial/images/up.png
+#usr/share/doc/libxml2-2.6.32/html/tutorial/images/warning.png
+#usr/share/doc/libxml2-2.6.32/html/tutorial/includeaddattribute.c
+#usr/share/doc/libxml2-2.6.32/html/tutorial/includeaddkeyword.c
+#usr/share/doc/libxml2-2.6.32/html/tutorial/includeconvert.c
+#usr/share/doc/libxml2-2.6.32/html/tutorial/includegetattribute.c
+#usr/share/doc/libxml2-2.6.32/html/tutorial/includekeyword.c
+#usr/share/doc/libxml2-2.6.32/html/tutorial/includexpath.c
+#usr/share/doc/libxml2-2.6.32/html/tutorial/index.html
+#usr/share/doc/libxml2-2.6.32/html/tutorial/ix01.html
+#usr/share/doc/libxml2-2.6.32/html/tutorial/xmltutorial.pdf
+#usr/share/doc/libxml2-2.6.32/html/w3c.png
+#usr/share/doc/libxml2-2.6.32/html/writer.xml
+#usr/share/doc/libxml2-2.6.32/html/xml.html
+#usr/share/doc/libxml2-2.6.32/html/xpath1.c
+#usr/share/doc/libxml2-2.6.32/html/xpath1.res
+#usr/share/doc/libxml2-2.6.32/html/xpath2.c
+#usr/share/doc/libxml2-2.6.32/html/xpath2.res
+#usr/share/doc/libxml2-python-2.6.32
+#usr/share/doc/libxml2-python-2.6.32/TODO
+#usr/share/doc/libxml2-python-2.6.32/examples
+#usr/share/doc/libxml2-python-2.6.32/examples/attribs.py
+#usr/share/doc/libxml2-python-2.6.32/examples/build.py
+#usr/share/doc/libxml2-python-2.6.32/examples/compareNodes.py
+#usr/share/doc/libxml2-python-2.6.32/examples/ctxterror.py
+#usr/share/doc/libxml2-python-2.6.32/examples/cutnpaste.py
+#usr/share/doc/libxml2-python-2.6.32/examples/dtdvalid.py
+#usr/share/doc/libxml2-python-2.6.32/examples/error.py
+#usr/share/doc/libxml2-python-2.6.32/examples/inbuf.py
+#usr/share/doc/libxml2-python-2.6.32/examples/indexes.py
+#usr/share/doc/libxml2-python-2.6.32/examples/invalid.xml
+#usr/share/doc/libxml2-python-2.6.32/examples/nsdel.py
+#usr/share/doc/libxml2-python-2.6.32/examples/outbuf.py
+#usr/share/doc/libxml2-python-2.6.32/examples/push.py
+#usr/share/doc/libxml2-python-2.6.32/examples/pushSAX.py
+#usr/share/doc/libxml2-python-2.6.32/examples/pushSAXhtml.py
+#usr/share/doc/libxml2-python-2.6.32/examples/reader.py
+#usr/share/doc/libxml2-python-2.6.32/examples/reader2.py
+#usr/share/doc/libxml2-python-2.6.32/examples/reader3.py
+#usr/share/doc/libxml2-python-2.6.32/examples/reader4.py
+#usr/share/doc/libxml2-python-2.6.32/examples/reader5.py
+#usr/share/doc/libxml2-python-2.6.32/examples/reader6.py
+#usr/share/doc/libxml2-python-2.6.32/examples/reader7.py
+#usr/share/doc/libxml2-python-2.6.32/examples/reader8.py
+#usr/share/doc/libxml2-python-2.6.32/examples/readererr.py
+#usr/share/doc/libxml2-python-2.6.32/examples/readernext.py
+#usr/share/doc/libxml2-python-2.6.32/examples/regexp.py
+#usr/share/doc/libxml2-python-2.6.32/examples/relaxng.py
+#usr/share/doc/libxml2-python-2.6.32/examples/resolver.py
+#usr/share/doc/libxml2-python-2.6.32/examples/schema.py
+#usr/share/doc/libxml2-python-2.6.32/examples/serialize.py
+#usr/share/doc/libxml2-python-2.6.32/examples/sync.py
+#usr/share/doc/libxml2-python-2.6.32/examples/test.dtd
+#usr/share/doc/libxml2-python-2.6.32/examples/thread2.py
+#usr/share/doc/libxml2-python-2.6.32/examples/tst.py
+#usr/share/doc/libxml2-python-2.6.32/examples/tst.xml
+#usr/share/doc/libxml2-python-2.6.32/examples/tstLastError.py
+#usr/share/doc/libxml2-python-2.6.32/examples/tstURI.py
+#usr/share/doc/libxml2-python-2.6.32/examples/tstmem.py
+#usr/share/doc/libxml2-python-2.6.32/examples/tstxpath.py
+#usr/share/doc/libxml2-python-2.6.32/examples/valid.xml
+#usr/share/doc/libxml2-python-2.6.32/examples/validDTD.py
+#usr/share/doc/libxml2-python-2.6.32/examples/validRNG.py
+#usr/share/doc/libxml2-python-2.6.32/examples/validSchemas.py
+#usr/share/doc/libxml2-python-2.6.32/examples/validate.py
+#usr/share/doc/libxml2-python-2.6.32/examples/walker.py
+#usr/share/doc/libxml2-python-2.6.32/examples/xpath.py
+#usr/share/doc/libxml2-python-2.6.32/examples/xpathext.py
+#usr/share/doc/libxml2-python-2.6.32/examples/xpathns.py
+#usr/share/doc/libxml2-python-2.6.32/examples/xpathret.py
 #usr/share/gtk-doc
 #usr/share/gtk-doc/html
 #usr/share/gtk-doc/html/libxml2
@@ -333,3 +331,7 @@ usr/lib/python2.7/site-packages/libxml2mod.so
 #usr/share/gtk-doc/html/libxml2/right.png
 #usr/share/gtk-doc/html/libxml2/style.css
 #usr/share/gtk-doc/html/libxml2/up.png
+#usr/share/man/man1/xml2-config.1
+#usr/share/man/man1/xmlcatalog.1
+#usr/share/man/man1/xmllint.1
+#usr/share/man/man3/libxml.3
index e4dc2cde3d048cf05845f04a0d0ed9d93e7b8e71..6d746bd10d3ec0e065fe6317b9782b9f93f6cfed 100644 (file)
 usr/lib/liblzo2.so
 usr/lib/liblzo2.so.2
 usr/lib/liblzo2.so.2.0.0
+#usr/share/doc/lzo
+#usr/share/doc/lzo/AUTHORS
+#usr/share/doc/lzo/COPYING
+#usr/share/doc/lzo/LZO.FAQ
+#usr/share/doc/lzo/LZO.TXT
+#usr/share/doc/lzo/LZOAPI.TXT
+#usr/share/doc/lzo/NEWS
+#usr/share/doc/lzo/THANKS
diff --git a/config/rootfiles/common/mbr b/config/rootfiles/common/mbr
deleted file mode 100644 (file)
index 231e27d..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-#usr/sbin/install-mbr
-#usr/share/man/man8/install-mbr.8
index 8fd9b0bfc1cd14d3900c1b168b2ff0ebe6bafab5..1ab4dec5f1aa5053d5a8a96d798f08cf7c95e870 100644 (file)
@@ -15,7 +15,8 @@ usr/local/bin/launch-ether-wake
 usr/local/bin/logwatch
 #usr/local/bin/mpfirectrl
 usr/local/bin/openvpnctrl
-usr/local/bin/outgoingfwctrl
+#usr/local/bin/outgoingfwctrl
+usr/local/bin/firewallctrl
 usr/local/bin/pakfire
 usr/local/bin/qosctrl
 usr/local/bin/rebuildhosts
@@ -23,9 +24,6 @@ usr/local/bin/rebuildroutes
 usr/local/bin/redctrl
 #usr/local/bin/sambactrl
 usr/local/bin/setaliases
-usr/local/bin/setdmzholes
-usr/local/bin/setportfw
-usr/local/bin/setxtaccess
 usr/local/bin/smartctrl
 usr/local/bin/snortctrl
 usr/local/bin/squidctrl
diff --git a/config/rootfiles/common/mysql b/config/rootfiles/common/mysql
deleted file mode 100644 (file)
index bbbff7d..0000000
+++ /dev/null
@@ -1,280 +0,0 @@
-#etc/my.cnf
-#srv/mysql
-#srv/mysql/mysql
-#srv/mysql/mysql-bin.000001
-#srv/mysql/mysql-bin.000002
-#srv/mysql/mysql-bin.index
-#srv/mysql/mysql/columns_priv.MYD
-#srv/mysql/mysql/columns_priv.MYI
-#srv/mysql/mysql/columns_priv.frm
-#srv/mysql/mysql/db.MYD
-#srv/mysql/mysql/db.MYI
-#srv/mysql/mysql/db.frm
-#srv/mysql/mysql/func.MYD
-#srv/mysql/mysql/func.MYI
-#srv/mysql/mysql/func.frm
-#srv/mysql/mysql/help_category.MYD
-#srv/mysql/mysql/help_category.MYI
-#srv/mysql/mysql/help_category.frm
-#srv/mysql/mysql/help_keyword.MYD
-#srv/mysql/mysql/help_keyword.MYI
-#srv/mysql/mysql/help_keyword.frm
-#srv/mysql/mysql/help_relation.MYD
-#srv/mysql/mysql/help_relation.MYI
-#srv/mysql/mysql/help_relation.frm
-#srv/mysql/mysql/help_topic.MYD
-#srv/mysql/mysql/help_topic.MYI
-#srv/mysql/mysql/help_topic.frm
-#srv/mysql/mysql/host.MYD
-#srv/mysql/mysql/host.MYI
-#srv/mysql/mysql/host.frm
-#srv/mysql/mysql/proc.MYD
-#srv/mysql/mysql/proc.MYI
-#srv/mysql/mysql/proc.frm
-#srv/mysql/mysql/procs_priv.MYD
-#srv/mysql/mysql/procs_priv.MYI
-#srv/mysql/mysql/procs_priv.frm
-#srv/mysql/mysql/tables_priv.MYD
-#srv/mysql/mysql/tables_priv.MYI
-#srv/mysql/mysql/tables_priv.frm
-#srv/mysql/mysql/time_zone.MYD
-#srv/mysql/mysql/time_zone.MYI
-#srv/mysql/mysql/time_zone.frm
-#srv/mysql/mysql/time_zone_leap_second.MYD
-#srv/mysql/mysql/time_zone_leap_second.MYI
-#srv/mysql/mysql/time_zone_leap_second.frm
-#srv/mysql/mysql/time_zone_name.MYD
-#srv/mysql/mysql/time_zone_name.MYI
-#srv/mysql/mysql/time_zone_name.frm
-#srv/mysql/mysql/time_zone_transition.MYD
-#srv/mysql/mysql/time_zone_transition.MYI
-#srv/mysql/mysql/time_zone_transition.frm
-#srv/mysql/mysql/time_zone_transition_type.MYD
-#srv/mysql/mysql/time_zone_transition_type.MYI
-#srv/mysql/mysql/time_zone_transition_type.frm
-#srv/mysql/mysql/user.MYD
-#srv/mysql/mysql/user.MYI
-#srv/mysql/mysql/user.frm
-#srv/mysql/test
-#usr/bin/comp_err
-#usr/bin/innochecksum
-#usr/bin/msql2mysql
-#usr/bin/my_print_defaults
-#usr/bin/myisam_ftdump
-#usr/bin/myisamchk
-#usr/bin/myisamlog
-#usr/bin/myisampack
-#usr/bin/mysql
-#usr/bin/mysql_client_test
-#usr/bin/mysql_config
-#usr/bin/mysql_convert_table_format
-#usr/bin/mysql_create_system_tables
-#usr/bin/mysql_explain_log
-#usr/bin/mysql_find_rows
-#usr/bin/mysql_fix_extensions
-#usr/bin/mysql_fix_privilege_tables
-#usr/bin/mysql_install_db
-#usr/bin/mysql_secure_installation
-#usr/bin/mysql_setpermission
-#usr/bin/mysql_tableinfo
-#usr/bin/mysql_tzinfo_to_sql
-#usr/bin/mysql_upgrade
-#usr/bin/mysql_upgrade_shell
-#usr/bin/mysql_waitpid
-#usr/bin/mysql_zap
-#usr/bin/mysqlaccess
-#usr/bin/mysqladmin
-#usr/bin/mysqlbinlog
-#usr/bin/mysqlbug
-#usr/bin/mysqlcheck
-#usr/bin/mysqld_multi
-#usr/bin/mysqld_safe
-#usr/bin/mysqldump
-#usr/bin/mysqldumpslow
-#usr/bin/mysqlhotcopy
-#usr/bin/mysqlimport
-#usr/bin/mysqlshow
-#usr/bin/mysqltest
-#usr/bin/mysqltestmanager
-#usr/bin/mysqltestmanager-pwgen
-#usr/bin/mysqltestmanagerc
-#usr/bin/perror
-#usr/bin/replace
-#usr/bin/resolve_stack_dump
-#usr/bin/resolveip
-#usr/include/mysql
-#usr/include/mysql/errmsg.h
-#usr/include/mysql/keycache.h
-#usr/include/mysql/m_ctype.h
-#usr/include/mysql/m_string.h
-#usr/include/mysql/my_alloc.h
-#usr/include/mysql/my_config.h
-#usr/include/mysql/my_dbug.h
-#usr/include/mysql/my_dir.h
-#usr/include/mysql/my_getopt.h
-#usr/include/mysql/my_global.h
-#usr/include/mysql/my_list.h
-#usr/include/mysql/my_net.h
-#usr/include/mysql/my_no_pthread.h
-#usr/include/mysql/my_pthread.h
-#usr/include/mysql/my_semaphore.h
-#usr/include/mysql/my_sys.h
-#usr/include/mysql/my_xml.h
-#usr/include/mysql/mysql.h
-#usr/include/mysql/mysql_com.h
-#usr/include/mysql/mysql_embed.h
-#usr/include/mysql/mysql_time.h
-#usr/include/mysql/mysql_version.h
-#usr/include/mysql/mysqld_ername.h
-#usr/include/mysql/mysqld_error.h
-#usr/include/mysql/raid.h
-#usr/include/mysql/sql_common.h
-#usr/include/mysql/sql_state.h
-#usr/include/mysql/sslopt-case.h
-#usr/include/mysql/sslopt-longopts.h
-#usr/include/mysql/sslopt-vars.h
-#usr/include/mysql/typelib.h
-#usr/info/mysql.info
-usr/lib/libmysqlclient.so
-usr/lib/libmysqlclient.so.15
-usr/lib/libmysqlclient.so.15.0.0
-usr/lib/libmysqlclient_r.so
-usr/lib/libmysqlclient_r.so.15
-usr/lib/libmysqlclient_r.so.15.0.0
-#usr/lib/mysql
-#usr/lib/mysql/libdbug.a
-#usr/lib/mysql/libheap.a
-#usr/lib/mysql/libmyisam.a
-#usr/lib/mysql/libmyisammrg.a
-#usr/lib/mysql/libmysqlclient.a
-#usr/lib/mysql/libmysqlclient.la
-usr/lib/mysql/libmysqlclient.so
-usr/lib/mysql/libmysqlclient.so.15
-usr/lib/mysql/libmysqlclient.so.15.0.0
-#usr/lib/mysql/libmysqlclient_r.a
-#usr/lib/mysql/libmysqlclient_r.la
-usr/lib/mysql/libmysqlclient_r.so
-usr/lib/mysql/libmysqlclient_r.so.15
-usr/lib/mysql/libmysqlclient_r.so.15.0.0
-#usr/lib/mysql/libmystrings.a
-#usr/lib/mysql/libmysys.a
-#usr/lib/mysql/libvio.a
-#usr/man/man1/msql2mysql.1
-#usr/man/man1/myisam_ftdump.1
-#usr/man/man1/myisamchk.1
-#usr/man/man1/myisamlog.1
-#usr/man/man1/myisampack.1
-#usr/man/man1/mysql.1
-#usr/man/man1/mysql.server.1
-#usr/man/man1/mysql_config.1
-#usr/man/man1/mysql_explain_log.1
-#usr/man/man1/mysql_fix_privilege_tables.1
-#usr/man/man1/mysql_upgrade.1
-#usr/man/man1/mysql_zap.1
-#usr/man/man1/mysqlaccess.1
-#usr/man/man1/mysqladmin.1
-#usr/man/man1/mysqlbinlog.1
-#usr/man/man1/mysqlcheck.1
-#usr/man/man1/mysqld.1
-#usr/man/man1/mysqld_multi.1
-#usr/man/man1/mysqld_safe.1
-#usr/man/man1/mysqldump.1
-#usr/man/man1/mysqlhotcopy.1
-#usr/man/man1/mysqlimport.1
-#usr/man/man1/mysqlman.1
-#usr/man/man1/mysqlmanager.1
-#usr/man/man1/mysqlshow.1
-#usr/man/man1/perror.1
-#usr/man/man1/replace.1
-#usr/man/man1/safe_mysqld.1
-#usr/sbin/mysqld
-#usr/sbin/mysqlmanager
-#usr/share/mysql
-#usr/share/mysql/binary-configure
-#usr/share/mysql/charsets
-#usr/share/mysql/charsets/Index.xml
-#usr/share/mysql/charsets/README
-#usr/share/mysql/charsets/armscii8.xml
-#usr/share/mysql/charsets/ascii.xml
-#usr/share/mysql/charsets/cp1250.xml
-#usr/share/mysql/charsets/cp1251.xml
-#usr/share/mysql/charsets/cp1256.xml
-#usr/share/mysql/charsets/cp1257.xml
-#usr/share/mysql/charsets/cp850.xml
-#usr/share/mysql/charsets/cp852.xml
-#usr/share/mysql/charsets/cp866.xml
-#usr/share/mysql/charsets/dec8.xml
-#usr/share/mysql/charsets/geostd8.xml
-#usr/share/mysql/charsets/greek.xml
-#usr/share/mysql/charsets/hebrew.xml
-#usr/share/mysql/charsets/hp8.xml
-#usr/share/mysql/charsets/keybcs2.xml
-#usr/share/mysql/charsets/koi8r.xml
-#usr/share/mysql/charsets/koi8u.xml
-#usr/share/mysql/charsets/latin1.xml
-#usr/share/mysql/charsets/latin2.xml
-#usr/share/mysql/charsets/latin5.xml
-#usr/share/mysql/charsets/latin7.xml
-#usr/share/mysql/charsets/macce.xml
-#usr/share/mysql/charsets/macroman.xml
-#usr/share/mysql/charsets/swe7.xml
-#usr/share/mysql/czech
-#usr/share/mysql/czech/errmsg.sys
-#usr/share/mysql/danish
-#usr/share/mysql/danish/errmsg.sys
-#usr/share/mysql/dutch
-#usr/share/mysql/dutch/errmsg.sys
-#usr/share/mysql/english
-usr/share/mysql/english/errmsg.sys
-usr/share/mysql/errmsg.txt
-#usr/share/mysql/estonian
-#usr/share/mysql/estonian/errmsg.sys
-#usr/share/mysql/fill_help_tables.sql
-#usr/share/mysql/french
-#usr/share/mysql/french/errmsg.sys
-#usr/share/mysql/german
-usr/share/mysql/german/errmsg.sys
-#usr/share/mysql/greek
-#usr/share/mysql/greek/errmsg.sys
-#usr/share/mysql/hungarian
-#usr/share/mysql/hungarian/errmsg.sys
-#usr/share/mysql/italian
-#usr/share/mysql/italian/errmsg.sys
-#usr/share/mysql/japanese
-#usr/share/mysql/japanese/errmsg.sys
-#usr/share/mysql/korean
-#usr/share/mysql/korean/errmsg.sys
-#usr/share/mysql/mi_test_all
-#usr/share/mysql/mi_test_all.res
-#usr/share/mysql/my-huge.cnf
-#usr/share/mysql/my-innodb-heavy-4G.cnf
-#usr/share/mysql/my-large.cnf
-#usr/share/mysql/my-medium.cnf
-#usr/share/mysql/my-small.cnf
-#usr/share/mysql/mysql-log-rotate
-#usr/share/mysql/mysql.server
-#usr/share/mysql/mysql_fix_privilege_tables.sql
-#usr/share/mysql/ndb-config-2-node.ini
-#usr/share/mysql/norwegian
-#usr/share/mysql/norwegian-ny
-#usr/share/mysql/norwegian-ny/errmsg.sys
-#usr/share/mysql/norwegian/errmsg.sys
-#usr/share/mysql/polish
-#usr/share/mysql/polish/errmsg.sys
-#usr/share/mysql/portuguese
-#usr/share/mysql/portuguese/errmsg.sys
-#usr/share/mysql/romanian
-#usr/share/mysql/romanian/errmsg.sys
-#usr/share/mysql/russian
-#usr/share/mysql/russian/errmsg.sys
-#usr/share/mysql/serbian
-#usr/share/mysql/serbian/errmsg.sys
-#usr/share/mysql/slovak
-#usr/share/mysql/slovak/errmsg.sys
-#usr/share/mysql/spanish
-#usr/share/mysql/spanish/errmsg.sys
-#usr/share/mysql/swedish
-#usr/share/mysql/swedish/errmsg.sys
-#usr/share/mysql/ukrainian
-#usr/share/mysql/ukrainian/errmsg.sys
-#var/run/mysql
diff --git a/config/rootfiles/common/mysql-libs b/config/rootfiles/common/mysql-libs
new file mode 100644 (file)
index 0000000..6eb0384
--- /dev/null
@@ -0,0 +1,10 @@
+usr/lib/libmysqlclient.so.15
+usr/lib/libmysqlclient.so.15.0.0
+usr/lib/libmysqlclient_r.so.15
+usr/lib/libmysqlclient_r.so.15.0.0
+usr/lib/mysql/libmysqlclient.so
+usr/lib/mysql/libmysqlclient.so.15
+usr/lib/mysql/libmysqlclient.so.15.0.0
+usr/lib/mysql/libmysqlclient_r.so
+usr/lib/mysql/libmysqlclient_r.so.15
+usr/lib/mysql/libmysqlclient_r.so.15.0.0
index f46a7b0df15e0e411ca1b775a9273c4386eae0d2..ab439c5bd43b4e5b09f4f961cd59409e3dd8dc25 100644 (file)
@@ -1,7 +1,4 @@
-#opt/pakfire
 opt/pakfire/cache
-#opt/pakfire/db
-opt/pakfire/db/core
 opt/pakfire/db/installed
 opt/pakfire/db/lists
 opt/pakfire/db/meta
diff --git a/config/rootfiles/common/paxctl b/config/rootfiles/common/paxctl
new file mode 100644 (file)
index 0000000..4faecba
--- /dev/null
@@ -0,0 +1,2 @@
+#sbin/paxctl
+#usr/share/man/man1/paxctl.1
index 1e91b37438ca79f0a708841013680160ae77957f..04ef3f2cb51636767a47c69f00102b8873d74ac5 100644 (file)
@@ -41,6 +41,7 @@ etc/resolv.conf
 etc/securetty
 etc/sysctl.conf
 etc/syslog.conf
+etc/system-release
 #home
 home/nobody
 #lib
@@ -50,6 +51,10 @@ media/floppy
 media/usbkey
 mnt
 #opt
+#opt/pakfire
+#opt/pakfire/db
+#opt/pakfire/db/core
+opt/pakfire/db/core/mine
 #root
 root/.bash_logout
 root/.bash_profile
index 6f5ee80d51a0442be3d78d48da34a47a2d5a7dce..215f68929c85873ad5004fe1f1d6d1ab3445931e 100644 (file)
@@ -1,13 +1,13 @@
 etc/vimrc
-#usr/bin/ex
-#usr/bin/rview
-#usr/bin/rvim
+usr/bin/ex
+usr/bin/rview
+usr/bin/rvim
 usr/bin/vi
-#usr/bin/view
+usr/bin/view
 usr/bin/vim
-#usr/bin/vimdiff
-#usr/bin/vimtutor
-#usr/bin/xxd
+usr/bin/vimdiff
+usr/bin/vimtutor
+usr/bin/xxd
 #usr/share/man/man1/evim.1
 #usr/share/man/man1/ex.1
 #usr/share/man/man1/rview.1
@@ -18,1203 +18,1311 @@ usr/bin/vim
 #usr/share/man/man1/vimtutor.1
 #usr/share/man/man1/xxd.1
 usr/share/vim
-#usr/share/vim/vim72
-#usr/share/vim/vim72/autoload
-#usr/share/vim/vim72/autoload/README.txt
-#usr/share/vim/vim72/autoload/ada.vim
-#usr/share/vim/vim72/autoload/adacomplete.vim
-#usr/share/vim/vim72/autoload/ccomplete.vim
-#usr/share/vim/vim72/autoload/csscomplete.vim
-#usr/share/vim/vim72/autoload/decada.vim
-#usr/share/vim/vim72/autoload/getscript.vim
-#usr/share/vim/vim72/autoload/gnat.vim
-#usr/share/vim/vim72/autoload/gzip.vim
-#usr/share/vim/vim72/autoload/htmlcomplete.vim
-#usr/share/vim/vim72/autoload/javascriptcomplete.vim
-#usr/share/vim/vim72/autoload/netrw.vim
-#usr/share/vim/vim72/autoload/netrwFileHandlers.vim
-#usr/share/vim/vim72/autoload/netrwSettings.vim
-#usr/share/vim/vim72/autoload/paste.vim
-#usr/share/vim/vim72/autoload/phpcomplete.vim
-#usr/share/vim/vim72/autoload/pythoncomplete.vim
-#usr/share/vim/vim72/autoload/rubycomplete.vim
-#usr/share/vim/vim72/autoload/spellfile.vim
-#usr/share/vim/vim72/autoload/sqlcomplete.vim
-#usr/share/vim/vim72/autoload/syntaxcomplete.vim
-#usr/share/vim/vim72/autoload/tar.vim
-#usr/share/vim/vim72/autoload/vimball.vim
-#usr/share/vim/vim72/autoload/xml
-#usr/share/vim/vim72/autoload/xml/html32.vim
-#usr/share/vim/vim72/autoload/xml/html401f.vim
-#usr/share/vim/vim72/autoload/xml/html401s.vim
-#usr/share/vim/vim72/autoload/xml/html401t.vim
-#usr/share/vim/vim72/autoload/xml/html40f.vim
-#usr/share/vim/vim72/autoload/xml/html40s.vim
-#usr/share/vim/vim72/autoload/xml/html40t.vim
-#usr/share/vim/vim72/autoload/xml/xhtml10f.vim
-#usr/share/vim/vim72/autoload/xml/xhtml10s.vim
-#usr/share/vim/vim72/autoload/xml/xhtml10t.vim
-#usr/share/vim/vim72/autoload/xml/xhtml11.vim
-#usr/share/vim/vim72/autoload/xml/xsd.vim
-#usr/share/vim/vim72/autoload/xml/xsl.vim
-#usr/share/vim/vim72/autoload/xmlcomplete.vim
-#usr/share/vim/vim72/autoload/zip.vim
-#usr/share/vim/vim72/bugreport.vim
-#usr/share/vim/vim72/colors
-#usr/share/vim/vim72/colors/README.txt
-#usr/share/vim/vim72/colors/blue.vim
-#usr/share/vim/vim72/colors/darkblue.vim
-#usr/share/vim/vim72/colors/default.vim
-#usr/share/vim/vim72/colors/delek.vim
-#usr/share/vim/vim72/colors/desert.vim
-#usr/share/vim/vim72/colors/elflord.vim
-#usr/share/vim/vim72/colors/evening.vim
-#usr/share/vim/vim72/colors/koehler.vim
-#usr/share/vim/vim72/colors/morning.vim
-#usr/share/vim/vim72/colors/murphy.vim
-#usr/share/vim/vim72/colors/pablo.vim
-#usr/share/vim/vim72/colors/peachpuff.vim
-#usr/share/vim/vim72/colors/ron.vim
-#usr/share/vim/vim72/colors/shine.vim
-#usr/share/vim/vim72/colors/slate.vim
-#usr/share/vim/vim72/colors/torte.vim
-#usr/share/vim/vim72/colors/zellner.vim
-#usr/share/vim/vim72/compiler
-#usr/share/vim/vim72/compiler/README.txt
-#usr/share/vim/vim72/compiler/ant.vim
-#usr/share/vim/vim72/compiler/bcc.vim
-#usr/share/vim/vim72/compiler/bdf.vim
-#usr/share/vim/vim72/compiler/checkstyle.vim
-#usr/share/vim/vim72/compiler/cs.vim
-#usr/share/vim/vim72/compiler/decada.vim
-#usr/share/vim/vim72/compiler/dot.vim
-#usr/share/vim/vim72/compiler/eruby.vim
-#usr/share/vim/vim72/compiler/fortran_F.vim
-#usr/share/vim/vim72/compiler/fortran_cv.vim
-#usr/share/vim/vim72/compiler/fortran_elf90.vim
-#usr/share/vim/vim72/compiler/fortran_g77.vim
-#usr/share/vim/vim72/compiler/fortran_lf95.vim
-#usr/share/vim/vim72/compiler/fpc.vim
-#usr/share/vim/vim72/compiler/gcc.vim
-#usr/share/vim/vim72/compiler/gnat.vim
-#usr/share/vim/vim72/compiler/hp_acc.vim
-#usr/share/vim/vim72/compiler/icc.vim
-#usr/share/vim/vim72/compiler/intel.vim
-#usr/share/vim/vim72/compiler/irix5_c.vim
-#usr/share/vim/vim72/compiler/irix5_cpp.vim
-#usr/share/vim/vim72/compiler/javac.vim
-#usr/share/vim/vim72/compiler/jikes.vim
-#usr/share/vim/vim72/compiler/mcs.vim
-#usr/share/vim/vim72/compiler/mips_c.vim
-#usr/share/vim/vim72/compiler/mipspro_c89.vim
-#usr/share/vim/vim72/compiler/mipspro_cpp.vim
-#usr/share/vim/vim72/compiler/modelsim_vcom.vim
-#usr/share/vim/vim72/compiler/msvc.vim
-#usr/share/vim/vim72/compiler/neato.vim
-#usr/share/vim/vim72/compiler/onsgmls.vim
-#usr/share/vim/vim72/compiler/pbx.vim
-#usr/share/vim/vim72/compiler/perl.vim
-#usr/share/vim/vim72/compiler/php.vim
-#usr/share/vim/vim72/compiler/pyunit.vim
-#usr/share/vim/vim72/compiler/rspec.vim
-#usr/share/vim/vim72/compiler/rst.vim
-#usr/share/vim/vim72/compiler/ruby.vim
-#usr/share/vim/vim72/compiler/rubyunit.vim
-#usr/share/vim/vim72/compiler/se.vim
-#usr/share/vim/vim72/compiler/splint.vim
-#usr/share/vim/vim72/compiler/tcl.vim
-#usr/share/vim/vim72/compiler/tex.vim
-#usr/share/vim/vim72/compiler/tidy.vim
-#usr/share/vim/vim72/compiler/xmllint.vim
-#usr/share/vim/vim72/compiler/xmlwf.vim
-#usr/share/vim/vim72/delmenu.vim
-#usr/share/vim/vim72/doc
-#usr/share/vim/vim72/doc/arabic.txt
-#usr/share/vim/vim72/doc/autocmd.txt
-#usr/share/vim/vim72/doc/change.txt
-#usr/share/vim/vim72/doc/cmdline.txt
-#usr/share/vim/vim72/doc/debug.txt
-#usr/share/vim/vim72/doc/debugger.txt
-#usr/share/vim/vim72/doc/develop.txt
-#usr/share/vim/vim72/doc/diff.txt
-#usr/share/vim/vim72/doc/digraph.txt
-#usr/share/vim/vim72/doc/editing.txt
-#usr/share/vim/vim72/doc/eval.txt
-#usr/share/vim/vim72/doc/farsi.txt
-#usr/share/vim/vim72/doc/filetype.txt
-#usr/share/vim/vim72/doc/fold.txt
-#usr/share/vim/vim72/doc/ft_ada.txt
-#usr/share/vim/vim72/doc/ft_sql.txt
-#usr/share/vim/vim72/doc/gui.txt
-#usr/share/vim/vim72/doc/gui_w16.txt
-#usr/share/vim/vim72/doc/gui_w32.txt
-#usr/share/vim/vim72/doc/gui_x11.txt
-#usr/share/vim/vim72/doc/hangulin.txt
-#usr/share/vim/vim72/doc/hebrew.txt
-#usr/share/vim/vim72/doc/help.txt
-#usr/share/vim/vim72/doc/howto.txt
-#usr/share/vim/vim72/doc/if_cscop.txt
-#usr/share/vim/vim72/doc/if_mzsch.txt
-#usr/share/vim/vim72/doc/if_ole.txt
-#usr/share/vim/vim72/doc/if_perl.txt
-#usr/share/vim/vim72/doc/if_pyth.txt
-#usr/share/vim/vim72/doc/if_ruby.txt
-#usr/share/vim/vim72/doc/if_sniff.txt
-#usr/share/vim/vim72/doc/if_tcl.txt
-#usr/share/vim/vim72/doc/indent.txt
-#usr/share/vim/vim72/doc/index.txt
-#usr/share/vim/vim72/doc/insert.txt
-#usr/share/vim/vim72/doc/intro.txt
-#usr/share/vim/vim72/doc/map.txt
-#usr/share/vim/vim72/doc/mbyte.txt
-#usr/share/vim/vim72/doc/message.txt
-#usr/share/vim/vim72/doc/mlang.txt
-#usr/share/vim/vim72/doc/motion.txt
-#usr/share/vim/vim72/doc/netbeans.txt
-#usr/share/vim/vim72/doc/options.txt
-#usr/share/vim/vim72/doc/os_390.txt
-#usr/share/vim/vim72/doc/os_amiga.txt
-#usr/share/vim/vim72/doc/os_beos.txt
-#usr/share/vim/vim72/doc/os_dos.txt
-#usr/share/vim/vim72/doc/os_mac.txt
-#usr/share/vim/vim72/doc/os_mint.txt
-#usr/share/vim/vim72/doc/os_msdos.txt
-#usr/share/vim/vim72/doc/os_os2.txt
-#usr/share/vim/vim72/doc/os_qnx.txt
-#usr/share/vim/vim72/doc/os_risc.txt
-#usr/share/vim/vim72/doc/os_unix.txt
-#usr/share/vim/vim72/doc/os_vms.txt
-#usr/share/vim/vim72/doc/os_win32.txt
-#usr/share/vim/vim72/doc/pattern.txt
-#usr/share/vim/vim72/doc/pi_getscript.txt
-#usr/share/vim/vim72/doc/pi_gzip.txt
-#usr/share/vim/vim72/doc/pi_netrw.txt
-#usr/share/vim/vim72/doc/pi_paren.txt
-#usr/share/vim/vim72/doc/pi_spec.txt
-#usr/share/vim/vim72/doc/pi_tar.txt
-#usr/share/vim/vim72/doc/pi_vimball.txt
-#usr/share/vim/vim72/doc/pi_zip.txt
-#usr/share/vim/vim72/doc/print.txt
-#usr/share/vim/vim72/doc/quickfix.txt
-#usr/share/vim/vim72/doc/quickref.txt
-#usr/share/vim/vim72/doc/quotes.txt
-#usr/share/vim/vim72/doc/recover.txt
-#usr/share/vim/vim72/doc/remote.txt
-#usr/share/vim/vim72/doc/repeat.txt
-#usr/share/vim/vim72/doc/rileft.txt
-#usr/share/vim/vim72/doc/russian.txt
-#usr/share/vim/vim72/doc/scroll.txt
-#usr/share/vim/vim72/doc/sign.txt
-#usr/share/vim/vim72/doc/spell.txt
-#usr/share/vim/vim72/doc/sponsor.txt
-#usr/share/vim/vim72/doc/starting.txt
-#usr/share/vim/vim72/doc/syntax.txt
-#usr/share/vim/vim72/doc/tabpage.txt
-#usr/share/vim/vim72/doc/tags
-#usr/share/vim/vim72/doc/tagsrch.txt
-#usr/share/vim/vim72/doc/term.txt
-#usr/share/vim/vim72/doc/tips.txt
-#usr/share/vim/vim72/doc/todo.txt
-#usr/share/vim/vim72/doc/uganda.txt
-#usr/share/vim/vim72/doc/undo.txt
-#usr/share/vim/vim72/doc/usr_01.txt
-#usr/share/vim/vim72/doc/usr_02.txt
-#usr/share/vim/vim72/doc/usr_03.txt
-#usr/share/vim/vim72/doc/usr_04.txt
-#usr/share/vim/vim72/doc/usr_05.txt
-#usr/share/vim/vim72/doc/usr_06.txt
-#usr/share/vim/vim72/doc/usr_07.txt
-#usr/share/vim/vim72/doc/usr_08.txt
-#usr/share/vim/vim72/doc/usr_09.txt
-#usr/share/vim/vim72/doc/usr_10.txt
-#usr/share/vim/vim72/doc/usr_11.txt
-#usr/share/vim/vim72/doc/usr_12.txt
-#usr/share/vim/vim72/doc/usr_20.txt
-#usr/share/vim/vim72/doc/usr_21.txt
-#usr/share/vim/vim72/doc/usr_22.txt
-#usr/share/vim/vim72/doc/usr_23.txt
-#usr/share/vim/vim72/doc/usr_24.txt
-#usr/share/vim/vim72/doc/usr_25.txt
-#usr/share/vim/vim72/doc/usr_26.txt
-#usr/share/vim/vim72/doc/usr_27.txt
-#usr/share/vim/vim72/doc/usr_28.txt
-#usr/share/vim/vim72/doc/usr_29.txt
-#usr/share/vim/vim72/doc/usr_30.txt
-#usr/share/vim/vim72/doc/usr_31.txt
-#usr/share/vim/vim72/doc/usr_32.txt
-#usr/share/vim/vim72/doc/usr_40.txt
-#usr/share/vim/vim72/doc/usr_41.txt
-#usr/share/vim/vim72/doc/usr_42.txt
-#usr/share/vim/vim72/doc/usr_43.txt
-#usr/share/vim/vim72/doc/usr_44.txt
-#usr/share/vim/vim72/doc/usr_45.txt
-#usr/share/vim/vim72/doc/usr_90.txt
-#usr/share/vim/vim72/doc/usr_toc.txt
-#usr/share/vim/vim72/doc/various.txt
-#usr/share/vim/vim72/doc/version4.txt
-#usr/share/vim/vim72/doc/version5.txt
-#usr/share/vim/vim72/doc/version6.txt
-#usr/share/vim/vim72/doc/version7.txt
-#usr/share/vim/vim72/doc/vi_diff.txt
-#usr/share/vim/vim72/doc/vim2html.pl
-#usr/share/vim/vim72/doc/visual.txt
-#usr/share/vim/vim72/doc/windows.txt
-#usr/share/vim/vim72/doc/workshop.txt
-#usr/share/vim/vim72/evim.vim
-#usr/share/vim/vim72/filetype.vim
-#usr/share/vim/vim72/ftoff.vim
-#usr/share/vim/vim72/ftplugin
-#usr/share/vim/vim72/ftplugin.vim
-#usr/share/vim/vim72/ftplugin/AppendMatchGroup.vim
-#usr/share/vim/vim72/ftplugin/README.txt
-#usr/share/vim/vim72/ftplugin/a2ps.vim
-#usr/share/vim/vim72/ftplugin/aap.vim
-#usr/share/vim/vim72/ftplugin/abaqus.vim
-#usr/share/vim/vim72/ftplugin/ada.vim
-#usr/share/vim/vim72/ftplugin/alsaconf.vim
-#usr/share/vim/vim72/ftplugin/ant.vim
-#usr/share/vim/vim72/ftplugin/arch.vim
-#usr/share/vim/vim72/ftplugin/art.vim
-#usr/share/vim/vim72/ftplugin/aspvbs.vim
-#usr/share/vim/vim72/ftplugin/automake.vim
-#usr/share/vim/vim72/ftplugin/bdf.vim
-#usr/share/vim/vim72/ftplugin/bst.vim
-#usr/share/vim/vim72/ftplugin/btm.vim
-#usr/share/vim/vim72/ftplugin/c.vim
-#usr/share/vim/vim72/ftplugin/calendar.vim
-#usr/share/vim/vim72/ftplugin/cdrdaoconf.vim
-#usr/share/vim/vim72/ftplugin/ch.vim
-#usr/share/vim/vim72/ftplugin/changelog.vim
-#usr/share/vim/vim72/ftplugin/cobol.vim
-#usr/share/vim/vim72/ftplugin/conf.vim
-#usr/share/vim/vim72/ftplugin/config.vim
-#usr/share/vim/vim72/ftplugin/context.vim
-#usr/share/vim/vim72/ftplugin/cpp.vim
-#usr/share/vim/vim72/ftplugin/crm.vim
-#usr/share/vim/vim72/ftplugin/cs.vim
-#usr/share/vim/vim72/ftplugin/csc.vim
-#usr/share/vim/vim72/ftplugin/csh.vim
-#usr/share/vim/vim72/ftplugin/css.vim
-#usr/share/vim/vim72/ftplugin/cvsrc.vim
-#usr/share/vim/vim72/ftplugin/debchangelog.vim
-#usr/share/vim/vim72/ftplugin/debcontrol.vim
-#usr/share/vim/vim72/ftplugin/denyhosts.vim
-#usr/share/vim/vim72/ftplugin/dictconf.vim
-#usr/share/vim/vim72/ftplugin/dictdconf.vim
-#usr/share/vim/vim72/ftplugin/diff.vim
-#usr/share/vim/vim72/ftplugin/dircolors.vim
-#usr/share/vim/vim72/ftplugin/dosbatch.vim
-#usr/share/vim/vim72/ftplugin/dosini.vim
-#usr/share/vim/vim72/ftplugin/dtd.vim
-#usr/share/vim/vim72/ftplugin/dtrace.vim
-#usr/share/vim/vim72/ftplugin/elinks.vim
-#usr/share/vim/vim72/ftplugin/eruby.vim
-#usr/share/vim/vim72/ftplugin/eterm.vim
-#usr/share/vim/vim72/ftplugin/fetchmail.vim
-#usr/share/vim/vim72/ftplugin/flexwiki.vim
-#usr/share/vim/vim72/ftplugin/fortran.vim
-#usr/share/vim/vim72/ftplugin/framescript.vim
-#usr/share/vim/vim72/ftplugin/fvwm.vim
-#usr/share/vim/vim72/ftplugin/git.vim
-#usr/share/vim/vim72/ftplugin/gitcommit.vim
-#usr/share/vim/vim72/ftplugin/gitconfig.vim
-#usr/share/vim/vim72/ftplugin/gitrebase.vim
-#usr/share/vim/vim72/ftplugin/gitsendemail.vim
-#usr/share/vim/vim72/ftplugin/gpg.vim
-#usr/share/vim/vim72/ftplugin/group.vim
-#usr/share/vim/vim72/ftplugin/grub.vim
-#usr/share/vim/vim72/ftplugin/haml.vim
-#usr/share/vim/vim72/ftplugin/hamster.vim
-#usr/share/vim/vim72/ftplugin/haskell.vim
-#usr/share/vim/vim72/ftplugin/help.vim
-#usr/share/vim/vim72/ftplugin/hostconf.vim
-#usr/share/vim/vim72/ftplugin/hostsaccess.vim
-#usr/share/vim/vim72/ftplugin/html.vim
-#usr/share/vim/vim72/ftplugin/htmldjango.vim
-#usr/share/vim/vim72/ftplugin/indent.vim
-#usr/share/vim/vim72/ftplugin/initex.vim
-#usr/share/vim/vim72/ftplugin/ishd.vim
-#usr/share/vim/vim72/ftplugin/java.vim
-#usr/share/vim/vim72/ftplugin/javascript.vim
-#usr/share/vim/vim72/ftplugin/jsp.vim
-#usr/share/vim/vim72/ftplugin/kconfig.vim
-#usr/share/vim/vim72/ftplugin/kwt.vim
-#usr/share/vim/vim72/ftplugin/ld.vim
-#usr/share/vim/vim72/ftplugin/lftp.vim
-#usr/share/vim/vim72/ftplugin/libao.vim
-#usr/share/vim/vim72/ftplugin/limits.vim
-#usr/share/vim/vim72/ftplugin/lisp.vim
-#usr/share/vim/vim72/ftplugin/loginaccess.vim
-#usr/share/vim/vim72/ftplugin/logindefs.vim
-#usr/share/vim/vim72/ftplugin/logtalk.vim
-#usr/share/vim/vim72/ftplugin/lprolog.vim
-#usr/share/vim/vim72/ftplugin/lua.vim
-#usr/share/vim/vim72/ftplugin/m4.vim
-#usr/share/vim/vim72/ftplugin/mail.vim
-#usr/share/vim/vim72/ftplugin/mailaliases.vim
-#usr/share/vim/vim72/ftplugin/mailcap.vim
-#usr/share/vim/vim72/ftplugin/make.vim
-#usr/share/vim/vim72/ftplugin/man.vim
-#usr/share/vim/vim72/ftplugin/manconf.vim
-#usr/share/vim/vim72/ftplugin/matlab.vim
-#usr/share/vim/vim72/ftplugin/mf.vim
-#usr/share/vim/vim72/ftplugin/modconf.vim
-#usr/share/vim/vim72/ftplugin/mp.vim
-#usr/share/vim/vim72/ftplugin/mplayerconf.vim
-#usr/share/vim/vim72/ftplugin/mrxvtrc.vim
-#usr/share/vim/vim72/ftplugin/msmessages.vim
-#usr/share/vim/vim72/ftplugin/mupad.vim
-#usr/share/vim/vim72/ftplugin/muttrc.vim
-#usr/share/vim/vim72/ftplugin/nanorc.vim
-#usr/share/vim/vim72/ftplugin/netrc.vim
-#usr/share/vim/vim72/ftplugin/nsis.vim
-#usr/share/vim/vim72/ftplugin/objc.vim
-#usr/share/vim/vim72/ftplugin/ocaml.vim
-#usr/share/vim/vim72/ftplugin/occam.vim
-#usr/share/vim/vim72/ftplugin/pamconf.vim
-#usr/share/vim/vim72/ftplugin/pascal.vim
-#usr/share/vim/vim72/ftplugin/passwd.vim
-#usr/share/vim/vim72/ftplugin/pdf.vim
-#usr/share/vim/vim72/ftplugin/perl.vim
-#usr/share/vim/vim72/ftplugin/php.vim
-#usr/share/vim/vim72/ftplugin/pinfo.vim
-#usr/share/vim/vim72/ftplugin/plaintex.vim
-#usr/share/vim/vim72/ftplugin/postscr.vim
-#usr/share/vim/vim72/ftplugin/procmail.vim
-#usr/share/vim/vim72/ftplugin/prolog.vim
-#usr/share/vim/vim72/ftplugin/protocols.vim
-#usr/share/vim/vim72/ftplugin/pyrex.vim
-#usr/share/vim/vim72/ftplugin/python.vim
-#usr/share/vim/vim72/ftplugin/quake.vim
-#usr/share/vim/vim72/ftplugin/racc.vim
-#usr/share/vim/vim72/ftplugin/readline.vim
-#usr/share/vim/vim72/ftplugin/reva.vim
-#usr/share/vim/vim72/ftplugin/rnc.vim
-#usr/share/vim/vim72/ftplugin/rpl.vim
-#usr/share/vim/vim72/ftplugin/rst.vim
-#usr/share/vim/vim72/ftplugin/ruby.vim
-#usr/share/vim/vim72/ftplugin/sass.vim
-#usr/share/vim/vim72/ftplugin/scheme.vim
-#usr/share/vim/vim72/ftplugin/screen.vim
-#usr/share/vim/vim72/ftplugin/sensors.vim
-#usr/share/vim/vim72/ftplugin/services.vim
-#usr/share/vim/vim72/ftplugin/setserial.vim
-#usr/share/vim/vim72/ftplugin/sgml.vim
-#usr/share/vim/vim72/ftplugin/sh.vim
-#usr/share/vim/vim72/ftplugin/sieve.vim
-#usr/share/vim/vim72/ftplugin/slpconf.vim
-#usr/share/vim/vim72/ftplugin/slpreg.vim
-#usr/share/vim/vim72/ftplugin/slpspi.vim
-#usr/share/vim/vim72/ftplugin/spec.vim
-#usr/share/vim/vim72/ftplugin/sql.vim
-#usr/share/vim/vim72/ftplugin/sshconfig.vim
-#usr/share/vim/vim72/ftplugin/sudoers.vim
-#usr/share/vim/vim72/ftplugin/svg.vim
-#usr/share/vim/vim72/ftplugin/sysctl.vim
-#usr/share/vim/vim72/ftplugin/tcsh.vim
-#usr/share/vim/vim72/ftplugin/terminfo.vim
-#usr/share/vim/vim72/ftplugin/tex.vim
-#usr/share/vim/vim72/ftplugin/udevconf.vim
-#usr/share/vim/vim72/ftplugin/udevperm.vim
-#usr/share/vim/vim72/ftplugin/udevrules.vim
-#usr/share/vim/vim72/ftplugin/updatedb.vim
-#usr/share/vim/vim72/ftplugin/vb.vim
-#usr/share/vim/vim72/ftplugin/verilog.vim
-#usr/share/vim/vim72/ftplugin/vhdl.vim
-#usr/share/vim/vim72/ftplugin/vim.vim
-#usr/share/vim/vim72/ftplugin/xdefaults.vim
-#usr/share/vim/vim72/ftplugin/xf86conf.vim
-#usr/share/vim/vim72/ftplugin/xhtml.vim
-#usr/share/vim/vim72/ftplugin/xinetd.vim
-#usr/share/vim/vim72/ftplugin/xml.vim
-#usr/share/vim/vim72/ftplugin/xmodmap.vim
-#usr/share/vim/vim72/ftplugin/xs.vim
-#usr/share/vim/vim72/ftplugin/xsd.vim
-#usr/share/vim/vim72/ftplugin/xslt.vim
-#usr/share/vim/vim72/ftplugin/yaml.vim
-#usr/share/vim/vim72/ftplugin/zsh.vim
-#usr/share/vim/vim72/ftplugof.vim
-#usr/share/vim/vim72/gvimrc_example.vim
-#usr/share/vim/vim72/indent
-#usr/share/vim/vim72/indent.vim
-#usr/share/vim/vim72/indent/GenericIndent.vim
-#usr/share/vim/vim72/indent/README.txt
-#usr/share/vim/vim72/indent/aap.vim
-#usr/share/vim/vim72/indent/ada.vim
-#usr/share/vim/vim72/indent/ant.vim
-#usr/share/vim/vim72/indent/automake.vim
-#usr/share/vim/vim72/indent/awk.vim
-#usr/share/vim/vim72/indent/bib.vim
-#usr/share/vim/vim72/indent/bst.vim
-#usr/share/vim/vim72/indent/c.vim
-#usr/share/vim/vim72/indent/cdl.vim
-#usr/share/vim/vim72/indent/ch.vim
-#usr/share/vim/vim72/indent/changelog.vim
-#usr/share/vim/vim72/indent/cmake.vim
-#usr/share/vim/vim72/indent/cobol.vim
-#usr/share/vim/vim72/indent/config.vim
-#usr/share/vim/vim72/indent/cpp.vim
-#usr/share/vim/vim72/indent/cs.vim
-#usr/share/vim/vim72/indent/css.vim
-#usr/share/vim/vim72/indent/d.vim
-#usr/share/vim/vim72/indent/dictconf.vim
-#usr/share/vim/vim72/indent/dictdconf.vim
-#usr/share/vim/vim72/indent/docbk.vim
-#usr/share/vim/vim72/indent/dtd.vim
-#usr/share/vim/vim72/indent/dtrace.vim
-#usr/share/vim/vim72/indent/dylan.vim
-#usr/share/vim/vim72/indent/eiffel.vim
-#usr/share/vim/vim72/indent/erlang.vim
-#usr/share/vim/vim72/indent/eruby.vim
-#usr/share/vim/vim72/indent/eterm.vim
-#usr/share/vim/vim72/indent/fortran.vim
-#usr/share/vim/vim72/indent/framescript.vim
-#usr/share/vim/vim72/indent/gitconfig.vim
-#usr/share/vim/vim72/indent/haml.vim
-#usr/share/vim/vim72/indent/hamster.vim
-#usr/share/vim/vim72/indent/html.vim
-#usr/share/vim/vim72/indent/htmldjango.vim
-#usr/share/vim/vim72/indent/idlang.vim
-#usr/share/vim/vim72/indent/ishd.vim
-#usr/share/vim/vim72/indent/java.vim
-#usr/share/vim/vim72/indent/javascript.vim
-#usr/share/vim/vim72/indent/jsp.vim
-#usr/share/vim/vim72/indent/ld.vim
-#usr/share/vim/vim72/indent/lisp.vim
-#usr/share/vim/vim72/indent/logtalk.vim
-#usr/share/vim/vim72/indent/lua.vim
-#usr/share/vim/vim72/indent/make.vim
-#usr/share/vim/vim72/indent/matlab.vim
-#usr/share/vim/vim72/indent/mma.vim
-#usr/share/vim/vim72/indent/mp.vim
-#usr/share/vim/vim72/indent/mupad.vim
-#usr/share/vim/vim72/indent/objc.vim
-#usr/share/vim/vim72/indent/ocaml.vim
-#usr/share/vim/vim72/indent/occam.vim
-#usr/share/vim/vim72/indent/pascal.vim
-#usr/share/vim/vim72/indent/perl.vim
-#usr/share/vim/vim72/indent/php.vim
-#usr/share/vim/vim72/indent/postscr.vim
-#usr/share/vim/vim72/indent/pov.vim
-#usr/share/vim/vim72/indent/prolog.vim
-#usr/share/vim/vim72/indent/pyrex.vim
-#usr/share/vim/vim72/indent/python.vim
-#usr/share/vim/vim72/indent/readline.vim
-#usr/share/vim/vim72/indent/rpl.vim
-#usr/share/vim/vim72/indent/rst.vim
-#usr/share/vim/vim72/indent/ruby.vim
-#usr/share/vim/vim72/indent/sass.vim
-#usr/share/vim/vim72/indent/scheme.vim
-#usr/share/vim/vim72/indent/sdl.vim
-#usr/share/vim/vim72/indent/sh.vim
-#usr/share/vim/vim72/indent/sml.vim
-#usr/share/vim/vim72/indent/sql.vim
-#usr/share/vim/vim72/indent/sqlanywhere.vim
-#usr/share/vim/vim72/indent/tcl.vim
-#usr/share/vim/vim72/indent/tcsh.vim
-#usr/share/vim/vim72/indent/tf.vim
-#usr/share/vim/vim72/indent/tilde.vim
-#usr/share/vim/vim72/indent/vb.vim
-#usr/share/vim/vim72/indent/verilog.vim
-#usr/share/vim/vim72/indent/vhdl.vim
-#usr/share/vim/vim72/indent/vim.vim
-#usr/share/vim/vim72/indent/xf86conf.vim
-#usr/share/vim/vim72/indent/xhtml.vim
-#usr/share/vim/vim72/indent/xinetd.vim
-#usr/share/vim/vim72/indent/xml.vim
-#usr/share/vim/vim72/indent/xsd.vim
-#usr/share/vim/vim72/indent/xslt.vim
-#usr/share/vim/vim72/indent/yacc.vim
-#usr/share/vim/vim72/indent/zsh.vim
-#usr/share/vim/vim72/indoff.vim
-#usr/share/vim/vim72/macros
-#usr/share/vim/vim72/macros/README.txt
-#usr/share/vim/vim72/macros/dvorak
-#usr/share/vim/vim72/macros/editexisting.vim
-#usr/share/vim/vim72/macros/hanoi
-#usr/share/vim/vim72/macros/hanoi/click.me
-#usr/share/vim/vim72/macros/hanoi/hanoi.vim
-#usr/share/vim/vim72/macros/hanoi/poster
-#usr/share/vim/vim72/macros/justify.vim
-#usr/share/vim/vim72/macros/less.sh
-#usr/share/vim/vim72/macros/less.vim
-#usr/share/vim/vim72/macros/life
-#usr/share/vim/vim72/macros/life/click.me
-#usr/share/vim/vim72/macros/life/life.vim
-#usr/share/vim/vim72/macros/matchit.txt
-#usr/share/vim/vim72/macros/matchit.vim
-#usr/share/vim/vim72/macros/maze
-#usr/share/vim/vim72/macros/maze/Makefile
-#usr/share/vim/vim72/macros/maze/README.txt
-#usr/share/vim/vim72/macros/maze/main.aap
-#usr/share/vim/vim72/macros/maze/maze.c
-#usr/share/vim/vim72/macros/maze/maze_5.78
-#usr/share/vim/vim72/macros/maze/maze_mac
-#usr/share/vim/vim72/macros/maze/mazeansi.c
-#usr/share/vim/vim72/macros/maze/mazeclean.c
-#usr/share/vim/vim72/macros/maze/poster
-#usr/share/vim/vim72/macros/shellmenu.vim
-#usr/share/vim/vim72/macros/swapmous.vim
-#usr/share/vim/vim72/macros/urm
-#usr/share/vim/vim72/macros/urm/README.txt
-#usr/share/vim/vim72/macros/urm/examples
-#usr/share/vim/vim72/macros/urm/urm
-#usr/share/vim/vim72/macros/urm/urm.vim
-#usr/share/vim/vim72/menu.vim
-#usr/share/vim/vim72/mswin.vim
-#usr/share/vim/vim72/optwin.vim
-#usr/share/vim/vim72/plugin
-#usr/share/vim/vim72/plugin/README.txt
-#usr/share/vim/vim72/plugin/getscriptPlugin.vim
-#usr/share/vim/vim72/plugin/gzip.vim
-#usr/share/vim/vim72/plugin/matchparen.vim
-#usr/share/vim/vim72/plugin/netrwPlugin.vim
-#usr/share/vim/vim72/plugin/rrhelper.vim
-#usr/share/vim/vim72/plugin/spellfile.vim
-#usr/share/vim/vim72/plugin/tarPlugin.vim
-#usr/share/vim/vim72/plugin/tohtml.vim
-#usr/share/vim/vim72/plugin/vimballPlugin.vim
-#usr/share/vim/vim72/plugin/zipPlugin.vim
-#usr/share/vim/vim72/print
-#usr/share/vim/vim72/print/ascii.ps
-#usr/share/vim/vim72/print/cidfont.ps
-#usr/share/vim/vim72/print/cns_roman.ps
-#usr/share/vim/vim72/print/cp1250.ps
-#usr/share/vim/vim72/print/cp1251.ps
-#usr/share/vim/vim72/print/cp1252.ps
-#usr/share/vim/vim72/print/cp1253.ps
-#usr/share/vim/vim72/print/cp1254.ps
-#usr/share/vim/vim72/print/cp1255.ps
-#usr/share/vim/vim72/print/cp1257.ps
-#usr/share/vim/vim72/print/dec-mcs.ps
-#usr/share/vim/vim72/print/ebcdic-uk.ps
-#usr/share/vim/vim72/print/gb_roman.ps
-#usr/share/vim/vim72/print/hp-roman8.ps
-#usr/share/vim/vim72/print/iso-8859-10.ps
-#usr/share/vim/vim72/print/iso-8859-11.ps
-#usr/share/vim/vim72/print/iso-8859-13.ps
-#usr/share/vim/vim72/print/iso-8859-14.ps
-#usr/share/vim/vim72/print/iso-8859-15.ps
-#usr/share/vim/vim72/print/iso-8859-2.ps
-#usr/share/vim/vim72/print/iso-8859-3.ps
-#usr/share/vim/vim72/print/iso-8859-4.ps
-#usr/share/vim/vim72/print/iso-8859-5.ps
-#usr/share/vim/vim72/print/iso-8859-7.ps
-#usr/share/vim/vim72/print/iso-8859-8.ps
-#usr/share/vim/vim72/print/iso-8859-9.ps
-#usr/share/vim/vim72/print/jis_roman.ps
-#usr/share/vim/vim72/print/koi8-r.ps
-#usr/share/vim/vim72/print/koi8-u.ps
-#usr/share/vim/vim72/print/ks_roman.ps
-#usr/share/vim/vim72/print/latin1.ps
-#usr/share/vim/vim72/print/mac-roman.ps
-#usr/share/vim/vim72/print/prolog.ps
-#usr/share/vim/vim72/scripts.vim
-#usr/share/vim/vim72/spell
-#usr/share/vim/vim72/spell/cleanadd.vim
-#usr/share/vim/vim72/spell/en.ascii.spl
-#usr/share/vim/vim72/spell/en.ascii.sug
-#usr/share/vim/vim72/spell/en.latin1.spl
-#usr/share/vim/vim72/spell/en.latin1.sug
-#usr/share/vim/vim72/spell/en.utf-8.spl
-#usr/share/vim/vim72/spell/en.utf-8.sug
-#usr/share/vim/vim72/spell/he.vim
-#usr/share/vim/vim72/spell/yi.vim
-#usr/share/vim/vim72/synmenu.vim
-#usr/share/vim/vim72/syntax
-#usr/share/vim/vim72/syntax/2html.vim
-#usr/share/vim/vim72/syntax/README.txt
-#usr/share/vim/vim72/syntax/a2ps.vim
-#usr/share/vim/vim72/syntax/a65.vim
-#usr/share/vim/vim72/syntax/aap.vim
-#usr/share/vim/vim72/syntax/abap.vim
-#usr/share/vim/vim72/syntax/abaqus.vim
-#usr/share/vim/vim72/syntax/abc.vim
-#usr/share/vim/vim72/syntax/abel.vim
-#usr/share/vim/vim72/syntax/acedb.vim
-#usr/share/vim/vim72/syntax/ada.vim
-#usr/share/vim/vim72/syntax/aflex.vim
-#usr/share/vim/vim72/syntax/ahdl.vim
-#usr/share/vim/vim72/syntax/alsaconf.vim
-#usr/share/vim/vim72/syntax/amiga.vim
-#usr/share/vim/vim72/syntax/aml.vim
-#usr/share/vim/vim72/syntax/ampl.vim
-#usr/share/vim/vim72/syntax/ant.vim
-#usr/share/vim/vim72/syntax/antlr.vim
-#usr/share/vim/vim72/syntax/apache.vim
-#usr/share/vim/vim72/syntax/apachestyle.vim
-#usr/share/vim/vim72/syntax/arch.vim
-#usr/share/vim/vim72/syntax/art.vim
-#usr/share/vim/vim72/syntax/asm.vim
-#usr/share/vim/vim72/syntax/asm68k.vim
-#usr/share/vim/vim72/syntax/asmh8300.vim
-#usr/share/vim/vim72/syntax/asn.vim
-#usr/share/vim/vim72/syntax/aspperl.vim
-#usr/share/vim/vim72/syntax/aspvbs.vim
-#usr/share/vim/vim72/syntax/asterisk.vim
-#usr/share/vim/vim72/syntax/asteriskvm.vim
-#usr/share/vim/vim72/syntax/atlas.vim
-#usr/share/vim/vim72/syntax/autohotkey.vim
-#usr/share/vim/vim72/syntax/autoit.vim
-#usr/share/vim/vim72/syntax/automake.vim
-#usr/share/vim/vim72/syntax/ave.vim
-#usr/share/vim/vim72/syntax/awk.vim
-#usr/share/vim/vim72/syntax/ayacc.vim
-#usr/share/vim/vim72/syntax/b.vim
-#usr/share/vim/vim72/syntax/baan.vim
-#usr/share/vim/vim72/syntax/basic.vim
-#usr/share/vim/vim72/syntax/bc.vim
-#usr/share/vim/vim72/syntax/bdf.vim
-#usr/share/vim/vim72/syntax/bib.vim
-#usr/share/vim/vim72/syntax/bindzone.vim
-#usr/share/vim/vim72/syntax/blank.vim
-#usr/share/vim/vim72/syntax/bst.vim
-#usr/share/vim/vim72/syntax/btm.vim
-#usr/share/vim/vim72/syntax/bzr.vim
-#usr/share/vim/vim72/syntax/c.vim
-#usr/share/vim/vim72/syntax/calendar.vim
-#usr/share/vim/vim72/syntax/catalog.vim
-#usr/share/vim/vim72/syntax/cdl.vim
-#usr/share/vim/vim72/syntax/cdrdaoconf.vim
-#usr/share/vim/vim72/syntax/cdrtoc.vim
-#usr/share/vim/vim72/syntax/cf.vim
-#usr/share/vim/vim72/syntax/cfg.vim
-#usr/share/vim/vim72/syntax/ch.vim
-#usr/share/vim/vim72/syntax/change.vim
-#usr/share/vim/vim72/syntax/changelog.vim
-#usr/share/vim/vim72/syntax/chaskell.vim
-#usr/share/vim/vim72/syntax/cheetah.vim
-#usr/share/vim/vim72/syntax/chill.vim
-#usr/share/vim/vim72/syntax/chordpro.vim
-#usr/share/vim/vim72/syntax/cl.vim
-#usr/share/vim/vim72/syntax/clean.vim
-#usr/share/vim/vim72/syntax/clipper.vim
-#usr/share/vim/vim72/syntax/cmake.vim
-#usr/share/vim/vim72/syntax/cmusrc.vim
-#usr/share/vim/vim72/syntax/cobol.vim
-#usr/share/vim/vim72/syntax/coco.vim
-#usr/share/vim/vim72/syntax/colortest.vim
-#usr/share/vim/vim72/syntax/conaryrecipe.vim
-#usr/share/vim/vim72/syntax/conf.vim
-#usr/share/vim/vim72/syntax/config.vim
-#usr/share/vim/vim72/syntax/context.vim
-#usr/share/vim/vim72/syntax/cpp.vim
-#usr/share/vim/vim72/syntax/crm.vim
-#usr/share/vim/vim72/syntax/crontab.vim
-#usr/share/vim/vim72/syntax/cs.vim
-#usr/share/vim/vim72/syntax/csc.vim
-#usr/share/vim/vim72/syntax/csh.vim
-#usr/share/vim/vim72/syntax/csp.vim
-#usr/share/vim/vim72/syntax/css.vim
-#usr/share/vim/vim72/syntax/cterm.vim
-#usr/share/vim/vim72/syntax/ctrlh.vim
-#usr/share/vim/vim72/syntax/cuda.vim
-#usr/share/vim/vim72/syntax/cupl.vim
-#usr/share/vim/vim72/syntax/cuplsim.vim
-#usr/share/vim/vim72/syntax/cvs.vim
-#usr/share/vim/vim72/syntax/cvsrc.vim
-#usr/share/vim/vim72/syntax/cweb.vim
-#usr/share/vim/vim72/syntax/cynlib.vim
-#usr/share/vim/vim72/syntax/cynpp.vim
-#usr/share/vim/vim72/syntax/d.vim
-#usr/share/vim/vim72/syntax/dcd.vim
-#usr/share/vim/vim72/syntax/dcl.vim
-#usr/share/vim/vim72/syntax/debchangelog.vim
-#usr/share/vim/vim72/syntax/debcontrol.vim
-#usr/share/vim/vim72/syntax/debsources.vim
-#usr/share/vim/vim72/syntax/def.vim
-#usr/share/vim/vim72/syntax/denyhosts.vim
-#usr/share/vim/vim72/syntax/desc.vim
-#usr/share/vim/vim72/syntax/desktop.vim
-#usr/share/vim/vim72/syntax/dictconf.vim
-#usr/share/vim/vim72/syntax/dictdconf.vim
-#usr/share/vim/vim72/syntax/diff.vim
-#usr/share/vim/vim72/syntax/dircolors.vim
-#usr/share/vim/vim72/syntax/diva.vim
-#usr/share/vim/vim72/syntax/django.vim
-#usr/share/vim/vim72/syntax/dns.vim
-#usr/share/vim/vim72/syntax/docbk.vim
-#usr/share/vim/vim72/syntax/docbksgml.vim
-#usr/share/vim/vim72/syntax/docbkxml.vim
-#usr/share/vim/vim72/syntax/dosbatch.vim
-#usr/share/vim/vim72/syntax/dosini.vim
-#usr/share/vim/vim72/syntax/dot.vim
-#usr/share/vim/vim72/syntax/doxygen.vim
-#usr/share/vim/vim72/syntax/dracula.vim
-#usr/share/vim/vim72/syntax/dsl.vim
-#usr/share/vim/vim72/syntax/dtd.vim
-#usr/share/vim/vim72/syntax/dtml.vim
-#usr/share/vim/vim72/syntax/dtrace.vim
-#usr/share/vim/vim72/syntax/dylan.vim
-#usr/share/vim/vim72/syntax/dylanintr.vim
-#usr/share/vim/vim72/syntax/dylanlid.vim
-#usr/share/vim/vim72/syntax/ecd.vim
-#usr/share/vim/vim72/syntax/edif.vim
-#usr/share/vim/vim72/syntax/eiffel.vim
-#usr/share/vim/vim72/syntax/elf.vim
-#usr/share/vim/vim72/syntax/elinks.vim
-#usr/share/vim/vim72/syntax/elmfilt.vim
-#usr/share/vim/vim72/syntax/erlang.vim
-#usr/share/vim/vim72/syntax/eruby.vim
-#usr/share/vim/vim72/syntax/esmtprc.vim
-#usr/share/vim/vim72/syntax/esqlc.vim
-#usr/share/vim/vim72/syntax/esterel.vim
-#usr/share/vim/vim72/syntax/eterm.vim
-#usr/share/vim/vim72/syntax/eviews.vim
-#usr/share/vim/vim72/syntax/exim.vim
-#usr/share/vim/vim72/syntax/expect.vim
-#usr/share/vim/vim72/syntax/exports.vim
-#usr/share/vim/vim72/syntax/fasm.vim
-#usr/share/vim/vim72/syntax/fdcc.vim
-#usr/share/vim/vim72/syntax/fetchmail.vim
-#usr/share/vim/vim72/syntax/fgl.vim
-#usr/share/vim/vim72/syntax/flexwiki.vim
-#usr/share/vim/vim72/syntax/focexec.vim
-#usr/share/vim/vim72/syntax/form.vim
-#usr/share/vim/vim72/syntax/forth.vim
-#usr/share/vim/vim72/syntax/fortran.vim
-#usr/share/vim/vim72/syntax/foxpro.vim
-#usr/share/vim/vim72/syntax/framescript.vim
-#usr/share/vim/vim72/syntax/freebasic.vim
-#usr/share/vim/vim72/syntax/fstab.vim
-#usr/share/vim/vim72/syntax/fvwm.vim
-#usr/share/vim/vim72/syntax/fvwm2m4.vim
-#usr/share/vim/vim72/syntax/gdb.vim
-#usr/share/vim/vim72/syntax/gdmo.vim
-#usr/share/vim/vim72/syntax/gedcom.vim
-#usr/share/vim/vim72/syntax/git.vim
-#usr/share/vim/vim72/syntax/gitcommit.vim
-#usr/share/vim/vim72/syntax/gitconfig.vim
-#usr/share/vim/vim72/syntax/gitrebase.vim
-#usr/share/vim/vim72/syntax/gitsendemail.vim
-#usr/share/vim/vim72/syntax/gkrellmrc.vim
-#usr/share/vim/vim72/syntax/gnuplot.vim
-#usr/share/vim/vim72/syntax/gp.vim
-#usr/share/vim/vim72/syntax/gpg.vim
-#usr/share/vim/vim72/syntax/grads.vim
-#usr/share/vim/vim72/syntax/gretl.vim
-#usr/share/vim/vim72/syntax/groff.vim
-#usr/share/vim/vim72/syntax/groovy.vim
-#usr/share/vim/vim72/syntax/group.vim
-#usr/share/vim/vim72/syntax/grub.vim
-#usr/share/vim/vim72/syntax/gsp.vim
-#usr/share/vim/vim72/syntax/gtkrc.vim
-#usr/share/vim/vim72/syntax/haml.vim
-#usr/share/vim/vim72/syntax/hamster.vim
-#usr/share/vim/vim72/syntax/haskell.vim
-#usr/share/vim/vim72/syntax/haste.vim
-#usr/share/vim/vim72/syntax/hastepreproc.vim
-#usr/share/vim/vim72/syntax/hb.vim
-#usr/share/vim/vim72/syntax/help.vim
-#usr/share/vim/vim72/syntax/hercules.vim
-#usr/share/vim/vim72/syntax/hex.vim
-#usr/share/vim/vim72/syntax/hitest.vim
-#usr/share/vim/vim72/syntax/hog.vim
-#usr/share/vim/vim72/syntax/hostconf.vim
-#usr/share/vim/vim72/syntax/html.vim
-#usr/share/vim/vim72/syntax/htmlcheetah.vim
-#usr/share/vim/vim72/syntax/htmldjango.vim
-#usr/share/vim/vim72/syntax/htmlm4.vim
-#usr/share/vim/vim72/syntax/htmlos.vim
-#usr/share/vim/vim72/syntax/ia64.vim
-#usr/share/vim/vim72/syntax/ibasic.vim
-#usr/share/vim/vim72/syntax/icemenu.vim
-#usr/share/vim/vim72/syntax/icon.vim
-#usr/share/vim/vim72/syntax/idl.vim
-#usr/share/vim/vim72/syntax/idlang.vim
-#usr/share/vim/vim72/syntax/indent.vim
-#usr/share/vim/vim72/syntax/inform.vim
-#usr/share/vim/vim72/syntax/initex.vim
-#usr/share/vim/vim72/syntax/initng.vim
-#usr/share/vim/vim72/syntax/inittab.vim
-#usr/share/vim/vim72/syntax/ipfilter.vim
-#usr/share/vim/vim72/syntax/ishd.vim
-#usr/share/vim/vim72/syntax/iss.vim
-#usr/share/vim/vim72/syntax/ist.vim
-#usr/share/vim/vim72/syntax/jal.vim
-#usr/share/vim/vim72/syntax/jam.vim
-#usr/share/vim/vim72/syntax/jargon.vim
-#usr/share/vim/vim72/syntax/java.vim
-#usr/share/vim/vim72/syntax/javacc.vim
-#usr/share/vim/vim72/syntax/javascript.vim
-#usr/share/vim/vim72/syntax/jess.vim
-#usr/share/vim/vim72/syntax/jgraph.vim
-#usr/share/vim/vim72/syntax/jproperties.vim
-#usr/share/vim/vim72/syntax/jsp.vim
-#usr/share/vim/vim72/syntax/kconfig.vim
-#usr/share/vim/vim72/syntax/kix.vim
-#usr/share/vim/vim72/syntax/kscript.vim
-#usr/share/vim/vim72/syntax/kwt.vim
-#usr/share/vim/vim72/syntax/lace.vim
-#usr/share/vim/vim72/syntax/latte.vim
-#usr/share/vim/vim72/syntax/ld.vim
-#usr/share/vim/vim72/syntax/ldapconf.vim
-#usr/share/vim/vim72/syntax/ldif.vim
-#usr/share/vim/vim72/syntax/lex.vim
-#usr/share/vim/vim72/syntax/lftp.vim
-#usr/share/vim/vim72/syntax/lhaskell.vim
-#usr/share/vim/vim72/syntax/libao.vim
-#usr/share/vim/vim72/syntax/lifelines.vim
-#usr/share/vim/vim72/syntax/lilo.vim
-#usr/share/vim/vim72/syntax/limits.vim
-#usr/share/vim/vim72/syntax/lisp.vim
-#usr/share/vim/vim72/syntax/lite.vim
-#usr/share/vim/vim72/syntax/litestep.vim
-#usr/share/vim/vim72/syntax/loginaccess.vim
-#usr/share/vim/vim72/syntax/logindefs.vim
-#usr/share/vim/vim72/syntax/logtalk.vim
-#usr/share/vim/vim72/syntax/lotos.vim
-#usr/share/vim/vim72/syntax/lout.vim
-#usr/share/vim/vim72/syntax/lpc.vim
-#usr/share/vim/vim72/syntax/lprolog.vim
-#usr/share/vim/vim72/syntax/lscript.vim
-#usr/share/vim/vim72/syntax/lsl.vim
-#usr/share/vim/vim72/syntax/lss.vim
-#usr/share/vim/vim72/syntax/lua.vim
-#usr/share/vim/vim72/syntax/lynx.vim
-#usr/share/vim/vim72/syntax/m4.vim
-#usr/share/vim/vim72/syntax/mail.vim
-#usr/share/vim/vim72/syntax/mailaliases.vim
-#usr/share/vim/vim72/syntax/mailcap.vim
-#usr/share/vim/vim72/syntax/make.vim
-#usr/share/vim/vim72/syntax/man.vim
-#usr/share/vim/vim72/syntax/manconf.vim
-#usr/share/vim/vim72/syntax/manual.vim
-#usr/share/vim/vim72/syntax/maple.vim
-#usr/share/vim/vim72/syntax/masm.vim
-#usr/share/vim/vim72/syntax/mason.vim
-#usr/share/vim/vim72/syntax/master.vim
-#usr/share/vim/vim72/syntax/matlab.vim
-#usr/share/vim/vim72/syntax/maxima.vim
-#usr/share/vim/vim72/syntax/mel.vim
-#usr/share/vim/vim72/syntax/messages.vim
-#usr/share/vim/vim72/syntax/mf.vim
-#usr/share/vim/vim72/syntax/mgl.vim
-#usr/share/vim/vim72/syntax/mgp.vim
-#usr/share/vim/vim72/syntax/mib.vim
-#usr/share/vim/vim72/syntax/mma.vim
-#usr/share/vim/vim72/syntax/mmix.vim
-#usr/share/vim/vim72/syntax/mmp.vim
-#usr/share/vim/vim72/syntax/modconf.vim
-#usr/share/vim/vim72/syntax/model.vim
-#usr/share/vim/vim72/syntax/modsim3.vim
-#usr/share/vim/vim72/syntax/modula2.vim
-#usr/share/vim/vim72/syntax/modula3.vim
-#usr/share/vim/vim72/syntax/monk.vim
-#usr/share/vim/vim72/syntax/moo.vim
-#usr/share/vim/vim72/syntax/mp.vim
-#usr/share/vim/vim72/syntax/mplayerconf.vim
-#usr/share/vim/vim72/syntax/mrxvtrc.vim
-#usr/share/vim/vim72/syntax/msidl.vim
-#usr/share/vim/vim72/syntax/msmessages.vim
-#usr/share/vim/vim72/syntax/msql.vim
-#usr/share/vim/vim72/syntax/mupad.vim
-#usr/share/vim/vim72/syntax/mush.vim
-#usr/share/vim/vim72/syntax/muttrc.vim
-#usr/share/vim/vim72/syntax/mysql.vim
-#usr/share/vim/vim72/syntax/named.vim
-#usr/share/vim/vim72/syntax/nanorc.vim
-#usr/share/vim/vim72/syntax/nasm.vim
-#usr/share/vim/vim72/syntax/nastran.vim
-#usr/share/vim/vim72/syntax/natural.vim
-#usr/share/vim/vim72/syntax/ncf.vim
-#usr/share/vim/vim72/syntax/netrc.vim
-#usr/share/vim/vim72/syntax/netrw.vim
-#usr/share/vim/vim72/syntax/nosyntax.vim
-#usr/share/vim/vim72/syntax/nqc.vim
-#usr/share/vim/vim72/syntax/nroff.vim
-#usr/share/vim/vim72/syntax/nsis.vim
-#usr/share/vim/vim72/syntax/objc.vim
-#usr/share/vim/vim72/syntax/objcpp.vim
-#usr/share/vim/vim72/syntax/ocaml.vim
-#usr/share/vim/vim72/syntax/occam.vim
-#usr/share/vim/vim72/syntax/omnimark.vim
-#usr/share/vim/vim72/syntax/openroad.vim
-#usr/share/vim/vim72/syntax/opl.vim
-#usr/share/vim/vim72/syntax/ora.vim
-#usr/share/vim/vim72/syntax/pamconf.vim
-#usr/share/vim/vim72/syntax/papp.vim
-#usr/share/vim/vim72/syntax/pascal.vim
-#usr/share/vim/vim72/syntax/passwd.vim
-#usr/share/vim/vim72/syntax/pcap.vim
-#usr/share/vim/vim72/syntax/pccts.vim
-#usr/share/vim/vim72/syntax/pdf.vim
-#usr/share/vim/vim72/syntax/perl.vim
-#usr/share/vim/vim72/syntax/pf.vim
-#usr/share/vim/vim72/syntax/pfmain.vim
-#usr/share/vim/vim72/syntax/php.vim
-#usr/share/vim/vim72/syntax/phtml.vim
-#usr/share/vim/vim72/syntax/pic.vim
-#usr/share/vim/vim72/syntax/pike.vim
-#usr/share/vim/vim72/syntax/pilrc.vim
-#usr/share/vim/vim72/syntax/pine.vim
-#usr/share/vim/vim72/syntax/pinfo.vim
-#usr/share/vim/vim72/syntax/plaintex.vim
-#usr/share/vim/vim72/syntax/plm.vim
-#usr/share/vim/vim72/syntax/plp.vim
-#usr/share/vim/vim72/syntax/plsql.vim
-#usr/share/vim/vim72/syntax/po.vim
-#usr/share/vim/vim72/syntax/pod.vim
-#usr/share/vim/vim72/syntax/postscr.vim
-#usr/share/vim/vim72/syntax/pov.vim
-#usr/share/vim/vim72/syntax/povini.vim
-#usr/share/vim/vim72/syntax/ppd.vim
-#usr/share/vim/vim72/syntax/ppwiz.vim
-#usr/share/vim/vim72/syntax/prescribe.vim
-#usr/share/vim/vim72/syntax/privoxy.vim
-#usr/share/vim/vim72/syntax/procmail.vim
-#usr/share/vim/vim72/syntax/progress.vim
-#usr/share/vim/vim72/syntax/prolog.vim
-#usr/share/vim/vim72/syntax/promela.vim
-#usr/share/vim/vim72/syntax/protocols.vim
-#usr/share/vim/vim72/syntax/psf.vim
-#usr/share/vim/vim72/syntax/ptcap.vim
-#usr/share/vim/vim72/syntax/purifylog.vim
-#usr/share/vim/vim72/syntax/pyrex.vim
-#usr/share/vim/vim72/syntax/python.vim
-#usr/share/vim/vim72/syntax/qf.vim
-#usr/share/vim/vim72/syntax/quake.vim
-#usr/share/vim/vim72/syntax/r.vim
-#usr/share/vim/vim72/syntax/racc.vim
-#usr/share/vim/vim72/syntax/radiance.vim
-#usr/share/vim/vim72/syntax/ratpoison.vim
-#usr/share/vim/vim72/syntax/rc.vim
-#usr/share/vim/vim72/syntax/rcs.vim
-#usr/share/vim/vim72/syntax/rcslog.vim
-#usr/share/vim/vim72/syntax/readline.vim
-#usr/share/vim/vim72/syntax/rebol.vim
-#usr/share/vim/vim72/syntax/registry.vim
-#usr/share/vim/vim72/syntax/remind.vim
-#usr/share/vim/vim72/syntax/resolv.vim
-#usr/share/vim/vim72/syntax/reva.vim
-#usr/share/vim/vim72/syntax/rexx.vim
-#usr/share/vim/vim72/syntax/rhelp.vim
-#usr/share/vim/vim72/syntax/rib.vim
-#usr/share/vim/vim72/syntax/rnc.vim
-#usr/share/vim/vim72/syntax/rnoweb.vim
-#usr/share/vim/vim72/syntax/robots.vim
-#usr/share/vim/vim72/syntax/rpcgen.vim
-#usr/share/vim/vim72/syntax/rpl.vim
-#usr/share/vim/vim72/syntax/rst.vim
-#usr/share/vim/vim72/syntax/rtf.vim
-#usr/share/vim/vim72/syntax/ruby.vim
-#usr/share/vim/vim72/syntax/samba.vim
-#usr/share/vim/vim72/syntax/sas.vim
-#usr/share/vim/vim72/syntax/sass.vim
-#usr/share/vim/vim72/syntax/sather.vim
-#usr/share/vim/vim72/syntax/scheme.vim
-#usr/share/vim/vim72/syntax/scilab.vim
-#usr/share/vim/vim72/syntax/screen.vim
-#usr/share/vim/vim72/syntax/sd.vim
-#usr/share/vim/vim72/syntax/sdl.vim
-#usr/share/vim/vim72/syntax/sed.vim
-#usr/share/vim/vim72/syntax/sendpr.vim
-#usr/share/vim/vim72/syntax/sensors.vim
-#usr/share/vim/vim72/syntax/services.vim
-#usr/share/vim/vim72/syntax/setserial.vim
-#usr/share/vim/vim72/syntax/sgml.vim
-#usr/share/vim/vim72/syntax/sgmldecl.vim
-#usr/share/vim/vim72/syntax/sgmllnx.vim
-#usr/share/vim/vim72/syntax/sh.vim
-#usr/share/vim/vim72/syntax/sicad.vim
-#usr/share/vim/vim72/syntax/sieve.vim
-#usr/share/vim/vim72/syntax/simula.vim
-#usr/share/vim/vim72/syntax/sinda.vim
-#usr/share/vim/vim72/syntax/sindacmp.vim
-#usr/share/vim/vim72/syntax/sindaout.vim
-#usr/share/vim/vim72/syntax/sisu.vim
-#usr/share/vim/vim72/syntax/skill.vim
-#usr/share/vim/vim72/syntax/sl.vim
-#usr/share/vim/vim72/syntax/slang.vim
-#usr/share/vim/vim72/syntax/slice.vim
-#usr/share/vim/vim72/syntax/slpconf.vim
-#usr/share/vim/vim72/syntax/slpreg.vim
-#usr/share/vim/vim72/syntax/slpspi.vim
-#usr/share/vim/vim72/syntax/slrnrc.vim
-#usr/share/vim/vim72/syntax/slrnsc.vim
-#usr/share/vim/vim72/syntax/sm.vim
-#usr/share/vim/vim72/syntax/smarty.vim
-#usr/share/vim/vim72/syntax/smcl.vim
-#usr/share/vim/vim72/syntax/smil.vim
-#usr/share/vim/vim72/syntax/smith.vim
-#usr/share/vim/vim72/syntax/sml.vim
-#usr/share/vim/vim72/syntax/snnsnet.vim
-#usr/share/vim/vim72/syntax/snnspat.vim
-#usr/share/vim/vim72/syntax/snnsres.vim
-#usr/share/vim/vim72/syntax/snobol4.vim
-#usr/share/vim/vim72/syntax/spec.vim
-#usr/share/vim/vim72/syntax/specman.vim
-#usr/share/vim/vim72/syntax/spice.vim
-#usr/share/vim/vim72/syntax/splint.vim
-#usr/share/vim/vim72/syntax/spup.vim
-#usr/share/vim/vim72/syntax/spyce.vim
-#usr/share/vim/vim72/syntax/sql.vim
-#usr/share/vim/vim72/syntax/sqlanywhere.vim
-#usr/share/vim/vim72/syntax/sqlforms.vim
-#usr/share/vim/vim72/syntax/sqlinformix.vim
-#usr/share/vim/vim72/syntax/sqlj.vim
-#usr/share/vim/vim72/syntax/sqloracle.vim
-#usr/share/vim/vim72/syntax/sqr.vim
-#usr/share/vim/vim72/syntax/squid.vim
-#usr/share/vim/vim72/syntax/sshconfig.vim
-#usr/share/vim/vim72/syntax/sshdconfig.vim
-#usr/share/vim/vim72/syntax/st.vim
-#usr/share/vim/vim72/syntax/stata.vim
-#usr/share/vim/vim72/syntax/stp.vim
-#usr/share/vim/vim72/syntax/strace.vim
-#usr/share/vim/vim72/syntax/sudoers.vim
-#usr/share/vim/vim72/syntax/svn.vim
-#usr/share/vim/vim72/syntax/syncolor.vim
-#usr/share/vim/vim72/syntax/synload.vim
-#usr/share/vim/vim72/syntax/syntax.vim
-#usr/share/vim/vim72/syntax/sysctl.vim
-#usr/share/vim/vim72/syntax/tads.vim
-#usr/share/vim/vim72/syntax/tags.vim
-#usr/share/vim/vim72/syntax/tak.vim
-#usr/share/vim/vim72/syntax/takcmp.vim
-#usr/share/vim/vim72/syntax/takout.vim
-#usr/share/vim/vim72/syntax/tar.vim
-#usr/share/vim/vim72/syntax/tasm.vim
-#usr/share/vim/vim72/syntax/tcl.vim
-#usr/share/vim/vim72/syntax/tcsh.vim
-#usr/share/vim/vim72/syntax/terminfo.vim
-#usr/share/vim/vim72/syntax/tex.vim
-#usr/share/vim/vim72/syntax/texinfo.vim
-#usr/share/vim/vim72/syntax/texmf.vim
-#usr/share/vim/vim72/syntax/tf.vim
-#usr/share/vim/vim72/syntax/tidy.vim
-#usr/share/vim/vim72/syntax/tilde.vim
-#usr/share/vim/vim72/syntax/tli.vim
-#usr/share/vim/vim72/syntax/tpp.vim
-#usr/share/vim/vim72/syntax/trasys.vim
-#usr/share/vim/vim72/syntax/trustees.vim
-#usr/share/vim/vim72/syntax/tsalt.vim
-#usr/share/vim/vim72/syntax/tsscl.vim
-#usr/share/vim/vim72/syntax/tssgm.vim
-#usr/share/vim/vim72/syntax/tssop.vim
-#usr/share/vim/vim72/syntax/uc.vim
-#usr/share/vim/vim72/syntax/udevconf.vim
-#usr/share/vim/vim72/syntax/udevperm.vim
-#usr/share/vim/vim72/syntax/udevrules.vim
-#usr/share/vim/vim72/syntax/uil.vim
-#usr/share/vim/vim72/syntax/updatedb.vim
-#usr/share/vim/vim72/syntax/valgrind.vim
-#usr/share/vim/vim72/syntax/vb.vim
-#usr/share/vim/vim72/syntax/vera.vim
-#usr/share/vim/vim72/syntax/verilog.vim
-#usr/share/vim/vim72/syntax/verilogams.vim
-#usr/share/vim/vim72/syntax/vgrindefs.vim
-#usr/share/vim/vim72/syntax/vhdl.vim
-#usr/share/vim/vim72/syntax/vim.vim
-#usr/share/vim/vim72/syntax/viminfo.vim
-#usr/share/vim/vim72/syntax/virata.vim
-#usr/share/vim/vim72/syntax/vmasm.vim
-#usr/share/vim/vim72/syntax/voscm.vim
-#usr/share/vim/vim72/syntax/vrml.vim
-#usr/share/vim/vim72/syntax/vsejcl.vim
-#usr/share/vim/vim72/syntax/wdiff.vim
-#usr/share/vim/vim72/syntax/web.vim
-#usr/share/vim/vim72/syntax/webmacro.vim
-#usr/share/vim/vim72/syntax/wget.vim
-#usr/share/vim/vim72/syntax/whitespace.vim
-#usr/share/vim/vim72/syntax/winbatch.vim
-#usr/share/vim/vim72/syntax/wml.vim
-#usr/share/vim/vim72/syntax/wsh.vim
-#usr/share/vim/vim72/syntax/wsml.vim
-#usr/share/vim/vim72/syntax/wvdial.vim
-#usr/share/vim/vim72/syntax/xbl.vim
-#usr/share/vim/vim72/syntax/xdefaults.vim
-#usr/share/vim/vim72/syntax/xf86conf.vim
-#usr/share/vim/vim72/syntax/xhtml.vim
-#usr/share/vim/vim72/syntax/xinetd.vim
-#usr/share/vim/vim72/syntax/xkb.vim
-#usr/share/vim/vim72/syntax/xmath.vim
-#usr/share/vim/vim72/syntax/xml.vim
-#usr/share/vim/vim72/syntax/xmodmap.vim
-#usr/share/vim/vim72/syntax/xpm.vim
-#usr/share/vim/vim72/syntax/xpm2.vim
-#usr/share/vim/vim72/syntax/xquery.vim
-#usr/share/vim/vim72/syntax/xs.vim
-#usr/share/vim/vim72/syntax/xsd.vim
-#usr/share/vim/vim72/syntax/xslt.vim
-#usr/share/vim/vim72/syntax/xxd.vim
-#usr/share/vim/vim72/syntax/yacc.vim
-#usr/share/vim/vim72/syntax/yaml.vim
-#usr/share/vim/vim72/syntax/z8a.vim
-#usr/share/vim/vim72/syntax/zsh.vim
-#usr/share/vim/vim72/tools
-#usr/share/vim/vim72/tools/README.txt
-#usr/share/vim/vim72/tools/blink.c
-#usr/share/vim/vim72/tools/ccfilter.1
-#usr/share/vim/vim72/tools/ccfilter.c
-#usr/share/vim/vim72/tools/ccfilter_README.txt
-#usr/share/vim/vim72/tools/efm_filter.pl
-#usr/share/vim/vim72/tools/efm_filter.txt
-#usr/share/vim/vim72/tools/efm_perl.pl
-#usr/share/vim/vim72/tools/mve.awk
-#usr/share/vim/vim72/tools/mve.txt
-#usr/share/vim/vim72/tools/pltags.pl
-#usr/share/vim/vim72/tools/ref
-#usr/share/vim/vim72/tools/shtags.1
-#usr/share/vim/vim72/tools/shtags.pl
-#usr/share/vim/vim72/tools/vim132
-#usr/share/vim/vim72/tools/vim_vs_net.cmd
-#usr/share/vim/vim72/tools/vimm
-#usr/share/vim/vim72/tools/vimspell.sh
-#usr/share/vim/vim72/tools/vimspell.txt
-#usr/share/vim/vim72/tools/xcmdsrv_client.c
-#usr/share/vim/vim72/tutor
-#usr/share/vim/vim72/tutor/README.el.cp737.txt
-#usr/share/vim/vim72/tutor/README.el.txt
-#usr/share/vim/vim72/tutor/README.txt
-#usr/share/vim/vim72/tutor/tutor
-#usr/share/vim/vim72/tutor/tutor.ca
-#usr/share/vim/vim72/tutor/tutor.ca.utf-8
-#usr/share/vim/vim72/tutor/tutor.cs
-#usr/share/vim/vim72/tutor/tutor.cs.cp1250
-#usr/share/vim/vim72/tutor/tutor.cs.utf-8
-#usr/share/vim/vim72/tutor/tutor.de
-#usr/share/vim/vim72/tutor/tutor.de.utf-8
-#usr/share/vim/vim72/tutor/tutor.el
-#usr/share/vim/vim72/tutor/tutor.el.cp737
-#usr/share/vim/vim72/tutor/tutor.el.utf-8
-#usr/share/vim/vim72/tutor/tutor.eo.utf-8
-#usr/share/vim/vim72/tutor/tutor.es
-#usr/share/vim/vim72/tutor/tutor.es.utf-8
-#usr/share/vim/vim72/tutor/tutor.fr
-#usr/share/vim/vim72/tutor/tutor.fr.utf-8
-#usr/share/vim/vim72/tutor/tutor.hr
-#usr/share/vim/vim72/tutor/tutor.hr.cp1250
-#usr/share/vim/vim72/tutor/tutor.hr.utf-8
-#usr/share/vim/vim72/tutor/tutor.hu
-#usr/share/vim/vim72/tutor/tutor.hu.cp1250
-#usr/share/vim/vim72/tutor/tutor.hu.utf-8
-#usr/share/vim/vim72/tutor/tutor.it
-#usr/share/vim/vim72/tutor/tutor.it.utf-8
-#usr/share/vim/vim72/tutor/tutor.ja.euc
-#usr/share/vim/vim72/tutor/tutor.ja.sjis
-#usr/share/vim/vim72/tutor/tutor.ja.utf-8
-#usr/share/vim/vim72/tutor/tutor.ko.euc
-#usr/share/vim/vim72/tutor/tutor.ko.utf-8
-#usr/share/vim/vim72/tutor/tutor.no
-#usr/share/vim/vim72/tutor/tutor.no.utf-8
-#usr/share/vim/vim72/tutor/tutor.pl
-#usr/share/vim/vim72/tutor/tutor.pl.cp1250
-#usr/share/vim/vim72/tutor/tutor.pl.utf-8
-#usr/share/vim/vim72/tutor/tutor.ru
-#usr/share/vim/vim72/tutor/tutor.ru.cp1251
-#usr/share/vim/vim72/tutor/tutor.ru.utf-8
-#usr/share/vim/vim72/tutor/tutor.sk
-#usr/share/vim/vim72/tutor/tutor.sk.cp1250
-#usr/share/vim/vim72/tutor/tutor.sk.utf-8
-#usr/share/vim/vim72/tutor/tutor.sv
-#usr/share/vim/vim72/tutor/tutor.sv.utf-8
-#usr/share/vim/vim72/tutor/tutor.tr.iso9
-#usr/share/vim/vim72/tutor/tutor.tr.utf-8
-#usr/share/vim/vim72/tutor/tutor.utf-8
-#usr/share/vim/vim72/tutor/tutor.vi.utf-8
-#usr/share/vim/vim72/tutor/tutor.vim
-#usr/share/vim/vim72/tutor/tutor.zh.big5
-#usr/share/vim/vim72/tutor/tutor.zh.euc
-#usr/share/vim/vim72/tutor/tutor.zh.utf-8
-#usr/share/vim/vim72/vimrc_example.vim
+#usr/share/vim/vim74
+#usr/share/vim/vim74/autoload
+#usr/share/vim/vim74/autoload/README.txt
+#usr/share/vim/vim74/autoload/ada.vim
+#usr/share/vim/vim74/autoload/adacomplete.vim
+#usr/share/vim/vim74/autoload/ccomplete.vim
+#usr/share/vim/vim74/autoload/clojurecomplete.vim
+#usr/share/vim/vim74/autoload/csscomplete.vim
+#usr/share/vim/vim74/autoload/decada.vim
+#usr/share/vim/vim74/autoload/getscript.vim
+#usr/share/vim/vim74/autoload/gnat.vim
+#usr/share/vim/vim74/autoload/gzip.vim
+#usr/share/vim/vim74/autoload/htmlcomplete.vim
+#usr/share/vim/vim74/autoload/javascriptcomplete.vim
+#usr/share/vim/vim74/autoload/netrw.vim
+#usr/share/vim/vim74/autoload/netrwFileHandlers.vim
+#usr/share/vim/vim74/autoload/netrwSettings.vim
+#usr/share/vim/vim74/autoload/paste.vim
+#usr/share/vim/vim74/autoload/phpcomplete.vim
+#usr/share/vim/vim74/autoload/python3complete.vim
+#usr/share/vim/vim74/autoload/pythoncomplete.vim
+#usr/share/vim/vim74/autoload/rubycomplete.vim
+#usr/share/vim/vim74/autoload/spellfile.vim
+#usr/share/vim/vim74/autoload/sqlcomplete.vim
+#usr/share/vim/vim74/autoload/syntaxcomplete.vim
+#usr/share/vim/vim74/autoload/tar.vim
+#usr/share/vim/vim74/autoload/tohtml.vim
+#usr/share/vim/vim74/autoload/vimball.vim
+#usr/share/vim/vim74/autoload/xml
+#usr/share/vim/vim74/autoload/xml/html32.vim
+#usr/share/vim/vim74/autoload/xml/html401f.vim
+#usr/share/vim/vim74/autoload/xml/html401s.vim
+#usr/share/vim/vim74/autoload/xml/html401t.vim
+#usr/share/vim/vim74/autoload/xml/html40f.vim
+#usr/share/vim/vim74/autoload/xml/html40s.vim
+#usr/share/vim/vim74/autoload/xml/html40t.vim
+#usr/share/vim/vim74/autoload/xml/xhtml10f.vim
+#usr/share/vim/vim74/autoload/xml/xhtml10s.vim
+#usr/share/vim/vim74/autoload/xml/xhtml10t.vim
+#usr/share/vim/vim74/autoload/xml/xhtml11.vim
+#usr/share/vim/vim74/autoload/xml/xsd.vim
+#usr/share/vim/vim74/autoload/xml/xsl.vim
+#usr/share/vim/vim74/autoload/xmlcomplete.vim
+#usr/share/vim/vim74/autoload/zip.vim
+#usr/share/vim/vim74/bugreport.vim
+#usr/share/vim/vim74/colors
+#usr/share/vim/vim74/colors/README.txt
+#usr/share/vim/vim74/colors/blue.vim
+#usr/share/vim/vim74/colors/darkblue.vim
+#usr/share/vim/vim74/colors/default.vim
+#usr/share/vim/vim74/colors/delek.vim
+#usr/share/vim/vim74/colors/desert.vim
+#usr/share/vim/vim74/colors/elflord.vim
+#usr/share/vim/vim74/colors/evening.vim
+#usr/share/vim/vim74/colors/koehler.vim
+#usr/share/vim/vim74/colors/morning.vim
+#usr/share/vim/vim74/colors/murphy.vim
+#usr/share/vim/vim74/colors/pablo.vim
+#usr/share/vim/vim74/colors/peachpuff.vim
+#usr/share/vim/vim74/colors/ron.vim
+#usr/share/vim/vim74/colors/shine.vim
+#usr/share/vim/vim74/colors/slate.vim
+#usr/share/vim/vim74/colors/torte.vim
+#usr/share/vim/vim74/colors/zellner.vim
+#usr/share/vim/vim74/compiler
+#usr/share/vim/vim74/compiler/README.txt
+#usr/share/vim/vim74/compiler/ant.vim
+#usr/share/vim/vim74/compiler/bcc.vim
+#usr/share/vim/vim74/compiler/bdf.vim
+#usr/share/vim/vim74/compiler/checkstyle.vim
+#usr/share/vim/vim74/compiler/cs.vim
+#usr/share/vim/vim74/compiler/cucumber.vim
+#usr/share/vim/vim74/compiler/decada.vim
+#usr/share/vim/vim74/compiler/dot.vim
+#usr/share/vim/vim74/compiler/erlang.vim
+#usr/share/vim/vim74/compiler/eruby.vim
+#usr/share/vim/vim74/compiler/fortran_F.vim
+#usr/share/vim/vim74/compiler/fortran_cv.vim
+#usr/share/vim/vim74/compiler/fortran_elf90.vim
+#usr/share/vim/vim74/compiler/fortran_g77.vim
+#usr/share/vim/vim74/compiler/fortran_lf95.vim
+#usr/share/vim/vim74/compiler/fpc.vim
+#usr/share/vim/vim74/compiler/g95.vim
+#usr/share/vim/vim74/compiler/gcc.vim
+#usr/share/vim/vim74/compiler/gfortran.vim
+#usr/share/vim/vim74/compiler/gnat.vim
+#usr/share/vim/vim74/compiler/haml.vim
+#usr/share/vim/vim74/compiler/hp_acc.vim
+#usr/share/vim/vim74/compiler/icc.vim
+#usr/share/vim/vim74/compiler/ifort.vim
+#usr/share/vim/vim74/compiler/intel.vim
+#usr/share/vim/vim74/compiler/irix5_c.vim
+#usr/share/vim/vim74/compiler/irix5_cpp.vim
+#usr/share/vim/vim74/compiler/javac.vim
+#usr/share/vim/vim74/compiler/jikes.vim
+#usr/share/vim/vim74/compiler/mcs.vim
+#usr/share/vim/vim74/compiler/mips_c.vim
+#usr/share/vim/vim74/compiler/mipspro_c89.vim
+#usr/share/vim/vim74/compiler/mipspro_cpp.vim
+#usr/share/vim/vim74/compiler/modelsim_vcom.vim
+#usr/share/vim/vim74/compiler/msbuild.vim
+#usr/share/vim/vim74/compiler/msvc.vim
+#usr/share/vim/vim74/compiler/neato.vim
+#usr/share/vim/vim74/compiler/ocaml.vim
+#usr/share/vim/vim74/compiler/onsgmls.vim
+#usr/share/vim/vim74/compiler/pbx.vim
+#usr/share/vim/vim74/compiler/perl.vim
+#usr/share/vim/vim74/compiler/php.vim
+#usr/share/vim/vim74/compiler/pyunit.vim
+#usr/share/vim/vim74/compiler/rake.vim
+#usr/share/vim/vim74/compiler/rspec.vim
+#usr/share/vim/vim74/compiler/rst.vim
+#usr/share/vim/vim74/compiler/ruby.vim
+#usr/share/vim/vim74/compiler/rubyunit.vim
+#usr/share/vim/vim74/compiler/sass.vim
+#usr/share/vim/vim74/compiler/se.vim
+#usr/share/vim/vim74/compiler/splint.vim
+#usr/share/vim/vim74/compiler/tcl.vim
+#usr/share/vim/vim74/compiler/tex.vim
+#usr/share/vim/vim74/compiler/tidy.vim
+#usr/share/vim/vim74/compiler/xbuild.vim
+#usr/share/vim/vim74/compiler/xmllint.vim
+#usr/share/vim/vim74/compiler/xmlwf.vim
+#usr/share/vim/vim74/delmenu.vim
+#usr/share/vim/vim74/doc
+#usr/share/vim/vim74/doc/arabic.txt
+#usr/share/vim/vim74/doc/autocmd.txt
+#usr/share/vim/vim74/doc/change.txt
+#usr/share/vim/vim74/doc/cmdline.txt
+#usr/share/vim/vim74/doc/debug.txt
+#usr/share/vim/vim74/doc/debugger.txt
+#usr/share/vim/vim74/doc/develop.txt
+#usr/share/vim/vim74/doc/diff.txt
+#usr/share/vim/vim74/doc/digraph.txt
+#usr/share/vim/vim74/doc/editing.txt
+#usr/share/vim/vim74/doc/eval.txt
+#usr/share/vim/vim74/doc/farsi.txt
+#usr/share/vim/vim74/doc/filetype.txt
+#usr/share/vim/vim74/doc/fold.txt
+#usr/share/vim/vim74/doc/ft_ada.txt
+#usr/share/vim/vim74/doc/ft_sql.txt
+#usr/share/vim/vim74/doc/gui.txt
+#usr/share/vim/vim74/doc/gui_w16.txt
+#usr/share/vim/vim74/doc/gui_w32.txt
+#usr/share/vim/vim74/doc/gui_x11.txt
+#usr/share/vim/vim74/doc/hangulin.txt
+#usr/share/vim/vim74/doc/hebrew.txt
+#usr/share/vim/vim74/doc/help.txt
+#usr/share/vim/vim74/doc/helphelp.txt
+#usr/share/vim/vim74/doc/howto.txt
+#usr/share/vim/vim74/doc/if_cscop.txt
+#usr/share/vim/vim74/doc/if_lua.txt
+#usr/share/vim/vim74/doc/if_mzsch.txt
+#usr/share/vim/vim74/doc/if_ole.txt
+#usr/share/vim/vim74/doc/if_perl.txt
+#usr/share/vim/vim74/doc/if_pyth.txt
+#usr/share/vim/vim74/doc/if_ruby.txt
+#usr/share/vim/vim74/doc/if_sniff.txt
+#usr/share/vim/vim74/doc/if_tcl.txt
+#usr/share/vim/vim74/doc/indent.txt
+#usr/share/vim/vim74/doc/index.txt
+#usr/share/vim/vim74/doc/insert.txt
+#usr/share/vim/vim74/doc/intro.txt
+#usr/share/vim/vim74/doc/map.txt
+#usr/share/vim/vim74/doc/mbyte.txt
+#usr/share/vim/vim74/doc/message.txt
+#usr/share/vim/vim74/doc/mlang.txt
+#usr/share/vim/vim74/doc/motion.txt
+#usr/share/vim/vim74/doc/netbeans.txt
+#usr/share/vim/vim74/doc/options.txt
+#usr/share/vim/vim74/doc/os_390.txt
+#usr/share/vim/vim74/doc/os_amiga.txt
+#usr/share/vim/vim74/doc/os_beos.txt
+#usr/share/vim/vim74/doc/os_dos.txt
+#usr/share/vim/vim74/doc/os_mac.txt
+#usr/share/vim/vim74/doc/os_mint.txt
+#usr/share/vim/vim74/doc/os_msdos.txt
+#usr/share/vim/vim74/doc/os_os2.txt
+#usr/share/vim/vim74/doc/os_qnx.txt
+#usr/share/vim/vim74/doc/os_risc.txt
+#usr/share/vim/vim74/doc/os_unix.txt
+#usr/share/vim/vim74/doc/os_vms.txt
+#usr/share/vim/vim74/doc/os_win32.txt
+#usr/share/vim/vim74/doc/pattern.txt
+#usr/share/vim/vim74/doc/pi_getscript.txt
+#usr/share/vim/vim74/doc/pi_gzip.txt
+#usr/share/vim/vim74/doc/pi_netrw.txt
+#usr/share/vim/vim74/doc/pi_paren.txt
+#usr/share/vim/vim74/doc/pi_spec.txt
+#usr/share/vim/vim74/doc/pi_tar.txt
+#usr/share/vim/vim74/doc/pi_vimball.txt
+#usr/share/vim/vim74/doc/pi_zip.txt
+#usr/share/vim/vim74/doc/print.txt
+#usr/share/vim/vim74/doc/quickfix.txt
+#usr/share/vim/vim74/doc/quickref.txt
+#usr/share/vim/vim74/doc/quotes.txt
+#usr/share/vim/vim74/doc/recover.txt
+#usr/share/vim/vim74/doc/remote.txt
+#usr/share/vim/vim74/doc/repeat.txt
+#usr/share/vim/vim74/doc/rileft.txt
+#usr/share/vim/vim74/doc/russian.txt
+#usr/share/vim/vim74/doc/scroll.txt
+#usr/share/vim/vim74/doc/sign.txt
+#usr/share/vim/vim74/doc/spell.txt
+#usr/share/vim/vim74/doc/sponsor.txt
+#usr/share/vim/vim74/doc/starting.txt
+#usr/share/vim/vim74/doc/syntax.txt
+#usr/share/vim/vim74/doc/tabpage.txt
+#usr/share/vim/vim74/doc/tags
+#usr/share/vim/vim74/doc/tagsrch.txt
+#usr/share/vim/vim74/doc/term.txt
+#usr/share/vim/vim74/doc/tips.txt
+#usr/share/vim/vim74/doc/todo.txt
+#usr/share/vim/vim74/doc/uganda.txt
+#usr/share/vim/vim74/doc/undo.txt
+#usr/share/vim/vim74/doc/usr_01.txt
+#usr/share/vim/vim74/doc/usr_02.txt
+#usr/share/vim/vim74/doc/usr_03.txt
+#usr/share/vim/vim74/doc/usr_04.txt
+#usr/share/vim/vim74/doc/usr_05.txt
+#usr/share/vim/vim74/doc/usr_06.txt
+#usr/share/vim/vim74/doc/usr_07.txt
+#usr/share/vim/vim74/doc/usr_08.txt
+#usr/share/vim/vim74/doc/usr_09.txt
+#usr/share/vim/vim74/doc/usr_10.txt
+#usr/share/vim/vim74/doc/usr_11.txt
+#usr/share/vim/vim74/doc/usr_12.txt
+#usr/share/vim/vim74/doc/usr_20.txt
+#usr/share/vim/vim74/doc/usr_21.txt
+#usr/share/vim/vim74/doc/usr_22.txt
+#usr/share/vim/vim74/doc/usr_23.txt
+#usr/share/vim/vim74/doc/usr_24.txt
+#usr/share/vim/vim74/doc/usr_25.txt
+#usr/share/vim/vim74/doc/usr_26.txt
+#usr/share/vim/vim74/doc/usr_27.txt
+#usr/share/vim/vim74/doc/usr_28.txt
+#usr/share/vim/vim74/doc/usr_29.txt
+#usr/share/vim/vim74/doc/usr_30.txt
+#usr/share/vim/vim74/doc/usr_31.txt
+#usr/share/vim/vim74/doc/usr_32.txt
+#usr/share/vim/vim74/doc/usr_40.txt
+#usr/share/vim/vim74/doc/usr_41.txt
+#usr/share/vim/vim74/doc/usr_42.txt
+#usr/share/vim/vim74/doc/usr_43.txt
+#usr/share/vim/vim74/doc/usr_44.txt
+#usr/share/vim/vim74/doc/usr_45.txt
+#usr/share/vim/vim74/doc/usr_90.txt
+#usr/share/vim/vim74/doc/usr_toc.txt
+#usr/share/vim/vim74/doc/various.txt
+#usr/share/vim/vim74/doc/version4.txt
+#usr/share/vim/vim74/doc/version5.txt
+#usr/share/vim/vim74/doc/version6.txt
+#usr/share/vim/vim74/doc/version7.txt
+#usr/share/vim/vim74/doc/vi_diff.txt
+#usr/share/vim/vim74/doc/vim2html.pl
+#usr/share/vim/vim74/doc/visual.txt
+#usr/share/vim/vim74/doc/windows.txt
+#usr/share/vim/vim74/doc/workshop.txt
+#usr/share/vim/vim74/evim.vim
+#usr/share/vim/vim74/filetype.vim
+#usr/share/vim/vim74/ftoff.vim
+#usr/share/vim/vim74/ftplugin
+#usr/share/vim/vim74/ftplugin.vim
+#usr/share/vim/vim74/ftplugin/README.txt
+#usr/share/vim/vim74/ftplugin/a2ps.vim
+#usr/share/vim/vim74/ftplugin/aap.vim
+#usr/share/vim/vim74/ftplugin/abap.vim
+#usr/share/vim/vim74/ftplugin/abaqus.vim
+#usr/share/vim/vim74/ftplugin/ada.vim
+#usr/share/vim/vim74/ftplugin/alsaconf.vim
+#usr/share/vim/vim74/ftplugin/ant.vim
+#usr/share/vim/vim74/ftplugin/arch.vim
+#usr/share/vim/vim74/ftplugin/art.vim
+#usr/share/vim/vim74/ftplugin/aspvbs.vim
+#usr/share/vim/vim74/ftplugin/automake.vim
+#usr/share/vim/vim74/ftplugin/bdf.vim
+#usr/share/vim/vim74/ftplugin/bst.vim
+#usr/share/vim/vim74/ftplugin/btm.vim
+#usr/share/vim/vim74/ftplugin/c.vim
+#usr/share/vim/vim74/ftplugin/calendar.vim
+#usr/share/vim/vim74/ftplugin/cdrdaoconf.vim
+#usr/share/vim/vim74/ftplugin/ch.vim
+#usr/share/vim/vim74/ftplugin/changelog.vim
+#usr/share/vim/vim74/ftplugin/clojure.vim
+#usr/share/vim/vim74/ftplugin/cobol.vim
+#usr/share/vim/vim74/ftplugin/conf.vim
+#usr/share/vim/vim74/ftplugin/config.vim
+#usr/share/vim/vim74/ftplugin/context.vim
+#usr/share/vim/vim74/ftplugin/cpp.vim
+#usr/share/vim/vim74/ftplugin/crm.vim
+#usr/share/vim/vim74/ftplugin/cs.vim
+#usr/share/vim/vim74/ftplugin/csc.vim
+#usr/share/vim/vim74/ftplugin/csh.vim
+#usr/share/vim/vim74/ftplugin/css.vim
+#usr/share/vim/vim74/ftplugin/cucumber.vim
+#usr/share/vim/vim74/ftplugin/cvsrc.vim
+#usr/share/vim/vim74/ftplugin/debchangelog.vim
+#usr/share/vim/vim74/ftplugin/debcontrol.vim
+#usr/share/vim/vim74/ftplugin/denyhosts.vim
+#usr/share/vim/vim74/ftplugin/dictconf.vim
+#usr/share/vim/vim74/ftplugin/dictdconf.vim
+#usr/share/vim/vim74/ftplugin/diff.vim
+#usr/share/vim/vim74/ftplugin/dircolors.vim
+#usr/share/vim/vim74/ftplugin/docbk.vim
+#usr/share/vim/vim74/ftplugin/dosbatch.vim
+#usr/share/vim/vim74/ftplugin/dosini.vim
+#usr/share/vim/vim74/ftplugin/dtd.vim
+#usr/share/vim/vim74/ftplugin/dtrace.vim
+#usr/share/vim/vim74/ftplugin/elinks.vim
+#usr/share/vim/vim74/ftplugin/erlang.vim
+#usr/share/vim/vim74/ftplugin/eruby.vim
+#usr/share/vim/vim74/ftplugin/eterm.vim
+#usr/share/vim/vim74/ftplugin/falcon.vim
+#usr/share/vim/vim74/ftplugin/fetchmail.vim
+#usr/share/vim/vim74/ftplugin/flexwiki.vim
+#usr/share/vim/vim74/ftplugin/fortran.vim
+#usr/share/vim/vim74/ftplugin/framescript.vim
+#usr/share/vim/vim74/ftplugin/fvwm.vim
+#usr/share/vim/vim74/ftplugin/git.vim
+#usr/share/vim/vim74/ftplugin/gitcommit.vim
+#usr/share/vim/vim74/ftplugin/gitconfig.vim
+#usr/share/vim/vim74/ftplugin/gitrebase.vim
+#usr/share/vim/vim74/ftplugin/gitsendemail.vim
+#usr/share/vim/vim74/ftplugin/gpg.vim
+#usr/share/vim/vim74/ftplugin/gprof.vim
+#usr/share/vim/vim74/ftplugin/group.vim
+#usr/share/vim/vim74/ftplugin/grub.vim
+#usr/share/vim/vim74/ftplugin/haml.vim
+#usr/share/vim/vim74/ftplugin/hamster.vim
+#usr/share/vim/vim74/ftplugin/haskell.vim
+#usr/share/vim/vim74/ftplugin/help.vim
+#usr/share/vim/vim74/ftplugin/hostconf.vim
+#usr/share/vim/vim74/ftplugin/hostsaccess.vim
+#usr/share/vim/vim74/ftplugin/html.vim
+#usr/share/vim/vim74/ftplugin/htmldjango.vim
+#usr/share/vim/vim74/ftplugin/indent.vim
+#usr/share/vim/vim74/ftplugin/initex.vim
+#usr/share/vim/vim74/ftplugin/ishd.vim
+#usr/share/vim/vim74/ftplugin/java.vim
+#usr/share/vim/vim74/ftplugin/javascript.vim
+#usr/share/vim/vim74/ftplugin/jsp.vim
+#usr/share/vim/vim74/ftplugin/kconfig.vim
+#usr/share/vim/vim74/ftplugin/kwt.vim
+#usr/share/vim/vim74/ftplugin/ld.vim
+#usr/share/vim/vim74/ftplugin/lftp.vim
+#usr/share/vim/vim74/ftplugin/libao.vim
+#usr/share/vim/vim74/ftplugin/limits.vim
+#usr/share/vim/vim74/ftplugin/liquid.vim
+#usr/share/vim/vim74/ftplugin/lisp.vim
+#usr/share/vim/vim74/ftplugin/logcheck.vim
+#usr/share/vim/vim74/ftplugin/loginaccess.vim
+#usr/share/vim/vim74/ftplugin/logindefs.vim
+#usr/share/vim/vim74/ftplugin/logtalk.dict
+#usr/share/vim/vim74/ftplugin/logtalk.vim
+#usr/share/vim/vim74/ftplugin/lprolog.vim
+#usr/share/vim/vim74/ftplugin/lua.vim
+#usr/share/vim/vim74/ftplugin/m4.vim
+#usr/share/vim/vim74/ftplugin/mail.vim
+#usr/share/vim/vim74/ftplugin/mailaliases.vim
+#usr/share/vim/vim74/ftplugin/mailcap.vim
+#usr/share/vim/vim74/ftplugin/make.vim
+#usr/share/vim/vim74/ftplugin/man.vim
+#usr/share/vim/vim74/ftplugin/manconf.vim
+#usr/share/vim/vim74/ftplugin/markdown.vim
+#usr/share/vim/vim74/ftplugin/matlab.vim
+#usr/share/vim/vim74/ftplugin/mf.vim
+#usr/share/vim/vim74/ftplugin/modconf.vim
+#usr/share/vim/vim74/ftplugin/mp.vim
+#usr/share/vim/vim74/ftplugin/mplayerconf.vim
+#usr/share/vim/vim74/ftplugin/mrxvtrc.vim
+#usr/share/vim/vim74/ftplugin/msmessages.vim
+#usr/share/vim/vim74/ftplugin/muttrc.vim
+#usr/share/vim/vim74/ftplugin/nanorc.vim
+#usr/share/vim/vim74/ftplugin/netrc.vim
+#usr/share/vim/vim74/ftplugin/nsis.vim
+#usr/share/vim/vim74/ftplugin/objc.vim
+#usr/share/vim/vim74/ftplugin/ocaml.vim
+#usr/share/vim/vim74/ftplugin/occam.vim
+#usr/share/vim/vim74/ftplugin/pamconf.vim
+#usr/share/vim/vim74/ftplugin/pascal.vim
+#usr/share/vim/vim74/ftplugin/passwd.vim
+#usr/share/vim/vim74/ftplugin/pdf.vim
+#usr/share/vim/vim74/ftplugin/perl.vim
+#usr/share/vim/vim74/ftplugin/perl6.vim
+#usr/share/vim/vim74/ftplugin/php.vim
+#usr/share/vim/vim74/ftplugin/pinfo.vim
+#usr/share/vim/vim74/ftplugin/plaintex.vim
+#usr/share/vim/vim74/ftplugin/postscr.vim
+#usr/share/vim/vim74/ftplugin/procmail.vim
+#usr/share/vim/vim74/ftplugin/prolog.vim
+#usr/share/vim/vim74/ftplugin/protocols.vim
+#usr/share/vim/vim74/ftplugin/pyrex.vim
+#usr/share/vim/vim74/ftplugin/python.vim
+#usr/share/vim/vim74/ftplugin/qf.vim
+#usr/share/vim/vim74/ftplugin/quake.vim
+#usr/share/vim/vim74/ftplugin/racc.vim
+#usr/share/vim/vim74/ftplugin/readline.vim
+#usr/share/vim/vim74/ftplugin/reva.vim
+#usr/share/vim/vim74/ftplugin/rnc.vim
+#usr/share/vim/vim74/ftplugin/rpl.vim
+#usr/share/vim/vim74/ftplugin/rst.vim
+#usr/share/vim/vim74/ftplugin/ruby.vim
+#usr/share/vim/vim74/ftplugin/sass.vim
+#usr/share/vim/vim74/ftplugin/scheme.vim
+#usr/share/vim/vim74/ftplugin/screen.vim
+#usr/share/vim/vim74/ftplugin/scss.vim
+#usr/share/vim/vim74/ftplugin/sensors.vim
+#usr/share/vim/vim74/ftplugin/services.vim
+#usr/share/vim/vim74/ftplugin/setserial.vim
+#usr/share/vim/vim74/ftplugin/sgml.vim
+#usr/share/vim/vim74/ftplugin/sh.vim
+#usr/share/vim/vim74/ftplugin/sieve.vim
+#usr/share/vim/vim74/ftplugin/slpconf.vim
+#usr/share/vim/vim74/ftplugin/slpreg.vim
+#usr/share/vim/vim74/ftplugin/slpspi.vim
+#usr/share/vim/vim74/ftplugin/spec.vim
+#usr/share/vim/vim74/ftplugin/sql.vim
+#usr/share/vim/vim74/ftplugin/sshconfig.vim
+#usr/share/vim/vim74/ftplugin/sudoers.vim
+#usr/share/vim/vim74/ftplugin/svg.vim
+#usr/share/vim/vim74/ftplugin/sysctl.vim
+#usr/share/vim/vim74/ftplugin/tcl.vim
+#usr/share/vim/vim74/ftplugin/tcsh.vim
+#usr/share/vim/vim74/ftplugin/terminfo.vim
+#usr/share/vim/vim74/ftplugin/tex.vim
+#usr/share/vim/vim74/ftplugin/treetop.vim
+#usr/share/vim/vim74/ftplugin/tt2html.vim
+#usr/share/vim/vim74/ftplugin/udevconf.vim
+#usr/share/vim/vim74/ftplugin/udevperm.vim
+#usr/share/vim/vim74/ftplugin/udevrules.vim
+#usr/share/vim/vim74/ftplugin/updatedb.vim
+#usr/share/vim/vim74/ftplugin/vb.vim
+#usr/share/vim/vim74/ftplugin/verilog.vim
+#usr/share/vim/vim74/ftplugin/vhdl.vim
+#usr/share/vim/vim74/ftplugin/vim.vim
+#usr/share/vim/vim74/ftplugin/xdefaults.vim
+#usr/share/vim/vim74/ftplugin/xf86conf.vim
+#usr/share/vim/vim74/ftplugin/xhtml.vim
+#usr/share/vim/vim74/ftplugin/xinetd.vim
+#usr/share/vim/vim74/ftplugin/xml.vim
+#usr/share/vim/vim74/ftplugin/xmodmap.vim
+#usr/share/vim/vim74/ftplugin/xs.vim
+#usr/share/vim/vim74/ftplugin/xsd.vim
+#usr/share/vim/vim74/ftplugin/xslt.vim
+#usr/share/vim/vim74/ftplugin/yaml.vim
+#usr/share/vim/vim74/ftplugin/zimbu.vim
+#usr/share/vim/vim74/ftplugin/zsh.vim
+#usr/share/vim/vim74/ftplugof.vim
+#usr/share/vim/vim74/gvimrc_example.vim
+#usr/share/vim/vim74/indent
+#usr/share/vim/vim74/indent.vim
+#usr/share/vim/vim74/indent/README.txt
+#usr/share/vim/vim74/indent/aap.vim
+#usr/share/vim/vim74/indent/ada.vim
+#usr/share/vim/vim74/indent/ant.vim
+#usr/share/vim/vim74/indent/automake.vim
+#usr/share/vim/vim74/indent/awk.vim
+#usr/share/vim/vim74/indent/bib.vim
+#usr/share/vim/vim74/indent/bst.vim
+#usr/share/vim/vim74/indent/c.vim
+#usr/share/vim/vim74/indent/cdl.vim
+#usr/share/vim/vim74/indent/ch.vim
+#usr/share/vim/vim74/indent/chaiscript.vim
+#usr/share/vim/vim74/indent/changelog.vim
+#usr/share/vim/vim74/indent/clojure.vim
+#usr/share/vim/vim74/indent/cmake.vim
+#usr/share/vim/vim74/indent/cobol.vim
+#usr/share/vim/vim74/indent/config.vim
+#usr/share/vim/vim74/indent/cpp.vim
+#usr/share/vim/vim74/indent/cs.vim
+#usr/share/vim/vim74/indent/css.vim
+#usr/share/vim/vim74/indent/cucumber.vim
+#usr/share/vim/vim74/indent/cuda.vim
+#usr/share/vim/vim74/indent/d.vim
+#usr/share/vim/vim74/indent/dictconf.vim
+#usr/share/vim/vim74/indent/dictdconf.vim
+#usr/share/vim/vim74/indent/docbk.vim
+#usr/share/vim/vim74/indent/dtd.vim
+#usr/share/vim/vim74/indent/dtrace.vim
+#usr/share/vim/vim74/indent/dylan.vim
+#usr/share/vim/vim74/indent/eiffel.vim
+#usr/share/vim/vim74/indent/erlang.vim
+#usr/share/vim/vim74/indent/eruby.vim
+#usr/share/vim/vim74/indent/eterm.vim
+#usr/share/vim/vim74/indent/falcon.vim
+#usr/share/vim/vim74/indent/fortran.vim
+#usr/share/vim/vim74/indent/framescript.vim
+#usr/share/vim/vim74/indent/gitconfig.vim
+#usr/share/vim/vim74/indent/gitolite.vim
+#usr/share/vim/vim74/indent/haml.vim
+#usr/share/vim/vim74/indent/hamster.vim
+#usr/share/vim/vim74/indent/html.vim
+#usr/share/vim/vim74/indent/htmldjango.vim
+#usr/share/vim/vim74/indent/idlang.vim
+#usr/share/vim/vim74/indent/ishd.vim
+#usr/share/vim/vim74/indent/java.vim
+#usr/share/vim/vim74/indent/javascript.vim
+#usr/share/vim/vim74/indent/jsp.vim
+#usr/share/vim/vim74/indent/ld.vim
+#usr/share/vim/vim74/indent/lifelines.vim
+#usr/share/vim/vim74/indent/liquid.vim
+#usr/share/vim/vim74/indent/lisp.vim
+#usr/share/vim/vim74/indent/logtalk.vim
+#usr/share/vim/vim74/indent/lua.vim
+#usr/share/vim/vim74/indent/mail.vim
+#usr/share/vim/vim74/indent/make.vim
+#usr/share/vim/vim74/indent/matlab.vim
+#usr/share/vim/vim74/indent/mma.vim
+#usr/share/vim/vim74/indent/mp.vim
+#usr/share/vim/vim74/indent/objc.vim
+#usr/share/vim/vim74/indent/ocaml.vim
+#usr/share/vim/vim74/indent/occam.vim
+#usr/share/vim/vim74/indent/pascal.vim
+#usr/share/vim/vim74/indent/perl.vim
+#usr/share/vim/vim74/indent/perl6.vim
+#usr/share/vim/vim74/indent/php.vim
+#usr/share/vim/vim74/indent/postscr.vim
+#usr/share/vim/vim74/indent/pov.vim
+#usr/share/vim/vim74/indent/prolog.vim
+#usr/share/vim/vim74/indent/pyrex.vim
+#usr/share/vim/vim74/indent/python.vim
+#usr/share/vim/vim74/indent/r.vim
+#usr/share/vim/vim74/indent/readline.vim
+#usr/share/vim/vim74/indent/rpl.vim
+#usr/share/vim/vim74/indent/rst.vim
+#usr/share/vim/vim74/indent/ruby.vim
+#usr/share/vim/vim74/indent/sass.vim
+#usr/share/vim/vim74/indent/scheme.vim
+#usr/share/vim/vim74/indent/scss.vim
+#usr/share/vim/vim74/indent/sdl.vim
+#usr/share/vim/vim74/indent/sh.vim
+#usr/share/vim/vim74/indent/sml.vim
+#usr/share/vim/vim74/indent/sql.vim
+#usr/share/vim/vim74/indent/sqlanywhere.vim
+#usr/share/vim/vim74/indent/tcl.vim
+#usr/share/vim/vim74/indent/tcsh.vim
+#usr/share/vim/vim74/indent/tex.vim
+#usr/share/vim/vim74/indent/tf.vim
+#usr/share/vim/vim74/indent/tilde.vim
+#usr/share/vim/vim74/indent/treetop.vim
+#usr/share/vim/vim74/indent/vb.vim
+#usr/share/vim/vim74/indent/verilog.vim
+#usr/share/vim/vim74/indent/vhdl.vim
+#usr/share/vim/vim74/indent/vim.vim
+#usr/share/vim/vim74/indent/xf86conf.vim
+#usr/share/vim/vim74/indent/xhtml.vim
+#usr/share/vim/vim74/indent/xinetd.vim
+#usr/share/vim/vim74/indent/xml.vim
+#usr/share/vim/vim74/indent/xsd.vim
+#usr/share/vim/vim74/indent/xslt.vim
+#usr/share/vim/vim74/indent/yacc.vim
+#usr/share/vim/vim74/indent/yaml.vim
+#usr/share/vim/vim74/indent/zimbu.vim
+#usr/share/vim/vim74/indent/zsh.vim
+#usr/share/vim/vim74/indoff.vim
+#usr/share/vim/vim74/macros
+#usr/share/vim/vim74/macros/README.txt
+#usr/share/vim/vim74/macros/dvorak
+#usr/share/vim/vim74/macros/editexisting.vim
+#usr/share/vim/vim74/macros/hanoi
+#usr/share/vim/vim74/macros/hanoi/click.me
+#usr/share/vim/vim74/macros/hanoi/hanoi.vim
+#usr/share/vim/vim74/macros/hanoi/poster
+#usr/share/vim/vim74/macros/justify.vim
+#usr/share/vim/vim74/macros/less.bat
+#usr/share/vim/vim74/macros/less.sh
+#usr/share/vim/vim74/macros/less.vim
+#usr/share/vim/vim74/macros/life
+#usr/share/vim/vim74/macros/life/click.me
+#usr/share/vim/vim74/macros/life/life.vim
+#usr/share/vim/vim74/macros/matchit.txt
+#usr/share/vim/vim74/macros/matchit.vim
+#usr/share/vim/vim74/macros/maze
+#usr/share/vim/vim74/macros/maze/Makefile
+#usr/share/vim/vim74/macros/maze/README.txt
+#usr/share/vim/vim74/macros/maze/main.aap
+#usr/share/vim/vim74/macros/maze/maze.c
+#usr/share/vim/vim74/macros/maze/maze_5.78
+#usr/share/vim/vim74/macros/maze/maze_mac
+#usr/share/vim/vim74/macros/maze/mazeansi.c
+#usr/share/vim/vim74/macros/maze/mazeclean.c
+#usr/share/vim/vim74/macros/maze/poster
+#usr/share/vim/vim74/macros/shellmenu.vim
+#usr/share/vim/vim74/macros/swapmous.vim
+#usr/share/vim/vim74/macros/urm
+#usr/share/vim/vim74/macros/urm/README.txt
+#usr/share/vim/vim74/macros/urm/examples
+#usr/share/vim/vim74/macros/urm/urm
+#usr/share/vim/vim74/macros/urm/urm.vim
+#usr/share/vim/vim74/menu.vim
+#usr/share/vim/vim74/mswin.vim
+#usr/share/vim/vim74/optwin.vim
+#usr/share/vim/vim74/plugin
+#usr/share/vim/vim74/plugin/README.txt
+#usr/share/vim/vim74/plugin/getscriptPlugin.vim
+#usr/share/vim/vim74/plugin/gzip.vim
+#usr/share/vim/vim74/plugin/matchparen.vim
+#usr/share/vim/vim74/plugin/netrwPlugin.vim
+#usr/share/vim/vim74/plugin/rrhelper.vim
+#usr/share/vim/vim74/plugin/spellfile.vim
+#usr/share/vim/vim74/plugin/tarPlugin.vim
+#usr/share/vim/vim74/plugin/tohtml.vim
+#usr/share/vim/vim74/plugin/vimballPlugin.vim
+#usr/share/vim/vim74/plugin/zipPlugin.vim
+#usr/share/vim/vim74/print
+#usr/share/vim/vim74/print/ascii.ps
+#usr/share/vim/vim74/print/cidfont.ps
+#usr/share/vim/vim74/print/cns_roman.ps
+#usr/share/vim/vim74/print/cp1250.ps
+#usr/share/vim/vim74/print/cp1251.ps
+#usr/share/vim/vim74/print/cp1252.ps
+#usr/share/vim/vim74/print/cp1253.ps
+#usr/share/vim/vim74/print/cp1254.ps
+#usr/share/vim/vim74/print/cp1255.ps
+#usr/share/vim/vim74/print/cp1257.ps
+#usr/share/vim/vim74/print/dec-mcs.ps
+#usr/share/vim/vim74/print/ebcdic-uk.ps
+#usr/share/vim/vim74/print/gb_roman.ps
+#usr/share/vim/vim74/print/hp-roman8.ps
+#usr/share/vim/vim74/print/iso-8859-10.ps
+#usr/share/vim/vim74/print/iso-8859-11.ps
+#usr/share/vim/vim74/print/iso-8859-13.ps
+#usr/share/vim/vim74/print/iso-8859-14.ps
+#usr/share/vim/vim74/print/iso-8859-15.ps
+#usr/share/vim/vim74/print/iso-8859-2.ps
+#usr/share/vim/vim74/print/iso-8859-3.ps
+#usr/share/vim/vim74/print/iso-8859-4.ps
+#usr/share/vim/vim74/print/iso-8859-5.ps
+#usr/share/vim/vim74/print/iso-8859-7.ps
+#usr/share/vim/vim74/print/iso-8859-8.ps
+#usr/share/vim/vim74/print/iso-8859-9.ps
+#usr/share/vim/vim74/print/jis_roman.ps
+#usr/share/vim/vim74/print/koi8-r.ps
+#usr/share/vim/vim74/print/koi8-u.ps
+#usr/share/vim/vim74/print/ks_roman.ps
+#usr/share/vim/vim74/print/latin1.ps
+#usr/share/vim/vim74/print/mac-roman.ps
+#usr/share/vim/vim74/print/prolog.ps
+#usr/share/vim/vim74/scripts.vim
+#usr/share/vim/vim74/spell
+#usr/share/vim/vim74/spell/check_locales.vim
+#usr/share/vim/vim74/spell/cleanadd.vim
+#usr/share/vim/vim74/spell/en.ascii.spl
+#usr/share/vim/vim74/spell/en.ascii.sug
+#usr/share/vim/vim74/spell/en.latin1.spl
+#usr/share/vim/vim74/spell/en.latin1.sug
+#usr/share/vim/vim74/spell/en.utf-8.spl
+#usr/share/vim/vim74/spell/en.utf-8.sug
+#usr/share/vim/vim74/spell/fixdup.vim
+#usr/share/vim/vim74/spell/he.vim
+#usr/share/vim/vim74/spell/spell.vim
+#usr/share/vim/vim74/spell/yi.vim
+#usr/share/vim/vim74/synmenu.vim
+#usr/share/vim/vim74/syntax
+#usr/share/vim/vim74/syntax/2html.vim
+#usr/share/vim/vim74/syntax/README.txt
+#usr/share/vim/vim74/syntax/a2ps.vim
+#usr/share/vim/vim74/syntax/a65.vim
+#usr/share/vim/vim74/syntax/aap.vim
+#usr/share/vim/vim74/syntax/abap.vim
+#usr/share/vim/vim74/syntax/abaqus.vim
+#usr/share/vim/vim74/syntax/abc.vim
+#usr/share/vim/vim74/syntax/abel.vim
+#usr/share/vim/vim74/syntax/acedb.vim
+#usr/share/vim/vim74/syntax/ada.vim
+#usr/share/vim/vim74/syntax/aflex.vim
+#usr/share/vim/vim74/syntax/ahdl.vim
+#usr/share/vim/vim74/syntax/alsaconf.vim
+#usr/share/vim/vim74/syntax/amiga.vim
+#usr/share/vim/vim74/syntax/aml.vim
+#usr/share/vim/vim74/syntax/ampl.vim
+#usr/share/vim/vim74/syntax/ant.vim
+#usr/share/vim/vim74/syntax/antlr.vim
+#usr/share/vim/vim74/syntax/apache.vim
+#usr/share/vim/vim74/syntax/apachestyle.vim
+#usr/share/vim/vim74/syntax/aptconf.vim
+#usr/share/vim/vim74/syntax/arch.vim
+#usr/share/vim/vim74/syntax/art.vim
+#usr/share/vim/vim74/syntax/asciidoc.vim
+#usr/share/vim/vim74/syntax/asm.vim
+#usr/share/vim/vim74/syntax/asm68k.vim
+#usr/share/vim/vim74/syntax/asmh8300.vim
+#usr/share/vim/vim74/syntax/asn.vim
+#usr/share/vim/vim74/syntax/aspperl.vim
+#usr/share/vim/vim74/syntax/aspvbs.vim
+#usr/share/vim/vim74/syntax/asterisk.vim
+#usr/share/vim/vim74/syntax/asteriskvm.vim
+#usr/share/vim/vim74/syntax/atlas.vim
+#usr/share/vim/vim74/syntax/autohotkey.vim
+#usr/share/vim/vim74/syntax/autoit.vim
+#usr/share/vim/vim74/syntax/automake.vim
+#usr/share/vim/vim74/syntax/ave.vim
+#usr/share/vim/vim74/syntax/awk.vim
+#usr/share/vim/vim74/syntax/ayacc.vim
+#usr/share/vim/vim74/syntax/b.vim
+#usr/share/vim/vim74/syntax/baan.vim
+#usr/share/vim/vim74/syntax/basic.vim
+#usr/share/vim/vim74/syntax/bc.vim
+#usr/share/vim/vim74/syntax/bdf.vim
+#usr/share/vim/vim74/syntax/bib.vim
+#usr/share/vim/vim74/syntax/bindzone.vim
+#usr/share/vim/vim74/syntax/blank.vim
+#usr/share/vim/vim74/syntax/bst.vim
+#usr/share/vim/vim74/syntax/btm.vim
+#usr/share/vim/vim74/syntax/bzr.vim
+#usr/share/vim/vim74/syntax/c.vim
+#usr/share/vim/vim74/syntax/cabal.vim
+#usr/share/vim/vim74/syntax/calendar.vim
+#usr/share/vim/vim74/syntax/catalog.vim
+#usr/share/vim/vim74/syntax/cdl.vim
+#usr/share/vim/vim74/syntax/cdrdaoconf.vim
+#usr/share/vim/vim74/syntax/cdrtoc.vim
+#usr/share/vim/vim74/syntax/cf.vim
+#usr/share/vim/vim74/syntax/cfg.vim
+#usr/share/vim/vim74/syntax/ch.vim
+#usr/share/vim/vim74/syntax/chaiscript.vim
+#usr/share/vim/vim74/syntax/change.vim
+#usr/share/vim/vim74/syntax/changelog.vim
+#usr/share/vim/vim74/syntax/chaskell.vim
+#usr/share/vim/vim74/syntax/cheetah.vim
+#usr/share/vim/vim74/syntax/chill.vim
+#usr/share/vim/vim74/syntax/chordpro.vim
+#usr/share/vim/vim74/syntax/cl.vim
+#usr/share/vim/vim74/syntax/clean.vim
+#usr/share/vim/vim74/syntax/clipper.vim
+#usr/share/vim/vim74/syntax/clojure.vim
+#usr/share/vim/vim74/syntax/cmake.vim
+#usr/share/vim/vim74/syntax/cmusrc.vim
+#usr/share/vim/vim74/syntax/cobol.vim
+#usr/share/vim/vim74/syntax/coco.vim
+#usr/share/vim/vim74/syntax/colortest.vim
+#usr/share/vim/vim74/syntax/conaryrecipe.vim
+#usr/share/vim/vim74/syntax/conf.vim
+#usr/share/vim/vim74/syntax/config.vim
+#usr/share/vim/vim74/syntax/context.vim
+#usr/share/vim/vim74/syntax/cpp.vim
+#usr/share/vim/vim74/syntax/crm.vim
+#usr/share/vim/vim74/syntax/crontab.vim
+#usr/share/vim/vim74/syntax/cs.vim
+#usr/share/vim/vim74/syntax/csc.vim
+#usr/share/vim/vim74/syntax/csdl.vim
+#usr/share/vim/vim74/syntax/csh.vim
+#usr/share/vim/vim74/syntax/csp.vim
+#usr/share/vim/vim74/syntax/css.vim
+#usr/share/vim/vim74/syntax/cterm.vim
+#usr/share/vim/vim74/syntax/ctrlh.vim
+#usr/share/vim/vim74/syntax/cucumber.vim
+#usr/share/vim/vim74/syntax/cuda.vim
+#usr/share/vim/vim74/syntax/cupl.vim
+#usr/share/vim/vim74/syntax/cuplsim.vim
+#usr/share/vim/vim74/syntax/cvs.vim
+#usr/share/vim/vim74/syntax/cvsrc.vim
+#usr/share/vim/vim74/syntax/cweb.vim
+#usr/share/vim/vim74/syntax/cynlib.vim
+#usr/share/vim/vim74/syntax/cynpp.vim
+#usr/share/vim/vim74/syntax/d.vim
+#usr/share/vim/vim74/syntax/datascript.vim
+#usr/share/vim/vim74/syntax/dcd.vim
+#usr/share/vim/vim74/syntax/dcl.vim
+#usr/share/vim/vim74/syntax/debchangelog.vim
+#usr/share/vim/vim74/syntax/debcontrol.vim
+#usr/share/vim/vim74/syntax/debsources.vim
+#usr/share/vim/vim74/syntax/def.vim
+#usr/share/vim/vim74/syntax/denyhosts.vim
+#usr/share/vim/vim74/syntax/desc.vim
+#usr/share/vim/vim74/syntax/desktop.vim
+#usr/share/vim/vim74/syntax/dictconf.vim
+#usr/share/vim/vim74/syntax/dictdconf.vim
+#usr/share/vim/vim74/syntax/diff.vim
+#usr/share/vim/vim74/syntax/dircolors.vim
+#usr/share/vim/vim74/syntax/dirpager.vim
+#usr/share/vim/vim74/syntax/diva.vim
+#usr/share/vim/vim74/syntax/django.vim
+#usr/share/vim/vim74/syntax/dns.vim
+#usr/share/vim/vim74/syntax/dnsmasq.vim
+#usr/share/vim/vim74/syntax/docbk.vim
+#usr/share/vim/vim74/syntax/docbksgml.vim
+#usr/share/vim/vim74/syntax/docbkxml.vim
+#usr/share/vim/vim74/syntax/dosbatch.vim
+#usr/share/vim/vim74/syntax/dosini.vim
+#usr/share/vim/vim74/syntax/dot.vim
+#usr/share/vim/vim74/syntax/doxygen.vim
+#usr/share/vim/vim74/syntax/dracula.vim
+#usr/share/vim/vim74/syntax/dsl.vim
+#usr/share/vim/vim74/syntax/dtd.vim
+#usr/share/vim/vim74/syntax/dtml.vim
+#usr/share/vim/vim74/syntax/dtrace.vim
+#usr/share/vim/vim74/syntax/dts.vim
+#usr/share/vim/vim74/syntax/dylan.vim
+#usr/share/vim/vim74/syntax/dylanintr.vim
+#usr/share/vim/vim74/syntax/dylanlid.vim
+#usr/share/vim/vim74/syntax/ecd.vim
+#usr/share/vim/vim74/syntax/edif.vim
+#usr/share/vim/vim74/syntax/eiffel.vim
+#usr/share/vim/vim74/syntax/elf.vim
+#usr/share/vim/vim74/syntax/elinks.vim
+#usr/share/vim/vim74/syntax/elmfilt.vim
+#usr/share/vim/vim74/syntax/erlang.vim
+#usr/share/vim/vim74/syntax/eruby.vim
+#usr/share/vim/vim74/syntax/esmtprc.vim
+#usr/share/vim/vim74/syntax/esqlc.vim
+#usr/share/vim/vim74/syntax/esterel.vim
+#usr/share/vim/vim74/syntax/eterm.vim
+#usr/share/vim/vim74/syntax/eviews.vim
+#usr/share/vim/vim74/syntax/exim.vim
+#usr/share/vim/vim74/syntax/expect.vim
+#usr/share/vim/vim74/syntax/exports.vim
+#usr/share/vim/vim74/syntax/falcon.vim
+#usr/share/vim/vim74/syntax/fan.vim
+#usr/share/vim/vim74/syntax/fasm.vim
+#usr/share/vim/vim74/syntax/fdcc.vim
+#usr/share/vim/vim74/syntax/fetchmail.vim
+#usr/share/vim/vim74/syntax/fgl.vim
+#usr/share/vim/vim74/syntax/flexwiki.vim
+#usr/share/vim/vim74/syntax/focexec.vim
+#usr/share/vim/vim74/syntax/form.vim
+#usr/share/vim/vim74/syntax/forth.vim
+#usr/share/vim/vim74/syntax/fortran.vim
+#usr/share/vim/vim74/syntax/foxpro.vim
+#usr/share/vim/vim74/syntax/framescript.vim
+#usr/share/vim/vim74/syntax/freebasic.vim
+#usr/share/vim/vim74/syntax/fstab.vim
+#usr/share/vim/vim74/syntax/fvwm.vim
+#usr/share/vim/vim74/syntax/fvwm2m4.vim
+#usr/share/vim/vim74/syntax/gdb.vim
+#usr/share/vim/vim74/syntax/gdmo.vim
+#usr/share/vim/vim74/syntax/gedcom.vim
+#usr/share/vim/vim74/syntax/git.vim
+#usr/share/vim/vim74/syntax/gitcommit.vim
+#usr/share/vim/vim74/syntax/gitconfig.vim
+#usr/share/vim/vim74/syntax/gitolite.vim
+#usr/share/vim/vim74/syntax/gitrebase.vim
+#usr/share/vim/vim74/syntax/gitsendemail.vim
+#usr/share/vim/vim74/syntax/gkrellmrc.vim
+#usr/share/vim/vim74/syntax/gnash.vim
+#usr/share/vim/vim74/syntax/gnuplot.vim
+#usr/share/vim/vim74/syntax/gp.vim
+#usr/share/vim/vim74/syntax/gpg.vim
+#usr/share/vim/vim74/syntax/gprof.vim
+#usr/share/vim/vim74/syntax/grads.vim
+#usr/share/vim/vim74/syntax/gretl.vim
+#usr/share/vim/vim74/syntax/groff.vim
+#usr/share/vim/vim74/syntax/groovy.vim
+#usr/share/vim/vim74/syntax/group.vim
+#usr/share/vim/vim74/syntax/grub.vim
+#usr/share/vim/vim74/syntax/gsp.vim
+#usr/share/vim/vim74/syntax/gtkrc.vim
+#usr/share/vim/vim74/syntax/haml.vim
+#usr/share/vim/vim74/syntax/hamster.vim
+#usr/share/vim/vim74/syntax/haskell.vim
+#usr/share/vim/vim74/syntax/haste.vim
+#usr/share/vim/vim74/syntax/hastepreproc.vim
+#usr/share/vim/vim74/syntax/hb.vim
+#usr/share/vim/vim74/syntax/help.vim
+#usr/share/vim/vim74/syntax/hercules.vim
+#usr/share/vim/vim74/syntax/hex.vim
+#usr/share/vim/vim74/syntax/hgcommit.vim
+#usr/share/vim/vim74/syntax/hitest.vim
+#usr/share/vim/vim74/syntax/hog.vim
+#usr/share/vim/vim74/syntax/hostconf.vim
+#usr/share/vim/vim74/syntax/hostsaccess.vim
+#usr/share/vim/vim74/syntax/html.vim
+#usr/share/vim/vim74/syntax/htmlcheetah.vim
+#usr/share/vim/vim74/syntax/htmldjango.vim
+#usr/share/vim/vim74/syntax/htmlm4.vim
+#usr/share/vim/vim74/syntax/htmlos.vim
+#usr/share/vim/vim74/syntax/ia64.vim
+#usr/share/vim/vim74/syntax/ibasic.vim
+#usr/share/vim/vim74/syntax/icemenu.vim
+#usr/share/vim/vim74/syntax/icon.vim
+#usr/share/vim/vim74/syntax/idl.vim
+#usr/share/vim/vim74/syntax/idlang.vim
+#usr/share/vim/vim74/syntax/indent.vim
+#usr/share/vim/vim74/syntax/inform.vim
+#usr/share/vim/vim74/syntax/initex.vim
+#usr/share/vim/vim74/syntax/initng.vim
+#usr/share/vim/vim74/syntax/inittab.vim
+#usr/share/vim/vim74/syntax/ipfilter.vim
+#usr/share/vim/vim74/syntax/ishd.vim
+#usr/share/vim/vim74/syntax/iss.vim
+#usr/share/vim/vim74/syntax/ist.vim
+#usr/share/vim/vim74/syntax/jal.vim
+#usr/share/vim/vim74/syntax/jam.vim
+#usr/share/vim/vim74/syntax/jargon.vim
+#usr/share/vim/vim74/syntax/java.vim
+#usr/share/vim/vim74/syntax/javacc.vim
+#usr/share/vim/vim74/syntax/javascript.vim
+#usr/share/vim/vim74/syntax/jess.vim
+#usr/share/vim/vim74/syntax/jgraph.vim
+#usr/share/vim/vim74/syntax/jovial.vim
+#usr/share/vim/vim74/syntax/jproperties.vim
+#usr/share/vim/vim74/syntax/jsp.vim
+#usr/share/vim/vim74/syntax/kconfig.vim
+#usr/share/vim/vim74/syntax/kix.vim
+#usr/share/vim/vim74/syntax/kscript.vim
+#usr/share/vim/vim74/syntax/kwt.vim
+#usr/share/vim/vim74/syntax/lace.vim
+#usr/share/vim/vim74/syntax/latte.vim
+#usr/share/vim/vim74/syntax/ld.vim
+#usr/share/vim/vim74/syntax/ldapconf.vim
+#usr/share/vim/vim74/syntax/ldif.vim
+#usr/share/vim/vim74/syntax/lex.vim
+#usr/share/vim/vim74/syntax/lftp.vim
+#usr/share/vim/vim74/syntax/lhaskell.vim
+#usr/share/vim/vim74/syntax/libao.vim
+#usr/share/vim/vim74/syntax/lifelines.vim
+#usr/share/vim/vim74/syntax/lilo.vim
+#usr/share/vim/vim74/syntax/limits.vim
+#usr/share/vim/vim74/syntax/liquid.vim
+#usr/share/vim/vim74/syntax/lisp.vim
+#usr/share/vim/vim74/syntax/lite.vim
+#usr/share/vim/vim74/syntax/litestep.vim
+#usr/share/vim/vim74/syntax/loginaccess.vim
+#usr/share/vim/vim74/syntax/logindefs.vim
+#usr/share/vim/vim74/syntax/logtalk.vim
+#usr/share/vim/vim74/syntax/lotos.vim
+#usr/share/vim/vim74/syntax/lout.vim
+#usr/share/vim/vim74/syntax/lpc.vim
+#usr/share/vim/vim74/syntax/lprolog.vim
+#usr/share/vim/vim74/syntax/lscript.vim
+#usr/share/vim/vim74/syntax/lsl.vim
+#usr/share/vim/vim74/syntax/lss.vim
+#usr/share/vim/vim74/syntax/lua.vim
+#usr/share/vim/vim74/syntax/lynx.vim
+#usr/share/vim/vim74/syntax/m4.vim
+#usr/share/vim/vim74/syntax/mail.vim
+#usr/share/vim/vim74/syntax/mailaliases.vim
+#usr/share/vim/vim74/syntax/mailcap.vim
+#usr/share/vim/vim74/syntax/make.vim
+#usr/share/vim/vim74/syntax/mallard.vim
+#usr/share/vim/vim74/syntax/man.vim
+#usr/share/vim/vim74/syntax/manconf.vim
+#usr/share/vim/vim74/syntax/manual.vim
+#usr/share/vim/vim74/syntax/maple.vim
+#usr/share/vim/vim74/syntax/markdown.vim
+#usr/share/vim/vim74/syntax/masm.vim
+#usr/share/vim/vim74/syntax/mason.vim
+#usr/share/vim/vim74/syntax/master.vim
+#usr/share/vim/vim74/syntax/matlab.vim
+#usr/share/vim/vim74/syntax/maxima.vim
+#usr/share/vim/vim74/syntax/mel.vim
+#usr/share/vim/vim74/syntax/messages.vim
+#usr/share/vim/vim74/syntax/mf.vim
+#usr/share/vim/vim74/syntax/mgl.vim
+#usr/share/vim/vim74/syntax/mgp.vim
+#usr/share/vim/vim74/syntax/mib.vim
+#usr/share/vim/vim74/syntax/mma.vim
+#usr/share/vim/vim74/syntax/mmix.vim
+#usr/share/vim/vim74/syntax/mmp.vim
+#usr/share/vim/vim74/syntax/modconf.vim
+#usr/share/vim/vim74/syntax/model.vim
+#usr/share/vim/vim74/syntax/modsim3.vim
+#usr/share/vim/vim74/syntax/modula2.vim
+#usr/share/vim/vim74/syntax/modula3.vim
+#usr/share/vim/vim74/syntax/monk.vim
+#usr/share/vim/vim74/syntax/moo.vim
+#usr/share/vim/vim74/syntax/mp.vim
+#usr/share/vim/vim74/syntax/mplayerconf.vim
+#usr/share/vim/vim74/syntax/mrxvtrc.vim
+#usr/share/vim/vim74/syntax/msidl.vim
+#usr/share/vim/vim74/syntax/msmessages.vim
+#usr/share/vim/vim74/syntax/msql.vim
+#usr/share/vim/vim74/syntax/mupad.vim
+#usr/share/vim/vim74/syntax/mush.vim
+#usr/share/vim/vim74/syntax/muttrc.vim
+#usr/share/vim/vim74/syntax/mysql.vim
+#usr/share/vim/vim74/syntax/named.vim
+#usr/share/vim/vim74/syntax/nanorc.vim
+#usr/share/vim/vim74/syntax/nasm.vim
+#usr/share/vim/vim74/syntax/nastran.vim
+#usr/share/vim/vim74/syntax/natural.vim
+#usr/share/vim/vim74/syntax/ncf.vim
+#usr/share/vim/vim74/syntax/netrc.vim
+#usr/share/vim/vim74/syntax/netrw.vim
+#usr/share/vim/vim74/syntax/ninja.vim
+#usr/share/vim/vim74/syntax/nosyntax.vim
+#usr/share/vim/vim74/syntax/nqc.vim
+#usr/share/vim/vim74/syntax/nroff.vim
+#usr/share/vim/vim74/syntax/nsis.vim
+#usr/share/vim/vim74/syntax/obj.vim
+#usr/share/vim/vim74/syntax/objc.vim
+#usr/share/vim/vim74/syntax/objcpp.vim
+#usr/share/vim/vim74/syntax/ocaml.vim
+#usr/share/vim/vim74/syntax/occam.vim
+#usr/share/vim/vim74/syntax/omnimark.vim
+#usr/share/vim/vim74/syntax/openroad.vim
+#usr/share/vim/vim74/syntax/opl.vim
+#usr/share/vim/vim74/syntax/ora.vim
+#usr/share/vim/vim74/syntax/pamconf.vim
+#usr/share/vim/vim74/syntax/papp.vim
+#usr/share/vim/vim74/syntax/pascal.vim
+#usr/share/vim/vim74/syntax/passwd.vim
+#usr/share/vim/vim74/syntax/pcap.vim
+#usr/share/vim/vim74/syntax/pccts.vim
+#usr/share/vim/vim74/syntax/pdf.vim
+#usr/share/vim/vim74/syntax/perl.vim
+#usr/share/vim/vim74/syntax/perl6.vim
+#usr/share/vim/vim74/syntax/pf.vim
+#usr/share/vim/vim74/syntax/pfmain.vim
+#usr/share/vim/vim74/syntax/php.vim
+#usr/share/vim/vim74/syntax/phtml.vim
+#usr/share/vim/vim74/syntax/pic.vim
+#usr/share/vim/vim74/syntax/pike.vim
+#usr/share/vim/vim74/syntax/pilrc.vim
+#usr/share/vim/vim74/syntax/pine.vim
+#usr/share/vim/vim74/syntax/pinfo.vim
+#usr/share/vim/vim74/syntax/plaintex.vim
+#usr/share/vim/vim74/syntax/pli.vim
+#usr/share/vim/vim74/syntax/plm.vim
+#usr/share/vim/vim74/syntax/plp.vim
+#usr/share/vim/vim74/syntax/plsql.vim
+#usr/share/vim/vim74/syntax/po.vim
+#usr/share/vim/vim74/syntax/pod.vim
+#usr/share/vim/vim74/syntax/postscr.vim
+#usr/share/vim/vim74/syntax/pov.vim
+#usr/share/vim/vim74/syntax/povini.vim
+#usr/share/vim/vim74/syntax/ppd.vim
+#usr/share/vim/vim74/syntax/ppwiz.vim
+#usr/share/vim/vim74/syntax/prescribe.vim
+#usr/share/vim/vim74/syntax/privoxy.vim
+#usr/share/vim/vim74/syntax/procmail.vim
+#usr/share/vim/vim74/syntax/progress.vim
+#usr/share/vim/vim74/syntax/prolog.vim
+#usr/share/vim/vim74/syntax/promela.vim
+#usr/share/vim/vim74/syntax/proto.vim
+#usr/share/vim/vim74/syntax/protocols.vim
+#usr/share/vim/vim74/syntax/psf.vim
+#usr/share/vim/vim74/syntax/ptcap.vim
+#usr/share/vim/vim74/syntax/purifylog.vim
+#usr/share/vim/vim74/syntax/pyrex.vim
+#usr/share/vim/vim74/syntax/python.vim
+#usr/share/vim/vim74/syntax/qf.vim
+#usr/share/vim/vim74/syntax/quake.vim
+#usr/share/vim/vim74/syntax/r.vim
+#usr/share/vim/vim74/syntax/racc.vim
+#usr/share/vim/vim74/syntax/radiance.vim
+#usr/share/vim/vim74/syntax/ratpoison.vim
+#usr/share/vim/vim74/syntax/rc.vim
+#usr/share/vim/vim74/syntax/rcs.vim
+#usr/share/vim/vim74/syntax/rcslog.vim
+#usr/share/vim/vim74/syntax/readline.vim
+#usr/share/vim/vim74/syntax/rebol.vim
+#usr/share/vim/vim74/syntax/redif.vim
+#usr/share/vim/vim74/syntax/registry.vim
+#usr/share/vim/vim74/syntax/remind.vim
+#usr/share/vim/vim74/syntax/resolv.vim
+#usr/share/vim/vim74/syntax/reva.vim
+#usr/share/vim/vim74/syntax/rexx.vim
+#usr/share/vim/vim74/syntax/rhelp.vim
+#usr/share/vim/vim74/syntax/rib.vim
+#usr/share/vim/vim74/syntax/rnc.vim
+#usr/share/vim/vim74/syntax/rng.vim
+#usr/share/vim/vim74/syntax/rnoweb.vim
+#usr/share/vim/vim74/syntax/robots.vim
+#usr/share/vim/vim74/syntax/rpcgen.vim
+#usr/share/vim/vim74/syntax/rpl.vim
+#usr/share/vim/vim74/syntax/rst.vim
+#usr/share/vim/vim74/syntax/rtf.vim
+#usr/share/vim/vim74/syntax/ruby.vim
+#usr/share/vim/vim74/syntax/samba.vim
+#usr/share/vim/vim74/syntax/sas.vim
+#usr/share/vim/vim74/syntax/sass.vim
+#usr/share/vim/vim74/syntax/sather.vim
+#usr/share/vim/vim74/syntax/scheme.vim
+#usr/share/vim/vim74/syntax/scilab.vim
+#usr/share/vim/vim74/syntax/screen.vim
+#usr/share/vim/vim74/syntax/scss.vim
+#usr/share/vim/vim74/syntax/sd.vim
+#usr/share/vim/vim74/syntax/sdc.vim
+#usr/share/vim/vim74/syntax/sdl.vim
+#usr/share/vim/vim74/syntax/sed.vim
+#usr/share/vim/vim74/syntax/sendpr.vim
+#usr/share/vim/vim74/syntax/sensors.vim
+#usr/share/vim/vim74/syntax/services.vim
+#usr/share/vim/vim74/syntax/setserial.vim
+#usr/share/vim/vim74/syntax/sgml.vim
+#usr/share/vim/vim74/syntax/sgmldecl.vim
+#usr/share/vim/vim74/syntax/sgmllnx.vim
+#usr/share/vim/vim74/syntax/sh.vim
+#usr/share/vim/vim74/syntax/sicad.vim
+#usr/share/vim/vim74/syntax/sieve.vim
+#usr/share/vim/vim74/syntax/simula.vim
+#usr/share/vim/vim74/syntax/sinda.vim
+#usr/share/vim/vim74/syntax/sindacmp.vim
+#usr/share/vim/vim74/syntax/sindaout.vim
+#usr/share/vim/vim74/syntax/sisu.vim
+#usr/share/vim/vim74/syntax/skill.vim
+#usr/share/vim/vim74/syntax/sl.vim
+#usr/share/vim/vim74/syntax/slang.vim
+#usr/share/vim/vim74/syntax/slice.vim
+#usr/share/vim/vim74/syntax/slpconf.vim
+#usr/share/vim/vim74/syntax/slpreg.vim
+#usr/share/vim/vim74/syntax/slpspi.vim
+#usr/share/vim/vim74/syntax/slrnrc.vim
+#usr/share/vim/vim74/syntax/slrnsc.vim
+#usr/share/vim/vim74/syntax/sm.vim
+#usr/share/vim/vim74/syntax/smarty.vim
+#usr/share/vim/vim74/syntax/smcl.vim
+#usr/share/vim/vim74/syntax/smil.vim
+#usr/share/vim/vim74/syntax/smith.vim
+#usr/share/vim/vim74/syntax/sml.vim
+#usr/share/vim/vim74/syntax/snnsnet.vim
+#usr/share/vim/vim74/syntax/snnspat.vim
+#usr/share/vim/vim74/syntax/snnsres.vim
+#usr/share/vim/vim74/syntax/snobol4.vim
+#usr/share/vim/vim74/syntax/spec.vim
+#usr/share/vim/vim74/syntax/specman.vim
+#usr/share/vim/vim74/syntax/spice.vim
+#usr/share/vim/vim74/syntax/splint.vim
+#usr/share/vim/vim74/syntax/spup.vim
+#usr/share/vim/vim74/syntax/spyce.vim
+#usr/share/vim/vim74/syntax/sql.vim
+#usr/share/vim/vim74/syntax/sqlanywhere.vim
+#usr/share/vim/vim74/syntax/sqlforms.vim
+#usr/share/vim/vim74/syntax/sqlhana.vim
+#usr/share/vim/vim74/syntax/sqlinformix.vim
+#usr/share/vim/vim74/syntax/sqlj.vim
+#usr/share/vim/vim74/syntax/sqloracle.vim
+#usr/share/vim/vim74/syntax/sqr.vim
+#usr/share/vim/vim74/syntax/squid.vim
+#usr/share/vim/vim74/syntax/sshconfig.vim
+#usr/share/vim/vim74/syntax/sshdconfig.vim
+#usr/share/vim/vim74/syntax/st.vim
+#usr/share/vim/vim74/syntax/stata.vim
+#usr/share/vim/vim74/syntax/stp.vim
+#usr/share/vim/vim74/syntax/strace.vim
+#usr/share/vim/vim74/syntax/sudoers.vim
+#usr/share/vim/vim74/syntax/svg.vim
+#usr/share/vim/vim74/syntax/svn.vim
+#usr/share/vim/vim74/syntax/syncolor.vim
+#usr/share/vim/vim74/syntax/synload.vim
+#usr/share/vim/vim74/syntax/syntax.vim
+#usr/share/vim/vim74/syntax/sysctl.vim
+#usr/share/vim/vim74/syntax/tads.vim
+#usr/share/vim/vim74/syntax/tags.vim
+#usr/share/vim/vim74/syntax/tak.vim
+#usr/share/vim/vim74/syntax/takcmp.vim
+#usr/share/vim/vim74/syntax/takout.vim
+#usr/share/vim/vim74/syntax/tar.vim
+#usr/share/vim/vim74/syntax/taskdata.vim
+#usr/share/vim/vim74/syntax/taskedit.vim
+#usr/share/vim/vim74/syntax/tasm.vim
+#usr/share/vim/vim74/syntax/tcl.vim
+#usr/share/vim/vim74/syntax/tcsh.vim
+#usr/share/vim/vim74/syntax/terminfo.vim
+#usr/share/vim/vim74/syntax/tex.vim
+#usr/share/vim/vim74/syntax/texinfo.vim
+#usr/share/vim/vim74/syntax/texmf.vim
+#usr/share/vim/vim74/syntax/tf.vim
+#usr/share/vim/vim74/syntax/tidy.vim
+#usr/share/vim/vim74/syntax/tilde.vim
+#usr/share/vim/vim74/syntax/tli.vim
+#usr/share/vim/vim74/syntax/tpp.vim
+#usr/share/vim/vim74/syntax/trasys.vim
+#usr/share/vim/vim74/syntax/treetop.vim
+#usr/share/vim/vim74/syntax/trustees.vim
+#usr/share/vim/vim74/syntax/tsalt.vim
+#usr/share/vim/vim74/syntax/tsscl.vim
+#usr/share/vim/vim74/syntax/tssgm.vim
+#usr/share/vim/vim74/syntax/tssop.vim
+#usr/share/vim/vim74/syntax/tt2.vim
+#usr/share/vim/vim74/syntax/tt2html.vim
+#usr/share/vim/vim74/syntax/tt2js.vim
+#usr/share/vim/vim74/syntax/uc.vim
+#usr/share/vim/vim74/syntax/udevconf.vim
+#usr/share/vim/vim74/syntax/udevperm.vim
+#usr/share/vim/vim74/syntax/udevrules.vim
+#usr/share/vim/vim74/syntax/uil.vim
+#usr/share/vim/vim74/syntax/updatedb.vim
+#usr/share/vim/vim74/syntax/upstart.vim
+#usr/share/vim/vim74/syntax/upstreamdat.vim
+#usr/share/vim/vim74/syntax/upstreaminstalllog.vim
+#usr/share/vim/vim74/syntax/upstreamlog.vim
+#usr/share/vim/vim74/syntax/usserverlog.vim
+#usr/share/vim/vim74/syntax/usw2kagtlog.vim
+#usr/share/vim/vim74/syntax/valgrind.vim
+#usr/share/vim/vim74/syntax/vb.vim
+#usr/share/vim/vim74/syntax/vera.vim
+#usr/share/vim/vim74/syntax/verilog.vim
+#usr/share/vim/vim74/syntax/verilogams.vim
+#usr/share/vim/vim74/syntax/vgrindefs.vim
+#usr/share/vim/vim74/syntax/vhdl.vim
+#usr/share/vim/vim74/syntax/vim.vim
+#usr/share/vim/vim74/syntax/viminfo.vim
+#usr/share/vim/vim74/syntax/virata.vim
+#usr/share/vim/vim74/syntax/vmasm.vim
+#usr/share/vim/vim74/syntax/voscm.vim
+#usr/share/vim/vim74/syntax/vrml.vim
+#usr/share/vim/vim74/syntax/vsejcl.vim
+#usr/share/vim/vim74/syntax/wdiff.vim
+#usr/share/vim/vim74/syntax/web.vim
+#usr/share/vim/vim74/syntax/webmacro.vim
+#usr/share/vim/vim74/syntax/wget.vim
+#usr/share/vim/vim74/syntax/whitespace.vim
+#usr/share/vim/vim74/syntax/winbatch.vim
+#usr/share/vim/vim74/syntax/wml.vim
+#usr/share/vim/vim74/syntax/wsh.vim
+#usr/share/vim/vim74/syntax/wsml.vim
+#usr/share/vim/vim74/syntax/wvdial.vim
+#usr/share/vim/vim74/syntax/xbl.vim
+#usr/share/vim/vim74/syntax/xdefaults.vim
+#usr/share/vim/vim74/syntax/xf86conf.vim
+#usr/share/vim/vim74/syntax/xhtml.vim
+#usr/share/vim/vim74/syntax/xinetd.vim
+#usr/share/vim/vim74/syntax/xkb.vim
+#usr/share/vim/vim74/syntax/xmath.vim
+#usr/share/vim/vim74/syntax/xml.vim
+#usr/share/vim/vim74/syntax/xmodmap.vim
+#usr/share/vim/vim74/syntax/xpm.vim
+#usr/share/vim/vim74/syntax/xpm2.vim
+#usr/share/vim/vim74/syntax/xquery.vim
+#usr/share/vim/vim74/syntax/xs.vim
+#usr/share/vim/vim74/syntax/xsd.vim
+#usr/share/vim/vim74/syntax/xslt.vim
+#usr/share/vim/vim74/syntax/xxd.vim
+#usr/share/vim/vim74/syntax/yacc.vim
+#usr/share/vim/vim74/syntax/yaml.vim
+#usr/share/vim/vim74/syntax/z8a.vim
+#usr/share/vim/vim74/syntax/zimbu.vim
+#usr/share/vim/vim74/syntax/zsh.vim
+#usr/share/vim/vim74/tools
+#usr/share/vim/vim74/tools/README.txt
+#usr/share/vim/vim74/tools/blink.c
+#usr/share/vim/vim74/tools/ccfilter.1
+#usr/share/vim/vim74/tools/ccfilter.c
+#usr/share/vim/vim74/tools/ccfilter_README.txt
+#usr/share/vim/vim74/tools/efm_filter.pl
+#usr/share/vim/vim74/tools/efm_filter.txt
+#usr/share/vim/vim74/tools/efm_perl.pl
+#usr/share/vim/vim74/tools/mve.awk
+#usr/share/vim/vim74/tools/mve.txt
+#usr/share/vim/vim74/tools/pltags.pl
+#usr/share/vim/vim74/tools/ref
+#usr/share/vim/vim74/tools/shtags.1
+#usr/share/vim/vim74/tools/shtags.pl
+#usr/share/vim/vim74/tools/unicode.vim
+#usr/share/vim/vim74/tools/vim132
+#usr/share/vim/vim74/tools/vim_vs_net.cmd
+#usr/share/vim/vim74/tools/vimm
+#usr/share/vim/vim74/tools/vimspell.sh
+#usr/share/vim/vim74/tools/vimspell.txt
+#usr/share/vim/vim74/tools/xcmdsrv_client.c
+#usr/share/vim/vim74/tutor
+#usr/share/vim/vim74/tutor/README.el.cp737.txt
+#usr/share/vim/vim74/tutor/README.el.txt
+#usr/share/vim/vim74/tutor/README.txt
+#usr/share/vim/vim74/tutor/tutor
+#usr/share/vim/vim74/tutor/tutor.bar
+#usr/share/vim/vim74/tutor/tutor.bar.utf-8
+#usr/share/vim/vim74/tutor/tutor.ca
+#usr/share/vim/vim74/tutor/tutor.ca.utf-8
+#usr/share/vim/vim74/tutor/tutor.cs
+#usr/share/vim/vim74/tutor/tutor.cs.cp1250
+#usr/share/vim/vim74/tutor/tutor.cs.utf-8
+#usr/share/vim/vim74/tutor/tutor.de
+#usr/share/vim/vim74/tutor/tutor.de.utf-8
+#usr/share/vim/vim74/tutor/tutor.el
+#usr/share/vim/vim74/tutor/tutor.el.cp737
+#usr/share/vim/vim74/tutor/tutor.el.utf-8
+#usr/share/vim/vim74/tutor/tutor.eo
+#usr/share/vim/vim74/tutor/tutor.eo.utf-8
+#usr/share/vim/vim74/tutor/tutor.es
+#usr/share/vim/vim74/tutor/tutor.es.utf-8
+#usr/share/vim/vim74/tutor/tutor.fr
+#usr/share/vim/vim74/tutor/tutor.fr.utf-8
+#usr/share/vim/vim74/tutor/tutor.hr
+#usr/share/vim/vim74/tutor/tutor.hr.cp1250
+#usr/share/vim/vim74/tutor/tutor.hr.utf-8
+#usr/share/vim/vim74/tutor/tutor.hu
+#usr/share/vim/vim74/tutor/tutor.hu.cp1250
+#usr/share/vim/vim74/tutor/tutor.hu.utf-8
+#usr/share/vim/vim74/tutor/tutor.it
+#usr/share/vim/vim74/tutor/tutor.it.utf-8
+#usr/share/vim/vim74/tutor/tutor.ja.euc
+#usr/share/vim/vim74/tutor/tutor.ja.sjis
+#usr/share/vim/vim74/tutor/tutor.ja.utf-8
+#usr/share/vim/vim74/tutor/tutor.ko.euc
+#usr/share/vim/vim74/tutor/tutor.ko.utf-8
+#usr/share/vim/vim74/tutor/tutor.nb
+#usr/share/vim/vim74/tutor/tutor.nb.utf-8
+#usr/share/vim/vim74/tutor/tutor.nl
+#usr/share/vim/vim74/tutor/tutor.nl.utf-8
+#usr/share/vim/vim74/tutor/tutor.no
+#usr/share/vim/vim74/tutor/tutor.no.utf-8
+#usr/share/vim/vim74/tutor/tutor.pl
+#usr/share/vim/vim74/tutor/tutor.pl.cp1250
+#usr/share/vim/vim74/tutor/tutor.pl.utf-8
+#usr/share/vim/vim74/tutor/tutor.pt
+#usr/share/vim/vim74/tutor/tutor.pt.utf-8
+#usr/share/vim/vim74/tutor/tutor.ru
+#usr/share/vim/vim74/tutor/tutor.ru.cp1251
+#usr/share/vim/vim74/tutor/tutor.ru.utf-8
+#usr/share/vim/vim74/tutor/tutor.sk
+#usr/share/vim/vim74/tutor/tutor.sk.cp1250
+#usr/share/vim/vim74/tutor/tutor.sk.utf-8
+#usr/share/vim/vim74/tutor/tutor.sv
+#usr/share/vim/vim74/tutor/tutor.sv.utf-8
+#usr/share/vim/vim74/tutor/tutor.tr.iso9
+#usr/share/vim/vim74/tutor/tutor.tr.utf-8
+#usr/share/vim/vim74/tutor/tutor.utf-8
+#usr/share/vim/vim74/tutor/tutor.vi.utf-8
+#usr/share/vim/vim74/tutor/tutor.vim
+#usr/share/vim/vim74/tutor/tutor.zh.big5
+#usr/share/vim/vim74/tutor/tutor.zh.euc
+#usr/share/vim/vim74/tutor/tutor.zh.utf-8
+#usr/share/vim/vim74/tutor/tutor.zh_cn.utf-8
+#usr/share/vim/vim74/tutor/tutor.zh_tw.utf-8
+#usr/share/vim/vim74/vimrc_example.vim
index a8fa20bebd7638b875770befa9a2d0b0f2bc062a..7c83de7c7626553dc1fc7ec27ed15c295b6fbff3 100644 (file)
@@ -41,7 +41,7 @@ usr/bin/xzmore
 #usr/lib/liblzma.la
 usr/lib/liblzma.so
 usr/lib/liblzma.so.5
-usr/lib/liblzma.so.5.0.4
+usr/lib/liblzma.so.5.0.5
 #usr/lib/pkgconfig/liblzma.pc
 #usr/share/doc/xz
 #usr/share/doc/xz/AUTHORS
diff --git a/config/rootfiles/core/73/filelists/GeoIP b/config/rootfiles/core/73/filelists/GeoIP
deleted file mode 100644 (file)
index 0258236..0000000
+++ /dev/null
@@ -1 +0,0 @@
-usr/local/share/GeoIP/GeoIP.dat
diff --git a/config/rootfiles/core/73/filelists/hwdata b/config/rootfiles/core/73/filelists/hwdata
deleted file mode 100644 (file)
index 5a9672f..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-usr/share/hwdata/pci.ids
-usr/share/hwdata/usb.ids
diff --git a/config/rootfiles/core/73/filelists/php b/config/rootfiles/core/73/filelists/php
deleted file mode 120000 (symlink)
index 1ae48d7..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../../../common/php
\ No newline at end of file
diff --git a/config/rootfiles/core/fifteen/filelists/armv5tel/glibc b/config/rootfiles/core/fifteen/filelists/armv5tel/glibc
new file mode 120000 (symlink)
index 0000000..4c70d72
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/armv5tel/glibc
\ No newline at end of file
diff --git a/config/rootfiles/core/fifteen/filelists/coreutils b/config/rootfiles/core/fifteen/filelists/coreutils
new file mode 120000 (symlink)
index 0000000..7351ed2
--- /dev/null
@@ -0,0 +1 @@
+../../../common/coreutils
\ No newline at end of file
diff --git a/config/rootfiles/core/fifteen/filelists/files b/config/rootfiles/core/fifteen/filelists/files
new file mode 100644 (file)
index 0000000..6a299d4
--- /dev/null
@@ -0,0 +1,18 @@
+etc/system-release
+etc/issue
+etc/rc.d/init.d/network
+srv/web/ipfire/cgi-bin/index.cgi
+srv/web/ipfire/cgi-bin/netinternal.cgi
+srv/web/ipfire/cgi-bin/ovpnmain.cgi
+srv/web/ipfire/cgi-bin/proxy.cgi
+srv/web/ipfire/cgi-bin/upnp.cgi
+srv/web/ipfire/cgi-bin/speed.cgi
+srv/web/ipfire/cgi-bin/vpnmain.cgi
+srv/web/ipfire/html/themes/ipfire/include/functions.pl
+srv/web/ipfire/html/themes/maniac/include/functions.pl
+var/ipfire/backup/bin/backup.pl
+var/ipfire/backup/exclude
+var/ipfire/backup/include
+var/ipfire/general-functions.pl
+var/ipfire/header.pl
+var/ipfire/langs
diff --git a/config/rootfiles/core/fifteen/filelists/firewall b/config/rootfiles/core/fifteen/filelists/firewall
new file mode 100644 (file)
index 0000000..3edde8e
--- /dev/null
@@ -0,0 +1,27 @@
+etc/rc.d/init.d/firewall
+etc/rc.d/init.d/networking/red.up/22-forwardfwctrl
+srv/web/ipfire/cgi-bin/firewall.cgi
+srv/web/ipfire/cgi-bin/fwhosts.cgi
+srv/web/ipfire/cgi-bin/optionsfw.cgi
+srv/web/ipfire/cgi-bin/p2p-block.cgi
+usr/sbin/convert-dmz
+usr/sbin/convert-outgoingfw
+usr/sbin/convert-portfw
+usr/sbin/convert-xtaccess
+usr/sbin/firewall-policy
+var/ipfire/firewall
+var/ipfire/firewall/bin/firewall-lib.pl
+var/ipfire/firewall/bin/rules.pl
+var/ipfire/firewall/config
+var/ipfire/firewall/input
+var/ipfire/firewall/outgoing
+var/ipfire/firewall/p2protocols
+var/ipfire/firewall/settings
+var/ipfire/fwhosts
+var/ipfire/fwhosts/customhosts
+var/ipfire/fwhosts/customnetworks
+var/ipfire/fwhosts/customgroups
+var/ipfire/fwhosts/customservices
+var/ipfire/fwhosts/customservicegrp
+var/ipfire/fwhosts/icmp-types
+var/ipfire/menu.d/50-firewall.menu
diff --git a/config/rootfiles/core/fifteen/filelists/i586/glibc b/config/rootfiles/core/fifteen/filelists/i586/glibc
new file mode 120000 (symlink)
index 0000000..943021f
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/i586/glibc
\ No newline at end of file
diff --git a/config/rootfiles/core/fifteen/filelists/jquery b/config/rootfiles/core/fifteen/filelists/jquery
new file mode 120000 (symlink)
index 0000000..65df10c
--- /dev/null
@@ -0,0 +1 @@
+../../../common/jquery
\ No newline at end of file
diff --git a/config/rootfiles/core/fifteen/filelists/libxml2 b/config/rootfiles/core/fifteen/filelists/libxml2
new file mode 120000 (symlink)
index 0000000..242e69f
--- /dev/null
@@ -0,0 +1 @@
+../../../common/libxml2
\ No newline at end of file
diff --git a/config/rootfiles/core/fifteen/filelists/lzo b/config/rootfiles/core/fifteen/filelists/lzo
new file mode 120000 (symlink)
index 0000000..8e11e78
--- /dev/null
@@ -0,0 +1 @@
+../../../common/lzo
\ No newline at end of file
diff --git a/config/rootfiles/core/fifteen/filelists/misc-progs b/config/rootfiles/core/fifteen/filelists/misc-progs
new file mode 120000 (symlink)
index 0000000..7223cad
--- /dev/null
@@ -0,0 +1 @@
+../../../common/misc-progs
\ No newline at end of file
diff --git a/config/rootfiles/core/fifteen/filelists/vim b/config/rootfiles/core/fifteen/filelists/vim
new file mode 120000 (symlink)
index 0000000..9861317
--- /dev/null
@@ -0,0 +1 @@
+../../../common/vim
\ No newline at end of file
similarity index 56%
rename from src/paks/linux-xen/update.sh
rename to config/rootfiles/core/fifteen/update.sh
index 89c40d0d7c5d3dd57b5944f3af4977d5f8d76760..3ea5ec596b32e3c251c1512367c22fecf3b26002 100644 (file)
@@ -5,7 +5,7 @@
 #                                                                          #
 # IPFire is free software; you can redistribute it and/or modify           #
 # it under the terms of the GNU General Public License as published by     #
-# the Free Software Foundation; either version 2 of the License, or        #
+# the Free Software Foundation; either version 3 of the License, or        #
 # (at your option) any later version.                                      #
 #                                                                          #
 # IPFire is distributed in the hope that it will be useful,                #
 # along with IPFire; if not, write to the Free Software                    #
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA #
 #                                                                          #
-# Copyright (C) 2007 IPFire-Team <info@ipfire.org>.                        #
+# Copyright (C) 2013 IPFire-Team <info@ipfire.org>.                        #
 #                                                                          #
 ############################################################################
 #
 . /opt/pakfire/lib/functions.sh
-./uninstall.sh
-./install.sh
+/usr/local/bin/backupctrl exclude >/dev/null 2>&1
+
+#
+# Remove old core updates from pakfire cache to save space...
+core=74
+for (( i=1; i<=$core; i++ ))
+do
+       rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire
+done
+
+# Stop services
+
+
+# Extract files
+extract_files
+
+# Start services
+
+
+# Update Language cache
+perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang"
+
+# Remove old initscripts
+rm -f /etc/rc.d/init.d/networking/red.up/22-outgoingfwctrl
+rm -f /etc/rc.d/init.d/networking/red.up/25-portfw
+rm -f /etc/rc.d/init.d/networking/red.up/26-xtaccess
+
+# Remove old CGI files
+rm -f /srv/web/ipfire/cgi-bin/{dmzholes,outgoingfw,portfw,xtaccess}.cgi
+
+# Convert firewall configuration
+/usr/bin/convert-xtaccess
+/usr/bin/convert-outgoingfw
+/usr/bin/convert-portfw
+/usr/bin/convert-dmz
+
+# Remove old firewall configuration files
+rm -rf /var/ipfire/{dmzholes,portfw,outgoing,xtaccess}
+
+sync
+
+# This update need a reboot...
+touch /var/run/need_reboot
+
+# Finish
+# Update the fireinfo profile
+(
+       /etc/init.d/fireinfo start
+       sendprofile
+) >/dev/null 2>&1 &
+
+exit 0
index 9d0006f53dd0e6271b059492a1c0165ad969c0fa..821263e05b59eede857c9cbc612fd418d1acd253 100644 (file)
@@ -48,6 +48,5 @@ var/ipfire/backup/bin/backup.pl
 var/ipfire/backup/include
 var/ipfire/general-functions.pl
 var/ipfire/langs
-var/ipfire/outgoing/bin/outgoingfw.pl
 var/ipfire/qos/bin/makeqosscripts.pl
 var/ipfire/updatexlrator/bin/download
diff --git a/config/rootfiles/oldcore/72/filelists/strongswan b/config/rootfiles/oldcore/72/filelists/strongswan
new file mode 120000 (symlink)
index 0000000..90c727e
--- /dev/null
@@ -0,0 +1 @@
+../../../common/strongswan
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/73/exclude b/config/rootfiles/oldcore/73/exclude
new file mode 100644 (file)
index 0000000..321a931
--- /dev/null
@@ -0,0 +1,17 @@
+srv/web/ipfire/html/proxy.pac
+boot/config.txt
+etc/udev/rules.d/30-persistent-network.rules
+etc/collectd.custom
+etc/shadow
+etc/ipsec.conf
+etc/ipsec.secrets
+etc/ipsec.user.conf
+etc/ipsec.user.secrets
+var/log/cache
+var/updatecache
+etc/localtime
+var/ipfire/ovpn
+etc/ssh/ssh_config
+etc/ssh/sshd_config
+etc/ssl/openssl.cnf
+var/state/dhcp/dhcpd.leases
diff --git a/config/rootfiles/oldcore/73/meta b/config/rootfiles/oldcore/73/meta
new file mode 100644 (file)
index 0000000..d547fa8
--- /dev/null
@@ -0,0 +1 @@
+DEPS=""
index 1f09b8d55b32a5f90e85862fefbf34161dbf1e03..6e0276b0617a6679f4b818b920aa515ae8984613 100644 (file)
@@ -10,15 +10,15 @@ usr/bin/sigtool
 #usr/lib/libclamav.la
 usr/lib/libclamav.so
 usr/lib/libclamav.so.6
-usr/lib/libclamav.so.6.1.17
+usr/lib/libclamav.so.6.1.18
 #usr/lib/libclamunrar.la
 usr/lib/libclamunrar.so
 usr/lib/libclamunrar.so.6
-usr/lib/libclamunrar.so.6.1.17
+usr/lib/libclamunrar.so.6.1.18
 #usr/lib/libclamunrar_iface.la
 usr/lib/libclamunrar_iface.so
 usr/lib/libclamunrar_iface.so.6
-usr/lib/libclamunrar_iface.so.6.1.17
+usr/lib/libclamunrar_iface.so.6.1.18
 #usr/lib/pkgconfig/libclamav.pc
 usr/sbin/clamd
 usr/share/clamav
@@ -36,7 +36,9 @@ usr/share/clamav
 #usr/share/man/man8/clamd.8
 #var/ipfire/clamav
 var/ipfire/clamav/clamd.conf
+var/ipfire/clamav/clamd.conf.sample
 var/ipfire/clamav/freshclam.conf
+var/ipfire/clamav/freshclam.conf.sample
 var/run/clamav
 etc/rc.d/init.d/clamav
 usr/local/bin/clamavctrl
diff --git a/config/rootfiles/packages/iotop b/config/rootfiles/packages/iotop
new file mode 100644 (file)
index 0000000..5ebe221
--- /dev/null
@@ -0,0 +1,20 @@
+usr/lib/python2.7/site-packages/iotop
+#usr/lib/python2.7/site-packages/iotop-0.6-py2.7.egg-info
+#usr/lib/python2.7/site-packages/iotop/__init__.py
+#usr/lib/python2.7/site-packages/iotop/__init__.pyc
+#usr/lib/python2.7/site-packages/iotop/data.py
+#usr/lib/python2.7/site-packages/iotop/data.pyc
+#usr/lib/python2.7/site-packages/iotop/genetlink.py
+#usr/lib/python2.7/site-packages/iotop/genetlink.pyc
+#usr/lib/python2.7/site-packages/iotop/ioprio.py
+#usr/lib/python2.7/site-packages/iotop/ioprio.pyc
+#usr/lib/python2.7/site-packages/iotop/netlink.py
+#usr/lib/python2.7/site-packages/iotop/netlink.pyc
+#usr/lib/python2.7/site-packages/iotop/ui.py
+#usr/lib/python2.7/site-packages/iotop/ui.pyc
+#usr/lib/python2.7/site-packages/iotop/version.py
+#usr/lib/python2.7/site-packages/iotop/version.pyc
+#usr/lib/python2.7/site-packages/iotop/vmstat.py
+#usr/lib/python2.7/site-packages/iotop/vmstat.pyc
+usr/sbin/iotop
+#usr/share/man/man8/iotop.8
diff --git a/config/rootfiles/packages/linux-xen b/config/rootfiles/packages/linux-xen
deleted file mode 100644 (file)
index 9d0f46c..0000000
+++ /dev/null
@@ -1,1946 +0,0 @@
-boot/System.map-2.6.32.61-ipfire-xen
-boot/System.map-ipfire-xen
-boot/config-2.6.32.61-ipfire-xen
-boot/vmlinuz-2.6.32.61-ipfire-xen
-boot/vmlinuz-ipfire-xen
-#lib/firmware/bnx2x-e1-5.0.21.0.fw
-#lib/firmware/bnx2x-e1h-5.0.21.0.fw
-#lib/modules
-lib/modules/2.6.32.61-ipfire-xen
-#lib/modules/2.6.32.61-ipfire-xen/build
-#lib/modules/2.6.32.61-ipfire-xen/kernel
-#lib/modules/2.6.32.61-ipfire-xen/kernel/arch
-#lib/modules/2.6.32.61-ipfire-xen/kernel/arch/x86
-#lib/modules/2.6.32.61-ipfire-xen/kernel/arch/x86/crypto
-#lib/modules/2.6.32.61-ipfire-xen/kernel/arch/x86/crypto/aes-i586.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/arch/x86/crypto/crc32c-intel.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/arch/x86/crypto/salsa20-i586.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/arch/x86/crypto/twofish-i586.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/arch/x86/kernel
-#lib/modules/2.6.32.61-ipfire-xen/kernel/arch/x86/kernel/microcode.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/arch/x86/kernel/msr.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/arch/x86/kernel/scx200.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/aes_generic.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/ansi_cprng.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/anubis.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/arc4.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/async_tx
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/async_tx/async_memcpy.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/async_tx/async_pq.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/async_tx/async_raid6_recov.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/async_tx/async_tx.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/async_tx/async_xor.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/authenc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/blowfish.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/camellia.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/cast5.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/cast6.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/cbc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/ccm.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/crc32c.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/cryptd.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/ctr.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/cts.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/des_generic.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/ecb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/fcrypt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/gcm.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/gf128mul.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/ghash-generic.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/khazad.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/lrw.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/lzo.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/md5.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/michael_mic.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/pcbc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/rmd128.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/rmd160.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/rmd256.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/rmd320.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/salsa20_generic.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/seed.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/seqiv.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/serpent.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/sha1_generic.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/sha256_generic.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/sha512_generic.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/tea.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/tgr192.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/twofish.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/twofish_common.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/vmac.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/wp512.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/xcbc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/xor.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/xts.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/crypto/zlib.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/acpi
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/acpi/ac.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/acpi/acpi_pad.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/acpi/battery.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/acpi/button.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/acpi/container.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/acpi/fan.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/acpi/pci_slot.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/acpi/power_meter.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/acpi/processor.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/acpi/sbs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/acpi/sbshc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/acpi/thermal.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/acpi/video.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/ahci.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/ata_generic.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/ata_piix.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/libata.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_acpi.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_ali.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_amd.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_artop.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_atiixp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_atp867x.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_cmd640.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_cmd64x.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_cs5520.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_cs5530.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_cs5535.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_cs5536.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_cypress.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_efar.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_hpt366.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_hpt37x.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_hpt3x2n.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_hpt3x3.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_it8213.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_it821x.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_jmicron.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_marvell.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_mpiix.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_netcell.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_ninja32.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_ns87410.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_ns87415.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_oldpiix.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_opti.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_optidma.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_pcmcia.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_pdc2027x.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_pdc202xx_old.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_radisys.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_rdc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_rz1000.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_sc1200.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_sch.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_serverworks.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_sil680.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_sis.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_sl82c105.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_triflex.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pata_via.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/pdc_adma.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/sata_inic162x.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/sata_mv.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/sata_nv.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/sata_promise.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/sata_qstor.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/sata_sil.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/sata_sil24.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/sata_sis.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/sata_svw.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/sata_sx4.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/sata_uli.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/sata_via.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ata/sata_vsc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/atm
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/atm/ambassador.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/atm/atmtcp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/atm/eni.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/atm/firestream.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/atm/fore_200e.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/atm/he.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/atm/horizon.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/atm/idt77105.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/atm/idt77252.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/atm/iphase.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/atm/lanai.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/atm/nicstar.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/atm/solos-pci.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/atm/suni.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/atm/uPD98402.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/atm/zatm.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/block
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/block/DAC960.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/block/aoe
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/block/aoe/aoe.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/block/cciss.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/block/cpqarray.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/block/cryptoloop.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/block/floppy.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/block/nbd.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/block/osdblk.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/block/sx8.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/bluetooth
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/bluetooth/bcm203x.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/bluetooth/bfusb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/bluetooth/bluecard_cs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/bluetooth/bpa10x.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/bluetooth/bt3c_cs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/bluetooth/btmrvl.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/bluetooth/btmrvl_sdio.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/bluetooth/btsdio.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/bluetooth/btuart_cs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/bluetooth/btusb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/bluetooth/dtl1_cs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/bluetooth/hci_uart.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/bluetooth/hci_vhci.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/agp
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/agp/agpgart.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/agp/ali-agp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/agp/amd-k7-agp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/agp/amd64-agp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/agp/ati-agp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/agp/efficeon-agp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/agp/intel-agp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/agp/nvidia-agp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/agp/sis-agp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/agp/sworks-agp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/agp/via-agp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/cs5535_gpio.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/hangcheck-timer.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/hw_random
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/hw_random/amd-rng.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/hw_random/geode-rng.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/hw_random/intel-rng.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/hw_random/rng-core.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/hw_random/timeriomem-rng.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/hw_random/via-rng.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/i8k.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/ipmi
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/ipmi/ipmi_devintf.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/ipmi/ipmi_msghandler.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/ipmi/ipmi_poweroff.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/ipmi/ipmi_si.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/ipmi/ipmi_watchdog.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/lp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/nozomi.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/nsc_gpio.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/nvram.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/pc8736x_gpio.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/pcmcia
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/pcmcia/ipwireless
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/pcmcia/ipwireless/ipwireless.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/pcmcia/synclink_cs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/ppdev.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/scx200_gpio.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/char/toshiba.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/clocksource
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/clocksource/scx200_hrt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/connector
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/connector/cn.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/crypto
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/crypto/geode-aes.ko.off
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/crypto/hifn_795x.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/crypto/padlock-aes.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/crypto/padlock-sha.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/dca
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/dca/dca.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/dma
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/dma/dmatest.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/dma/ioat
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/dma/ioat/ioatdma.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/firewire
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/firewire/firewire-core.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/firewire/firewire-net.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/firewire/firewire-ohci.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/firewire/firewire-sbp2.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/firmware
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/firmware/iscsi_ibft.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/gpu
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/gpu/drm
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/gpu/drm/drm.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/gpu/drm/drm_kms_helper.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/gpu/drm/i810
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/gpu/drm/i810/i810.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/gpu/drm/i830
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/gpu/drm/i830/i830.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/gpu/drm/i915
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/gpu/drm/i915/i915.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/gpu/drm/mga
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/gpu/drm/mga/mga.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/gpu/drm/r128
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/gpu/drm/r128/r128.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/gpu/drm/radeon
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/gpu/drm/radeon/radeon.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/gpu/drm/savage
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/gpu/drm/savage/savage.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/gpu/drm/sis
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/gpu/drm/sis/sis.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/gpu/drm/tdfx
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/gpu/drm/tdfx/tdfx.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/gpu/drm/ttm
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/gpu/drm/ttm/ttm.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/gpu/drm/via
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/gpu/drm/via/via.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hid
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hid/hid-a4tech.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hid/hid-apple.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hid/hid-belkin.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hid/hid-cherry.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hid/hid-chicony.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hid/hid-cypress.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hid/hid-drff.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hid/hid-ezkey.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hid/hid-gaff.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hid/hid-gyration.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hid/hid-kensington.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hid/hid-kye.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hid/hid-logitech.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hid/hid-microsoft.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hid/hid-monterey.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hid/hid-ntrig.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hid/hid-petalynx.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hid/hid-pl.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hid/hid-samsung.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hid/hid-sjoy.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hid/hid-sony.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hid/hid-sunplus.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hid/hid-tmff.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hid/hid-topseed.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hid/hid-twinhan.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hid/hid-wacom.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hid/hid-zpff.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hid/usbhid
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hid/usbhid/usbhid.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/abituguru.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/abituguru3.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/ad7414.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/ad7418.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/adm1021.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/adm1025.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/adm1026.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/adm1029.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/adm1031.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/adm9240.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/ads7828.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/adt7462.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/adt7470.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/adt7473.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/adt7475.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/applesmc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/asb100.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/asus_atk0110.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/atxp1.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/coretemp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/dme1737.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/ds1621.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/f71805f.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/f71882fg.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/f75375s.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/fschmd.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/g760a.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/gl518sm.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/gl520sm.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/hdaps.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/hp_accel.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/hwmon-vid.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/hwmon.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/i5k_amb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/ibmaem.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/ibmpex.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/it87.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/k8temp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/lis3lv02d.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/lm63.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/lm75.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/lm77.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/lm78.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/lm80.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/lm83.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/lm85.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/lm87.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/lm90.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/lm92.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/lm93.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/lm95241.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/ltc4215.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/ltc4245.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/max1619.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/max6650.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/pc87360.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/pc87427.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/pcf8591.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/sis5595.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/smsc47b397.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/smsc47m1.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/smsc47m192.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/thmc50.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/tmp401.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/tmp421.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/via686a.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/vt1211.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/vt8231.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/w83627ehf.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/w83627hf.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/w83781d.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/w83791d.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/w83792d.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/w83793.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/w83l785ts.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/w83l786ng.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/wm831x-hwmon.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/hwmon/wm8350-hwmon.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/i2c
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/i2c/algos
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/i2c/algos/i2c-algo-bit.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/i2c/algos/i2c-algo-pca.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/i2c/busses
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/i2c/busses/i2c-ali1535.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/i2c/busses/i2c-ali1563.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/i2c/busses/i2c-ali15x3.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/i2c/busses/i2c-amd756-s4882.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/i2c/busses/i2c-amd756.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/i2c/busses/i2c-amd8111.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/i2c/busses/i2c-i801.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/i2c/busses/i2c-isch.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/i2c/busses/i2c-nforce2-s4985.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/i2c/busses/i2c-nforce2.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/i2c/busses/i2c-ocores.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/i2c/busses/i2c-parport-light.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/i2c/busses/i2c-parport.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/i2c/busses/i2c-pca-platform.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/i2c/busses/i2c-piix4.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/i2c/busses/i2c-scmi.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/i2c/busses/i2c-simtec.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/i2c/busses/i2c-sis5595.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/i2c/busses/i2c-sis630.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/i2c/busses/i2c-sis96x.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/i2c/busses/i2c-stub.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/i2c/busses/i2c-tiny-usb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/i2c/busses/i2c-via.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/i2c/busses/i2c-viapro.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/i2c/busses/i2c-voodoo3.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/i2c/busses/scx200_acb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/i2c/chips
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/i2c/chips/ds1682.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/i2c/chips/tsl2550.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/i2c/i2c-core.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/i2c/i2c-dev.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ieee802154
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ieee802154/fakehard.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/input
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/input/ff-memless.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/input/input-polldev.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/input/keyboard
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/input/keyboard/adp5588-keys.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/input/keyboard/lkkbd.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/input/keyboard/lm8323.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/input/keyboard/max7359_keypad.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/input/keyboard/newtonkbd.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/input/keyboard/opencores-kbd.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/input/keyboard/stowaway.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/input/keyboard/sunkbd.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/input/keyboard/xtkbd.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/input/misc
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/input/misc/apanel.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/input/misc/ati_remote.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/input/misc/ati_remote2.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/input/misc/cm109.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/input/misc/keyspan_remote.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/input/misc/pcf50633-input.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/input/misc/pcspkr.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/input/misc/powermate.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/input/misc/winbond-cir.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/input/misc/wm831x-on.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/input/misc/yealink.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/capi
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/capi/capi.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/capi/capidrv.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/capi/kernelcapi.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/divert
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/divert/dss1_divert.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/gigaset
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/gigaset/bas_gigaset.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/gigaset/gigaset.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/gigaset/ser_gigaset.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/gigaset/usb_gigaset.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/hardware
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/hardware/avm
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/hardware/avm/avm_cs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/hardware/avm/b1.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/hardware/avm/b1dma.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/hardware/avm/b1pci.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/hardware/avm/b1pcmcia.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/hardware/avm/c4.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/hardware/avm/t1pci.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/hardware/eicon
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/hardware/eicon/diva_idi.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/hardware/eicon/diva_mnt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/hardware/eicon/divacapi.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/hardware/eicon/divadidd.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/hardware/eicon/divas.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/hisax
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/hisax/avma1_cs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/hisax/elsa_cs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/hisax/hfc4s8s_l1.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/hisax/hfc_usb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/hisax/hisax.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/hisax/hisax_fcpcipnp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/hisax/hisax_isac.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/hisax/hisax_st5481.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/hisax/sedlbauer_cs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/hisax/teles_cs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/hysdn
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/hysdn/hysdn.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/i4l
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/i4l/isdn.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/i4l/isdn_bsdcomp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/isdn/i4l/isdnhdlc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/leds
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/leds/led-class.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/leds/leds-alix2.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/leds/leds-bd2802.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/leds/leds-clevo-mail.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/leds/leds-lp3944.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/leds/leds-net48xx.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/leds/leds-pca9532.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/leds/leds-pca955x.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/leds/leds-wm831x-status.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/leds/leds-wm8350.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/leds/leds-wrap.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/leds/ledtrig-backlight.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/leds/ledtrig-default-on.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/leds/ledtrig-heartbeat.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/leds/ledtrig-netdev.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/leds/ledtrig-timer.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/md
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/md/dm-crypt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/md/dm-delay.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/md/dm-log-userspace.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/md/dm-log.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/md/dm-mirror.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/md/dm-mod.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/md/dm-multipath.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/md/dm-queue-length.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/md/dm-region-hash.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/md/dm-round-robin.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/md/dm-service-time.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/md/dm-snapshot.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/md/dm-zero.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/md/linear.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/md/md-mod.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/md/multipath.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/md/raid0.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/md/raid1.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/md/raid10.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/md/raid456.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/md/raid6_pq.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/media
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/media/common
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/media/common/tuners
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/media/common/tuners/mc44s803.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/media/common/tuners/mt20xx.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/media/common/tuners/tda8290.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/media/common/tuners/tda9887.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/media/common/tuners/tea5761.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/media/common/tuners/tea5767.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/media/common/tuners/tuner-simple.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/media/common/tuners/tuner-types.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/media/common/tuners/tuner-xc2028.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/media/common/tuners/xc5000.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/media/dvb
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/media/dvb/dvb-core
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/media/dvb/dvb-core/dvb-core.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/media/video
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/media/video/v4l1-compat.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/media/video/v4l2-common.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/media/video/v4l2-int-device.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/media/video/videodev.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/memstick
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/memstick/core
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/memstick/core/memstick.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/memstick/core/mspro_block.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/memstick/host
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/memstick/host/jmb38x_ms.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/memstick/host/tifm_ms.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/message
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/message/fusion
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/message/fusion/mptbase.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/message/fusion/mptctl.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/message/fusion/mptfc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/message/fusion/mptsas.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/message/fusion/mptscsih.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/message/fusion/mptspi.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mfd
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mfd/ab3100-core.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mfd/ab3100-otp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mfd/htc-pasic3.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mfd/mfd-core.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mfd/pcf50633-adc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mfd/pcf50633-core.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mfd/pcf50633-gpio.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mfd/sm501.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mfd/wm831x.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mfd/wm8350-i2c.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mfd/wm8350.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mfd/wm8400-core.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/misc
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/misc/c2port
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/misc/c2port/c2port-duramar2150.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/misc/c2port/core.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/misc/cb710
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/misc/cb710/cb710.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/misc/eeprom
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/misc/eeprom/at24.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/misc/eeprom/eeprom.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/misc/eeprom/eeprom_93cx6.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/misc/eeprom/max6875.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/misc/enclosure.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/misc/hpilo.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/misc/ics932s401.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/misc/isl29003.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/misc/tifm_7xx1.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/misc/tifm_core.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mmc
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mmc/card
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mmc/card/mmc_block.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mmc/card/mmc_test.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mmc/card/sdio_uart.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mmc/core
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mmc/core/mmc_core.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mmc/host
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mmc/host/cb710-mmc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mmc/host/ricoh_mmc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mmc/host/sdhci-pci.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mmc/host/sdhci-pltfm.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mmc/host/sdhci.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mmc/host/sdricoh_cs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mmc/host/tifm_sd.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mmc/host/via-sdmmc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mmc/host/wbsd.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mtd
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mtd/ar7part.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mtd/chips
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mtd/chips/chipreg.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mtd/lpddr
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mtd/lpddr/lpddr_cmds.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mtd/lpddr/qinfo_probe.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mtd/maps
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mtd/maps/physmap.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mtd/mtd.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mtd/mtd_blkdevs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mtd/mtdblock.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mtd/mtdchar.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mtd/mtdconcat.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mtd/tests
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mtd/tests/mtd_oobtest.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mtd/tests/mtd_pagetest.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mtd/tests/mtd_readtest.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mtd/tests/mtd_speedtest.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mtd/tests/mtd_stresstest.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mtd/tests/mtd_subpagetest.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mtd/tests/mtd_torturetest.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mtd/ubi
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/mtd/ubi/ubi.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/3c59x.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/8139cp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/8139too.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/8390.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/acenic.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/amd8111e.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/atl1c
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/atl1c/atl1c.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/atl1e
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/atl1e/atl1e.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/atlx
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/atlx/atl1.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/atlx/atl2.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/atp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/b44.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/benet
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/benet/be2net.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/bnx2.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/bnx2x.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/bonding
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/bonding/bonding.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/bsd_comp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/cassini.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/chelsio
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/chelsio/cxgb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/cnic.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/cxgb3
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/cxgb3/cxgb3.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/de600.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/de620.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/dl2k.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/dnet.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/dummy.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/e100.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/e1000
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/e1000/e1000.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/e1000e
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/e1000e/e1000e.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/enic
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/enic/enic.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/epic100.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/eql.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/ethoc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/fealnx.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/forcedeth.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/hamachi.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/hp100.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/ifb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/igb
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/igb/igb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/igbvf
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/igbvf/igbvf.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/imq.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/ipg.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/irda
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/irda/ali-ircc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/irda/donauboe.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/irda/irda-usb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/irda/irtty-sir.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/irda/kingsun-sir.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/irda/ks959-sir.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/irda/ksdazzle-sir.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/irda/mcs7780.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/irda/nsc-ircc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/irda/sir-dev.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/irda/smsc-ircc2.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/irda/stir4200.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/irda/via-ircc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/irda/vlsi_ir.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/irda/w83977af_ir.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/ixgb
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/ixgb/ixgb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/ixgbe
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/ixgbe/ixgbe.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/jme.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/ks8842.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/ks8851_mll.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/macvlan.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/mdio.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/mii.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/mlx4
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/mlx4/mlx4_core.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/mlx4/mlx4_en.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/myri10ge
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/myri10ge/myri10ge.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/natsemi.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/ne2k-pci.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/netxen
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/netxen/netxen_nic.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/niu.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/ns83820.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/pcmcia
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/pcmcia/3c574_cs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/pcmcia/3c589_cs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/pcmcia/axnet_cs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/pcmcia/fmvj18x_cs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/pcmcia/nmclan_cs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/pcmcia/pcnet_cs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/pcmcia/smc91c92_cs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/pcmcia/xirc2ps_cs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/pcnet32.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/phy
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/phy/broadcom.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/phy/cicada.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/phy/davicom.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/phy/et1011c.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/phy/icplus.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/phy/lxt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/phy/marvell.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/phy/mdio-bitbang.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/phy/national.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/phy/qsemi.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/phy/realtek.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/phy/smsc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/phy/ste10Xp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/phy/vitesse.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/ppp_async.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/ppp_deflate.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/ppp_generic.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/ppp_mppe.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/ppp_synctty.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/pppoe.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/pppol2tp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/pppox.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/qla3xxx.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/qlge
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/qlge/qlge.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/r6040.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/r8169.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/s2io.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/sb1000.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/sc92031.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/sis190.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/sis900.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/skge.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/sky2.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/slhc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/slip.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/smsc9420.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/starfire.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/sundance.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/sungem.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/sungem_phy.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/sunhme.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/tehuti.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/tg3.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/tlan.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/tulip
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/tulip/de2104x.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/tulip/de4x5.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/tulip/dmfe.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/tulip/tulip.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/tulip/uli526x.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/tulip/winbond-840.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/tulip/xircom_cb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/tun.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/typhoon.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/usb
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/usb/asix.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/usb/catc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/usb/cdc-phonet.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/usb/cdc_eem.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/usb/cdc_ether.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/usb/cdc_subset.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/usb/dm9601.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/usb/gl620a.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/usb/hso.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/usb/int51x1.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/usb/kaweth.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/usb/mcs7830.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/usb/net1080.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/usb/pegasus.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/usb/plusb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/usb/rndis_host.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/usb/rtl8150.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/usb/smsc95xx.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/usb/usbnet.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/usb/zaurus.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/veth.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/via-rhine.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/via-velocity.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/vxge
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/vxge/vxge.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wimax
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wimax/i2400m
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wimax/i2400m/i2400m-sdio.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wimax/i2400m/i2400m-usb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wimax/i2400m/i2400m.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/adm8211.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/airo.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/airo_cs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/at76c50x-usb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/ath
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/ath/ar9170
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/ath/ar9170/ar9170usb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/ath/ath.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/ath/ath5k
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/ath/ath5k/ath5k.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/ath/ath9k
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/ath/ath9k/ath9k.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/atmel.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/atmel_cs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/atmel_pci.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/b43
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/b43/b43.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/b43legacy
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/b43legacy/b43legacy.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/hostap
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/hostap/hostap.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/hostap/hostap_cs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/hostap/hostap_pci.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/hostap/hostap_plx.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/ipw2x00
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/ipw2x00/ipw2100.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/ipw2x00/ipw2200.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/ipw2x00/libipw.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/iwlwifi
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/iwlwifi/iwl3945.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/iwlwifi/iwlagn.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/iwlwifi/iwlcore.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/iwmc3200wifi
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/iwmc3200wifi/iwmc3200wifi.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/libertas
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/libertas/libertas.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/libertas/libertas_cs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/libertas/libertas_sdio.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/libertas/usb8xxx.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/libertas_tf
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/libertas_tf/libertas_tf.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/libertas_tf/libertas_tf_usb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/mwl8k.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/orinoco
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/orinoco/orinoco.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/orinoco/orinoco_cs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/orinoco/orinoco_nortel.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/orinoco/orinoco_pci.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/orinoco/orinoco_plx.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/orinoco/orinoco_tmd.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/orinoco/spectrum_cs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/p54
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/p54/p54common.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/p54/p54pci.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/p54/p54usb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/prism54
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/prism54/prism54.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/ray_cs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/rndis_wlan.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/rt2x00
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt2400pci.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt2500pci.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt2500usb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt2800usb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt2x00lib.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt2x00pci.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt2x00usb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt61pci.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt73usb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/rtl818x
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/rtl818x/rtl8180.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/rtl818x/rtl8187.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/wl12xx
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/wl12xx/wl1251.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/wl12xx/wl1251_sdio.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/wl3501_cs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/zd1201.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/zd1211rw
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/zd1211rw/zd1211rw.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/yellowfin.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/parport
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/parport/parport.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/parport/parport_ax88796.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/parport/parport_cs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/parport/parport_pc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/pci
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/pci/pci-stub.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/pcmcia
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/pcmcia/i82092.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/pcmcia/pcmcia.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/pcmcia/pcmcia_core.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/pcmcia/pd6729.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/pcmcia/rsrc_nonstatic.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/pcmcia/yenta_socket.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/platform
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/platform/x86
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/platform/x86/acer-wmi.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/platform/x86/asus-laptop.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/platform/x86/asus_acpi.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/platform/x86/compal-laptop.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/platform/x86/dell-wmi.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/platform/x86/fujitsu-laptop.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/platform/x86/hp-wmi.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/platform/x86/intel_menlow.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/platform/x86/msi-laptop.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/platform/x86/panasonic-laptop.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/platform/x86/sony-laptop.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/platform/x86/tc1100-wmi.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/platform/x86/thinkpad_acpi.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/platform/x86/topstar-laptop.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/platform/x86/toshiba_acpi.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/platform/x86/wmi.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/power
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/power/bq27x00_battery.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/power/ds2782_battery.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/power/max17040_battery.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/power/pcf50633-charger.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/power/wm831x_power.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/power/wm8350_power.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/pps
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/pps/pps_core.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/rtc
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/rtc/rtc-ab3100.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/rtc/rtc-bq4802.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/rtc/rtc-cmos.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/rtc/rtc-core.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/rtc/rtc-ds1286.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/rtc/rtc-ds1307.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/rtc/rtc-ds1374.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/rtc/rtc-ds1511.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/rtc/rtc-ds1553.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/rtc/rtc-ds1672.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/rtc/rtc-ds1742.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/rtc/rtc-fm3130.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/rtc/rtc-isl1208.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/rtc/rtc-lib.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/rtc/rtc-m41t80.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/rtc/rtc-m48t35.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/rtc/rtc-m48t59.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/rtc/rtc-m48t86.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/rtc/rtc-max6900.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/rtc/rtc-pcf50633.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/rtc/rtc-pcf8563.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/rtc/rtc-pcf8583.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/rtc/rtc-rs5c372.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/rtc/rtc-rx8025.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/rtc/rtc-rx8581.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/rtc/rtc-s35390a.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/rtc/rtc-stk17ta8.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/rtc/rtc-test.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/rtc/rtc-v3020.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/rtc/rtc-wm831x.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/rtc/rtc-wm8350.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/rtc/rtc-x1205.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/3w-9xxx.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/3w-xxxx.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/BusLogic.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/a100u2w.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/aacraid
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/aacraid/aacraid.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/advansys.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/aic7xxx
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/aic7xxx/aic79xx.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/aic7xxx/aic7xxx.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/aic94xx
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/aic94xx/aic94xx.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/arcmsr
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/arcmsr/arcmsr.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/atp870u.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/be2iscsi
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/be2iscsi/be2iscsi.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/bfa
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/bfa/bfa.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/bnx2i
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/bnx2i/bnx2i.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/ch.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/cxgb3i
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/cxgb3i/cxgb3i.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/dc395x.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/device_handler
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/device_handler/scsi_dh.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/device_handler/scsi_dh_alua.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/device_handler/scsi_dh_emc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/device_handler/scsi_dh_hp_sw.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/device_handler/scsi_dh_rdac.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/dmx3191d.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/dpt_i2o.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/eata.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/fcoe
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/fcoe/fcoe.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/fcoe/libfcoe.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/fdomain.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/fnic
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/fnic/fnic.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/gdth.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/hptiop.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/imm.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/initio.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/ipr.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/ips.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/iscsi_tcp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/libfc
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/libfc/libfc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/libiscsi.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/libiscsi_tcp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/libsas
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/libsas/libsas.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/lpfc
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/lpfc/lpfc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/megaraid
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/megaraid.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/megaraid/megaraid_mbox.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/megaraid/megaraid_mm.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/megaraid/megaraid_sas.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/mvsas
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/mvsas/mvsas.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/nsp32.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/osd
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/osd/libosd.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/osd/osd.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/pcmcia
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/pcmcia/aha152x_cs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/pcmcia/fdomain_cs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/pcmcia/nsp_cs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/pcmcia/qlogic_cs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/pcmcia/sym53c500_cs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/pmcraid.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/ppa.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/qla1280.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/qla2xxx
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/qla2xxx/qla2xxx.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/qla4xxx
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/qla4xxx/qla4xxx.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/qlogicfas408.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/scsi_mod.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/scsi_transport_fc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/scsi_transport_iscsi.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/scsi_transport_sas.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/scsi_transport_spi.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/scsi_transport_srp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/scsi_wait_scan.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/sd_mod.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/ses.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/sg.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/sr_mod.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/stex.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/sym53c8xx_2
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/sym53c8xx_2/sym53c8xx.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/scsi/tmscsim.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/serial
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/serial/jsm
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/serial/jsm/jsm.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/serial/serial_core.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ssb
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/ssb/ssb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/staging
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/staging/et131x
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/staging/et131x/et131x.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/staging/slicoss
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/staging/slicoss/slicoss.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/uio
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/uio/uio.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/uio/uio_aec.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/uio/uio_cif.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/uio/uio_pci_generic.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/uio/uio_pdrv.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/uio/uio_pdrv_genirq.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/uio/uio_sercos3.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/uio/uio_smx.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/atm
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/atm/cxacru.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/atm/speedtch.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/atm/ueagle-atm.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/atm/usbatm.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/atm/xusbatm.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/class
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/class/cdc-acm.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/class/cdc-wdm.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/class/usblp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/class/usbtmc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/core
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/core/usbcore.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/host
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/host/ehci-hcd.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/host/hwa-hc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/host/isp116x-hcd.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/host/isp1362-hcd.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/host/ohci-hcd.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/host/oxu210hp-hcd.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/host/r8a66597-hcd.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/host/sl811-hcd.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/host/u132-hcd.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/host/uhci-hcd.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/host/whci
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/host/whci/whci-hcd.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/host/xhci.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/misc
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/misc/berry_charge.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/misc/cypress_cy7c63.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/misc/cytherm.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/misc/emi26.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/misc/emi62.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/misc/ftdi-elan.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/misc/iowarrior.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/misc/isight_firmware.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/misc/sisusbvga
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/misc/sisusbvga/sisusbvga.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/misc/usblcd.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/misc/usbled.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/misc/usbsevseg.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/misc/uss720.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/misc/vstusb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/otg
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/otg/nop-usb-xceiv.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/serial
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/serial/aircable.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/serial/ark3116.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/serial/belkin_sa.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/serial/ch341.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/serial/cp210x.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/serial/cypress_m8.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/serial/digi_acceleport.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/serial/empeg.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/serial/ftdi_sio.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/serial/garmin_gps.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/serial/hp4x.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/serial/io_edgeport.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/serial/ipw.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/serial/iuu_phoenix.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/serial/keyspan_pda.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/serial/mct_u232.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/serial/mos7720.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/serial/mos7840.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/serial/moto_modem.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/serial/opticon.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/serial/option.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/serial/oti6858.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/serial/pl2303.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/serial/safe_serial.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/serial/siemens_mpi.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/serial/sierra.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/serial/spcp8x5.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/serial/symbolserial.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/serial/ti_usb_3410_5052.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/serial/usbserial.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/serial/whiteheat.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/storage
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/storage/ums-alauda.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/storage/ums-cypress.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/storage/ums-freecom.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/storage/ums-isd200.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/storage/ums-jumpshot.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/storage/ums-karma.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/storage/ums-onetouch.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/storage/ums-sddr09.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/storage/ums-sddr55.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/storage/ums-usbat.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/storage/usb-storage.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/wusbcore
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/wusbcore/wusb-cbaf.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/wusbcore/wusb-wa.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/usb/wusbcore/wusbcore.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/uwb
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/uwb/hwa-rc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/uwb/i1480
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/uwb/i1480/dfu
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/uwb/i1480/dfu/i1480-dfu-usb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/uwb/i1480/i1480-est.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/uwb/i1480/i1480u-wlp
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/uwb/i1480/i1480u-wlp/i1480u-wlp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/uwb/umc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/uwb/uwb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/uwb/whc-rc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/uwb/whci.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/uwb/wlp
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/uwb/wlp/wlp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/arkfb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/aty
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/aty/aty128fb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/aty/atyfb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/aty/radeonfb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/backlight
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/backlight/cr_bllcd.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/backlight/generic_bl.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/backlight/kb3886_bl.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/backlight/lcd.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/backlight/mbp_nvidia_bl.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/backlight/platform_lcd.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/backlight/progear_bl.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/backlight/wm831x_bl.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/broadsheetfb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/cirrusfb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/cyber2000fb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/display
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/display/display.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/fb_ddc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/fb_sys_fops.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/geode
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/geode/gx1fb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/geode/gxfb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/geode/lxfb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/i810
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/i810/i810fb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/kyro
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/kyro/kyrofb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/macmodes.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/matrox
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/matrox/g450_pll.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/matrox/i2c-matroxfb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/matrox/matroxfb_DAC1064.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/matrox/matroxfb_Ti3026.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/matrox/matroxfb_accel.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/matrox/matroxfb_base.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/matrox/matroxfb_crtc2.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/matrox/matroxfb_g450.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/matrox/matroxfb_maven.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/matrox/matroxfb_misc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/mb862xx
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/mb862xx/mb862xxfb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/metronomefb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/neofb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/nvidia
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/nvidia/nvidiafb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/output.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/pm2fb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/pm3fb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/riva
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/riva/rivafb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/s3fb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/savage
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/savage/savagefb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/sis
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/sis/sisfb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/sm501fb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/sstfb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/svgalib.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/syscopyarea.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/sysfillrect.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/sysimgblt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/tdfxfb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/tmiofb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/tridentfb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/uvesafb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/vermilion
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/vermilion/crvml.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/vermilion/vmlfb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/vgastate.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/via
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/via/viafb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/video/vt8623fb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/w1
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/w1/masters
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/w1/masters/ds2482.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/w1/masters/ds2490.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/w1/masters/matrox_w1.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/w1/slaves
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/w1/slaves/w1_bq27000.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/w1/slaves/w1_ds2431.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/w1/slaves/w1_ds2433.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/w1/slaves/w1_ds2760.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/w1/slaves/w1_smem.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/w1/slaves/w1_therm.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/w1/wire.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/acquirewdt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/advantechwdt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/alim1535_wdt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/alim7101_wdt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/cpu5wdt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/eurotechwdt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/hpwdt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/i6300esb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/iTCO_wdt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/ib700wdt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/ibmasr.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/it8712f_wdt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/it87_wdt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/machzwd.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/pc87413_wdt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/pcwd_pci.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/pcwd_usb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/sbc60xxwdt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/sbc7240_wdt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/sbc8360.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/sbc_epx_c3.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/sbc_fitpc2_wdt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/sc1200wdt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/sc520_wdt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/sch311x_wdt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/scx200_wdt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/smsc37b787_wdt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/softdog.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/w83627hf_wdt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/w83697hf_wdt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/w83697ug_wdt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/w83877f_wdt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/w83977f_wdt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/wafer5823wdt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/wdt_pci.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/wm831x_wdt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/watchdog/wm8350_wdt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/xen
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/xen/blktap2
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/xen/blktap2/blktap.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/xen/scsiback
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/xen/scsiback/xen-scsibk.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/xen/scsifront
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/xen/scsifront/xenscsi.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/xen/usbback
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/xen/usbback/usbbk.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/xen/usbfront
-#lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/xen/usbfront/xen-hcd.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/autofs
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/autofs/autofs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/autofs4
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/autofs4/autofs4.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/cifs
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/cifs/cifs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/ecryptfs
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/ecryptfs/ecryptfs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/exportfs
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/exportfs/exportfs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/ext2
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/ext2/ext2.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/ext3
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/ext3/ext3.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/ext4
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/ext4/ext4.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/fat
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/fat/fat.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/fat/vfat.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/fuse
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/fuse/cuse.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/fuse/fuse.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/isofs
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/isofs/isofs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/jbd
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/jbd/jbd.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/jbd2
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/jbd2/jbd2.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/jffs2
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/jffs2/jffs2.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/jfs
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/jfs/jfs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/lockd
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/lockd/lockd.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/mbcache.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/nfs
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/nfs/nfs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/nfs_common
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/nfs_common/nfs_acl.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/nfsd
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/nfsd/nfsd.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/quota
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/quota/quota_tree.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/quota/quota_v1.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/quota/quota_v2.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/reiser4
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/reiser4/reiser4.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/reiserfs
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/reiserfs/reiserfs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/smbfs
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/smbfs/smbfs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/udf
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/udf/udf.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/ufs
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/ufs/xfs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/xfs
-#lib/modules/2.6.32.61-ipfire-xen/kernel/fs/xfs/xfs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/lib
-#lib/modules/2.6.32.61-ipfire-xen/kernel/lib/crc-ccitt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/lib/crc-itu-t.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/lib/crc-t10dif.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/lib/crc16.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/lib/crc7.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/lib/libcrc32c.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/lib/lzo
-#lib/modules/2.6.32.61-ipfire-xen/kernel/lib/lzo/lzo_compress.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/lib/lzo/lzo_decompress.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/lib/ts_bm.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/lib/ts_fsm.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/lib/ts_kmp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/802
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/802/garp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/802/p8022.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/802/psnap.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/802/stp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/8021q
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/8021q/8021q.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/atm
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/atm/atm.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/atm/br2684.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/atm/clip.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/atm/pppoatm.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bluetooth
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bluetooth/bluetooth.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bluetooth/bnep
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bluetooth/bnep/bnep.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bluetooth/cmtp
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bluetooth/cmtp/cmtp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bluetooth/hidp
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bluetooth/hidp/hidp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bluetooth/l2cap.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bluetooth/rfcomm
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bluetooth/rfcomm/rfcomm.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bluetooth/sco.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bridge
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bridge/bridge.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bridge/netfilter
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bridge/netfilter/ebt_802_3.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bridge/netfilter/ebt_among.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bridge/netfilter/ebt_arp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bridge/netfilter/ebt_arpreply.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bridge/netfilter/ebt_dnat.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bridge/netfilter/ebt_ip.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bridge/netfilter/ebt_ip6.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bridge/netfilter/ebt_limit.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bridge/netfilter/ebt_log.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bridge/netfilter/ebt_mark.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bridge/netfilter/ebt_mark_m.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bridge/netfilter/ebt_nflog.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bridge/netfilter/ebt_pkttype.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bridge/netfilter/ebt_redirect.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bridge/netfilter/ebt_snat.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bridge/netfilter/ebt_stp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bridge/netfilter/ebt_ulog.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bridge/netfilter/ebt_vlan.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bridge/netfilter/ebtable_broute.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bridge/netfilter/ebtable_filter.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bridge/netfilter/ebtable_nat.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/bridge/netfilter/ebtables.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ieee802154
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ieee802154/af_802154.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ieee802154/nl802154.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ieee802154/wpan-class.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/ah4.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/esp4.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/inet_diag.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/ip_gre.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/ipcomp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/ipip.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter/arp_tables.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter/arpt_mangle.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter/arptable_filter.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter/ip_queue.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter/ip_tables.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter/ipt_CLUSTERIP.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter/ipt_ECN.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter/ipt_LOG.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter/ipt_MASQUERADE.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter/ipt_NETMAP.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter/ipt_REDIRECT.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter/ipt_REJECT.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter/ipt_ULOG.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter/ipt_addrtype.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter/ipt_ah.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter/ipt_ecn.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter/ipt_ipp2p.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter/iptable_filter.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter/iptable_mangle.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter/iptable_nat.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter/iptable_raw.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter/nf_conntrack_ipv4.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter/nf_defrag_ipv4.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter/nf_nat.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter/nf_nat_amanda.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter/nf_nat_ftp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter/nf_nat_h323.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter/nf_nat_irc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter/nf_nat_pptp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter/nf_nat_proto_dccp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter/nf_nat_proto_gre.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter/nf_nat_proto_sctp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter/nf_nat_proto_udplite.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter/nf_nat_sip.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter/nf_nat_snmp_basic.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/netfilter/nf_nat_tftp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/tcp_bic.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/tcp_cubic.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/tcp_diag.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/tcp_highspeed.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/tcp_htcp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/tcp_hybla.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/tcp_illinois.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/tcp_lp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/tcp_scalable.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/tcp_vegas.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/tcp_veno.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/tcp_westwood.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/tcp_yeah.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/tunnel4.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv4/xfrm4_tunnel.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv6
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv6/ah6.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv6/esp6.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv6/ip6_tunnel.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv6/ipcomp6.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv6/ipv6.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv6/mip6.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv6/netfilter
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv6/netfilter/ip6_queue.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv6/netfilter/ip6_tables.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv6/netfilter/ip6t_LOG.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv6/netfilter/ip6t_REJECT.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv6/netfilter/ip6t_ah.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv6/netfilter/ip6t_eui64.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv6/netfilter/ip6t_frag.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv6/netfilter/ip6t_hbh.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv6/netfilter/ip6t_ipv6header.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv6/netfilter/ip6t_mh.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv6/netfilter/ip6t_rt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv6/netfilter/ip6table_filter.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv6/netfilter/ip6table_mangle.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv6/netfilter/ip6table_raw.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv6/netfilter/nf_conntrack_ipv6.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv6/sit.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv6/tunnel6.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv6/xfrm6_mode_beet.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv6/xfrm6_mode_ro.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv6/xfrm6_mode_transport.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv6/xfrm6_mode_tunnel.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/ipv6/xfrm6_tunnel.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/irda
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/irda/ircomm
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/irda/ircomm/ircomm-tty.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/irda/ircomm/ircomm.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/irda/irda.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/irda/irlan
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/irda/irlan/irlan.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/irda/irnet
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/irda/irnet/irnet.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/key
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/key/af_key.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/llc
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/llc/llc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/mac80211
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/mac80211/mac80211.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/ipvs
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/ipvs/ip_vs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/nf_conntrack.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/nf_conntrack_amanda.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/nf_conntrack_ftp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/nf_conntrack_h323.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/nf_conntrack_irc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/nf_conntrack_netbios_ns.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/nf_conntrack_netlink.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/nf_conntrack_pptp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/nf_conntrack_proto_dccp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/nf_conntrack_proto_gre.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/nf_conntrack_proto_sctp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/nf_conntrack_proto_udplite.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/nf_conntrack_sane.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/nf_conntrack_sip.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/nf_conntrack_tftp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/nf_tproxy_core.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/nfnetlink.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/nfnetlink_log.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/nfnetlink_queue.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/x_tables.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_CLASSIFY.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_CONNMARK.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_DSCP.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_HL.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_IMQ.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_LED.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_MARK.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_NFLOG.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_NFQUEUE.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_NOTRACK.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_RATEEST.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_TCPMSS.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_TCPOPTSTRIP.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_TPROXY.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_TRACE.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_cluster.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_comment.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_connbytes.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_connlimit.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_connmark.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_conntrack.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_dccp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_dscp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_esp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_hashlimit.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_helper.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_hl.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_iprange.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_layer7.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_length.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_limit.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_mac.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_mark.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_multiport.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_osf.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_owner.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_physdev.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_pkttype.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_policy.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_quota.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_rateest.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_realm.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_recent.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_sctp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_socket.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_state.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_statistic.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_string.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_tcpmss.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_tcpudp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_time.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/netfilter/xt_u32.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/phonet
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/phonet/phonet.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/phonet/pn_pep.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/rds
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/rds/rds.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/rds/rds_tcp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/rfkill
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/rfkill/rfkill.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/rxrpc
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/rxrpc/af-rxrpc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/rxrpc/rxkad.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sched
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sched/act_gact.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sched/act_ipt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sched/act_mirred.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sched/act_nat.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sched/act_pedit.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sched/act_police.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sched/act_skbedit.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sched/cls_basic.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sched/cls_flow.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sched/cls_fw.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sched/cls_route.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sched/cls_rsvp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sched/cls_rsvp6.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sched/cls_tcindex.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sched/cls_u32.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sched/em_cmp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sched/em_meta.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sched/em_nbyte.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sched/em_text.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sched/em_u32.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sched/sch_atm.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sched/sch_cbq.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sched/sch_drr.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sched/sch_dsmark.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sched/sch_gred.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sched/sch_hfsc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sched/sch_htb.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sched/sch_ingress.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sched/sch_multiq.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sched/sch_netem.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sched/sch_prio.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sched/sch_red.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sched/sch_sfq.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sched/sch_tbf.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sched/sch_teql.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sunrpc
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sunrpc/auth_gss
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sunrpc/auth_gss/auth_rpcgss.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sunrpc/auth_gss/rpcsec_gss_krb5.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/sunrpc/sunrpc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/wimax
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/wimax/wimax.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/wireless
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/wireless/cfg80211.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/wireless/lib80211.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/wireless/lib80211_crypt_ccmp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/wireless/lib80211_crypt_tkip.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/wireless/lib80211_crypt_wep.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/xfrm
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/xfrm/xfrm_ipcomp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/net/xfrm/xfrm_user.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/ac97_bus.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/core
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/core/oss
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/core/oss/snd-mixer-oss.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/core/oss/snd-pcm-oss.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/core/seq
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/core/seq/oss
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/core/seq/oss/snd-seq-oss.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/core/seq/snd-seq-device.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/core/seq/snd-seq-dummy.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/core/seq/snd-seq-midi-emul.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/core/seq/snd-seq-midi-event.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/core/seq/snd-seq-midi.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/core/seq/snd-seq-virmidi.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/core/seq/snd-seq.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/core/snd-hwdep.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/core/snd-page-alloc.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/core/snd-pcm.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/core/snd-rawmidi.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/core/snd-timer.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/core/snd.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/drivers
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/drivers/mpu401
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/drivers/mpu401/snd-mpu401-uart.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/drivers/mpu401/snd-mpu401.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/drivers/opl3
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/drivers/opl3/snd-opl3-lib.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/drivers/opl3/snd-opl3-synth.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/drivers/snd-dummy.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/drivers/snd-mtpav.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/drivers/snd-mts64.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/drivers/snd-portman2x4.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/drivers/snd-serial-u16550.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/drivers/snd-virmidi.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/drivers/vx
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/drivers/vx/snd-vx-lib.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/i2c
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/i2c/other
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/i2c/other/snd-ak4114.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/i2c/other/snd-ak4117.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/i2c/other/snd-ak4xxx-adda.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/i2c/other/snd-pt2258.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/i2c/snd-cs8427.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/i2c/snd-i2c.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/isa
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/isa/sb
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/isa/sb/snd-sb-common.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/isa/sb/snd-sb16-dsp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/ac97
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/ac97/snd-ac97-codec.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/ali5451
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/ali5451/snd-ali5451.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/au88x0
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/au88x0/snd-au8810.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/au88x0/snd-au8820.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/au88x0/snd-au8830.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/ca0106
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/ca0106/snd-ca0106.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/cs46xx
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/cs46xx/snd-cs46xx.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/cs5535audio
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/cs5535audio/snd-cs5535audio.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/ctxfi
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/ctxfi/snd-ctxfi.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/echoaudio
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/echoaudio/snd-darla20.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/echoaudio/snd-darla24.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/echoaudio/snd-echo3g.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/echoaudio/snd-gina20.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/echoaudio/snd-gina24.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/echoaudio/snd-indigo.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/echoaudio/snd-indigodj.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/echoaudio/snd-indigodjx.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/echoaudio/snd-indigoio.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/echoaudio/snd-indigoiox.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/echoaudio/snd-layla20.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/echoaudio/snd-layla24.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/echoaudio/snd-mia.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/echoaudio/snd-mona.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/emu10k1
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/emu10k1/snd-emu10k1-synth.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/emu10k1/snd-emu10k1.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/emu10k1/snd-emu10k1x.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/hda
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/hda/snd-hda-codec-analog.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/hda/snd-hda-codec-atihdmi.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/hda/snd-hda-codec-ca0110.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/hda/snd-hda-codec-cirrus.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/hda/snd-hda-codec-cmedia.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/hda/snd-hda-codec-conexant.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/hda/snd-hda-codec-idt.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/hda/snd-hda-codec-intelhdmi.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/hda/snd-hda-codec-nvhdmi.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/hda/snd-hda-codec-realtek.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/hda/snd-hda-codec-si3054.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/hda/snd-hda-codec-via.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/hda/snd-hda-codec.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/hda/snd-hda-intel.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/ice1712
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/ice1712/snd-ice1712.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/ice1712/snd-ice1724.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/ice1712/snd-ice17xx-ak4xxx.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/korg1212
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/korg1212/snd-korg1212.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/lx6464es
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/lx6464es/snd-lx6464es.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/mixart
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/mixart/snd-mixart.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/nm256
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/nm256/snd-nm256.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/oxygen
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/oxygen/snd-hifier.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/oxygen/snd-oxygen-lib.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/oxygen/snd-oxygen.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/oxygen/snd-virtuoso.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/pcxhr
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/pcxhr/snd-pcxhr.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/riptide
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/riptide/snd-riptide.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/rme9652
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/rme9652/snd-hdsp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/rme9652/snd-hdspm.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/rme9652/snd-rme9652.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/snd-ad1889.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/snd-als300.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/snd-als4000.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/snd-atiixp-modem.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/snd-atiixp.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/snd-bt87x.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/snd-cmipci.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/snd-cs4281.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/snd-cs5530.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/snd-ens1370.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/snd-ens1371.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/snd-es1938.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/snd-es1968.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/snd-fm801.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/snd-intel8x0.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/snd-intel8x0m.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/snd-maestro3.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/snd-rme32.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/snd-rme96.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/snd-sis7019.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/snd-sonicvibes.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/snd-via82xx-modem.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/snd-via82xx.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/trident
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/trident/snd-trident.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/vx222
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/vx222/snd-vx222.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/ymfpci
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pci/ymfpci/snd-ymfpci.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pcmcia
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pcmcia/pdaudiocf
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pcmcia/pdaudiocf/snd-pdaudiocf.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pcmcia/vx
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/pcmcia/vx/snd-vxpocket.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/codecs
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/codecs/snd-soc-ad73311.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/codecs/snd-soc-ak4535.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/codecs/snd-soc-ak4642.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/codecs/snd-soc-cs4270.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/codecs/snd-soc-l3.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/codecs/snd-soc-max9877.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/codecs/snd-soc-pcm3008.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/codecs/snd-soc-spdif.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/codecs/snd-soc-ssm2602.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/codecs/snd-soc-tlv320aic23.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/codecs/snd-soc-tlv320aic3x.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/codecs/snd-soc-uda134x.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/codecs/snd-soc-uda1380.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm-hubs.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8350.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8400.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8510.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8523.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8580.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8728.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8731.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8750.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8753.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8776.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8900.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8903.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8940.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8960.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8961.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8971.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8974.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8988.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8990.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8993.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm9081.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soc/snd-soc-core.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/soundcore.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/synth
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/synth/emux
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/synth/emux/snd-emux-synth.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/synth/snd-util-mem.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/usb
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/usb/caiaq
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/usb/caiaq/snd-usb-caiaq.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/usb/snd-usb-audio.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/usb/snd-usb-lib.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/usb/usx2y
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/usb/usx2y/snd-usb-us122l.ko
-#lib/modules/2.6.32.61-ipfire-xen/kernel/sound/usb/usx2y/snd-usb-usx2y.ko
-#lib/modules/2.6.32.61-ipfire-xen/modules.alias
-#lib/modules/2.6.32.61-ipfire-xen/modules.alias.bin
-#lib/modules/2.6.32.61-ipfire-xen/modules.ccwmap
-#lib/modules/2.6.32.61-ipfire-xen/modules.dep
-#lib/modules/2.6.32.61-ipfire-xen/modules.dep.bin
-#lib/modules/2.6.32.61-ipfire-xen/modules.ieee1394map
-#lib/modules/2.6.32.61-ipfire-xen/modules.inputmap
-#lib/modules/2.6.32.61-ipfire-xen/modules.isapnpmap
-#lib/modules/2.6.32.61-ipfire-xen/modules.ofmap
-#lib/modules/2.6.32.61-ipfire-xen/modules.order
-#lib/modules/2.6.32.61-ipfire-xen/modules.pcimap
-#lib/modules/2.6.32.61-ipfire-xen/modules.seriomap
-#lib/modules/2.6.32.61-ipfire-xen/modules.symbols
-#lib/modules/2.6.32.61-ipfire-xen/modules.symbols.bin
-#lib/modules/2.6.32.61-ipfire-xen/modules.usbmap
-#lib/modules/2.6.32.61-ipfire-xen/source
index d214c08b46f287830682e3c1d2f37156732f5069..b03ee11c73ebbcecb278720905f25e35e773e50c 100644 (file)
@@ -66,7 +66,6 @@ usr/bin/mysql
 usr/bin/mysql_client_test
 usr/bin/mysql_config
 usr/bin/mysql_convert_table_format
-usr/bin/mysql_create_system_tables
 usr/bin/mysql_explain_log
 usr/bin/mysql_find_rows
 usr/bin/mysql_fix_extensions
@@ -101,11 +100,13 @@ usr/bin/replace
 usr/bin/resolve_stack_dump
 usr/bin/resolveip
 #usr/include/mysql
+#usr/include/mysql/decimal.h
 #usr/include/mysql/errmsg.h
 #usr/include/mysql/keycache.h
 #usr/include/mysql/m_ctype.h
 #usr/include/mysql/m_string.h
 #usr/include/mysql/my_alloc.h
+#usr/include/mysql/my_attribute.h
 #usr/include/mysql/my_config.h
 #usr/include/mysql/my_dbug.h
 #usr/include/mysql/my_dir.h
@@ -115,7 +116,6 @@ usr/bin/resolveip
 #usr/include/mysql/my_net.h
 #usr/include/mysql/my_no_pthread.h
 #usr/include/mysql/my_pthread.h
-#usr/include/mysql/my_semaphore.h
 #usr/include/mysql/my_sys.h
 #usr/include/mysql/my_xml.h
 #usr/include/mysql/mysql.h
@@ -132,7 +132,6 @@ usr/bin/resolveip
 #usr/include/mysql/sslopt-longopts.h
 #usr/include/mysql/sslopt-vars.h
 #usr/include/mysql/typelib.h
-#usr/info/mysql.info
 #usr/lib/libmysqlclient.so
 #usr/lib/libmysqlclient.so.15
 #usr/lib/libmysqlclient.so.15.0.0
@@ -157,39 +156,60 @@ usr/bin/resolveip
 #usr/lib/mysql/libmystrings.a
 #usr/lib/mysql/libmysys.a
 #usr/lib/mysql/libvio.a
-#usr/man/man1/msql2mysql.1
-#usr/man/man1/myisam_ftdump.1
-#usr/man/man1/myisamchk.1
-#usr/man/man1/myisamlog.1
-#usr/man/man1/myisampack.1
-#usr/man/man1/mysql.1
-#usr/man/man1/mysql.server.1
-#usr/man/man1/mysql_config.1
-#usr/man/man1/mysql_explain_log.1
-#usr/man/man1/mysql_fix_privilege_tables.1
-#usr/man/man1/mysql_upgrade.1
-#usr/man/man1/mysql_zap.1
-#usr/man/man1/mysqlaccess.1
-#usr/man/man1/mysqladmin.1
-#usr/man/man1/mysqlbinlog.1
-#usr/man/man1/mysqlcheck.1
-#usr/man/man1/mysqld.1
-#usr/man/man1/mysqld_multi.1
-#usr/man/man1/mysqld_safe.1
-#usr/man/man1/mysqldump.1
-#usr/man/man1/mysqlhotcopy.1
-#usr/man/man1/mysqlimport.1
-#usr/man/man1/mysqlman.1
-#usr/man/man1/mysqlmanager.1
-#usr/man/man1/mysqlshow.1
-#usr/man/man1/perror.1
-#usr/man/man1/replace.1
-#usr/man/man1/safe_mysqld.1
 usr/sbin/mysqld
 usr/sbin/mysqlmanager
-#usr/share/mysql
+#usr/share/info/mysql.info
+#usr/share/man/man1/comp_err.1
+#usr/share/man/man1/innochecksum.1
+#usr/share/man/man1/msql2mysql.1
+#usr/share/man/man1/my_print_defaults.1
+#usr/share/man/man1/myisam_ftdump.1
+#usr/share/man/man1/myisamchk.1
+#usr/share/man/man1/myisamlog.1
+#usr/share/man/man1/myisampack.1
+#usr/share/man/man1/mysql-stress-test.pl.1
+#usr/share/man/man1/mysql-test-run.pl.1
+#usr/share/man/man1/mysql.1
+#usr/share/man/man1/mysql.server.1
+#usr/share/man/man1/mysql_client_test.1
+#usr/share/man/man1/mysql_config.1
+#usr/share/man/man1/mysql_convert_table_format.1
+#usr/share/man/man1/mysql_explain_log.1
+#usr/share/man/man1/mysql_find_rows.1
+#usr/share/man/man1/mysql_fix_extensions.1
+#usr/share/man/man1/mysql_fix_privilege_tables.1
+#usr/share/man/man1/mysql_install_db.1
+#usr/share/man/man1/mysql_secure_installation.1
+#usr/share/man/man1/mysql_setpermission.1
+#usr/share/man/man1/mysql_tableinfo.1
+#usr/share/man/man1/mysql_tzinfo_to_sql.1
+#usr/share/man/man1/mysql_upgrade.1
+#usr/share/man/man1/mysql_waitpid.1
+#usr/share/man/man1/mysql_zap.1
+#usr/share/man/man1/mysqlaccess.1
+#usr/share/man/man1/mysqladmin.1
+#usr/share/man/man1/mysqlbinlog.1
+#usr/share/man/man1/mysqlbug.1
+#usr/share/man/man1/mysqlcheck.1
+#usr/share/man/man1/mysqld_multi.1
+#usr/share/man/man1/mysqld_safe.1
+#usr/share/man/man1/mysqldump.1
+#usr/share/man/man1/mysqldumpslow.1
+#usr/share/man/man1/mysqlhotcopy.1
+#usr/share/man/man1/mysqlimport.1
+#usr/share/man/man1/mysqlman.1
+#usr/share/man/man1/mysqlshow.1
+#usr/share/man/man1/mysqltest.1
+#usr/share/man/man1/perror.1
+#usr/share/man/man1/replace.1
+#usr/share/man/man1/resolve_stack_dump.1
+#usr/share/man/man1/resolveip.1
+#usr/share/man/man1/safe_mysqld.1
+#usr/share/man/man8/mysqld.8
+#usr/share/man/man8/mysqlmanager.8
+usr/share/mysql
 #usr/share/mysql/binary-configure
-usr/share/mysql/charsets
+#usr/share/mysql/charsets
 #usr/share/mysql/charsets/Index.xml
 #usr/share/mysql/charsets/README
 #usr/share/mysql/charsets/armscii8.xml
@@ -223,15 +243,15 @@ usr/share/mysql/charsets
 #usr/share/mysql/dutch
 #usr/share/mysql/dutch/errmsg.sys
 #usr/share/mysql/english
-usr/share/mysql/english/errmsg.sys
-usr/share/mysql/errmsg.txt
+#usr/share/mysql/english/errmsg.sys
+#usr/share/mysql/errmsg.txt
 #usr/share/mysql/estonian
 #usr/share/mysql/estonian/errmsg.sys
 #usr/share/mysql/fill_help_tables.sql
 #usr/share/mysql/french
 #usr/share/mysql/french/errmsg.sys
 #usr/share/mysql/german
-usr/share/mysql/german/errmsg.sys
+#usr/share/mysql/german/errmsg.sys
 #usr/share/mysql/greek
 #usr/share/mysql/greek/errmsg.sys
 #usr/share/mysql/hungarian
@@ -252,6 +272,10 @@ usr/share/mysql/german/errmsg.sys
 #usr/share/mysql/mysql-log-rotate
 #usr/share/mysql/mysql.server
 #usr/share/mysql/mysql_fix_privilege_tables.sql
+#usr/share/mysql/mysql_system_tables.sql
+#usr/share/mysql/mysql_system_tables_data.sql
+#usr/share/mysql/mysql_test_data_timezone.sql
+#usr/share/mysql/mysqld_multi.server
 #usr/share/mysql/ndb-config-2-node.ini
 #usr/share/mysql/norwegian
 #usr/share/mysql/norwegian-ny
index 266cfb44407fe8248f4af974e8145924a9d21ea1..37b1b2dac0829c98e3191bd8aa7ff55a9288c75b 100644 (file)
@@ -7,7 +7,6 @@
 ###############################################################################
 #
 # GPU Memory Settings (16,32,64 ... )
-# 16MB has a issue at reboot so we use 32MB memory split
 ###############################################################################
 gpu_mem=16
 
index aad40aead5f52f9888e8488d7f877dfed540c1d4..8caeb40c786746ca8641e202f4885638cb3e079c 100755 (executable)
Binary files a/config/u-boot/boot.scr and b/config/u-boot/boot.scr differ
index 0f7181535e00a727636386b3b796e5dfb502a299..4c9df1fa44ec9c1803e9cf66831807de847fd169 100755 (executable)
@@ -1,4 +1,5 @@
-fatload mmc 0:1 0x80000000 uImage-ipfire-omap
-fatload mmc 0:1 0x81600000 uInit-ipfire-omap
+fatload mmc 0:1 0x82000000 zImage-ipfire-multi
+fatload mmc 0:1 0x83600000 uInit-ipfire-multi
+fatload mmc 0:1 ${ftdaddr} omap4-${board_name}.dtb
 setenv bootargs vram=32M console=tty1 rootwait smsc95xx.macaddr=$usbethaddr root=/dev/mmcblk0p3 ro
-bootm 0x80000000 0x81600000
+bootz 0x82000000 0x83600000 ${ftdaddr}
index a14aff9df558e83d9170926c2c816487aec97384..749ad03c88558198310ff0c6cb1854cf97104dac 100644 (file)
@@ -50,7 +50,6 @@ OSDWidth = 624
 PauseLifetime = 1
 PausePriority = 10
 PrimaryDVB = 1
-PrimaryLimit = 0
 RecordingDirs = 1
 ResumeID = 0
 SetSystemTime = 0
@@ -82,5 +81,4 @@ streamdev-server.MaxClients = 5
 streamdev-server.ServerPort = 2004
 streamdev-server.StartHTTPServer = 1
 streamdev-server.StartServer = 1
-streamdev-server.SuspendMode = 1
 streamdev-server.VTPBindIP = 0.0.0.0
diff --git a/config/vim/vimrc b/config/vim/vimrc
new file mode 100644 (file)
index 0000000..18c1481
--- /dev/null
@@ -0,0 +1,42 @@
+if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"
+   set fileencodings=ucs-bom,utf-8,latin1
+endif
+
+set nocompatible
+set bs=indent,eol,start                " allow backspacing over everything in insert mode
+set viminfo='20,\"50           " read/write a .viminfo file, don't store more
+                               " than 50 lines of registers
+set history=50                 " keep 50 lines of command line history
+set ruler                      " show the cursor position all the time
+
+" Only do this part when compiled with support for autocommands
+if has("autocmd")
+       augroup ipfire
+       autocmd!
+
+       " In text files, always limit the width of text to 78 characters
+       " autocmd BufRead *.txt set tw=78
+
+       " When editing a file, always jump to the last cursor position
+       autocmd BufReadPost *
+       \ if line("'\"") > 0 && line ("'\"") <= line("$") |
+       \   exe "normal! g'\"" |
+       \ endif
+
+       " don't write swapfile on most commonly used directories for NFS mounts or USB sticks
+       autocmd BufNewFile,BufReadPre /media/*,/mnt/* set directory=~/tmp,/var/tmp,/tmp
+
+       " start with spec file template
+       autocmd BufNewFile *.spec 0r /usr/share/vim/vimfiles/template.spec
+
+       augroup END
+endif
+
+syntax on
+if (&term == "iterm") || (&term == "putty")
+  set background=dark
+endif
+
+" Don't wake up system with blinking cursor:
+" http://www.linuxpowertop.org/known.php
+let &guicursor = &guicursor . ",a:blinkon0"
index 05d9a78d0387b244f8663b151d6e576684c1f6f7..c424f5f14dff13fb9cbc35a67cd10fdf92e46d20 100755 (executable)
@@ -109,26 +109,26 @@ clear
 rm -rf /tmp/channels.conf
 if [[ "$W_SCAN_TYPE" == *DVB-T* ]]; then
        echo ":->W-SCAN DVB-T $(date +%Y%m%d%H%M)" >>/tmp/channels.conf
-       $WSCAN -f t -c $W_SCAN_COUNTRY -C UTF-8 -o 7 >>/tmp/channels.conf
+       $WSCAN -f t -c $W_SCAN_COUNTRY -C UTF-8 -o 2 >>/tmp/channels.conf
 fi
 if [[ "$W_SCAN_TYPE" == *DVB-C* ]]; then
        echo ":->W-SCAN DVB-C $(date +%Y%m%d%H%M)" >>/tmp/channels.conf
-       $WSCAN -f c -c $W_SCAN_COUNTRY -C UTF-8 -o 7 >>/tmp/channels.conf
+       $WSCAN -f c -c $W_SCAN_COUNTRY -C UTF-8 -o 2 >>/tmp/channels.conf
 fi
 if [[ "$W_SCAN_TYPE" == *DVB-S* ]]; then
        for SATELLITE in $W_SCAN_SATELLITE;
        do
                echo ":->W-SCAN DVB-S $SATELLITE $(date +%Y%m%d%H%M)" >>/tmp/channels.conf
-               $WSCAN -f s -s $SATELLITE -C UTF-8 -o 7 >>/tmp/channels.conf
+               $WSCAN -f s -s $SATELLITE -C UTF-8 -o 2 >>/tmp/channels.conf
        done
 fi
 if [[ "$W_SCAN_TYPE" == *ATSC-T* ]]; then
        echo ":->W-SCAN ATSC-T $(date +%Y%m%d%H%M)" >>/tmp/channels.conf
-       $WSCAN -f a -A 1 -c $W_SCAN_COUNTRY -C UTF-8 -o 7 >>/tmp/channels.conf
+       $WSCAN -f a -A 1 -c $W_SCAN_COUNTRY -C UTF-8 -o 2 >>/tmp/channels.conf
 fi
 if [[ "$W_SCAN_TYPE" == *ATSC-C* ]]; then
        echo ":->W-SCAN ATSC-C $(date +%Y%m%d%H%M)" >>/tmp/channels.conf
-       $WSCAN -f a -A 2 -c $W_SCAN_COUNTRY -C UTF-8 -o 7 >>/tmp/channels.conf
+       $WSCAN -f a -A 2 -c $W_SCAN_COUNTRY -C UTF-8 -o 2 >>/tmp/channels.conf
 fi
 
 # Save result to current dir.
index 49c1192f8738dcef44a53a8ba8767a875501fecf..3813572e00287031349e7abb0d67c46125a99ca4 100644 (file)
@@ -1,7 +1,9 @@
-Howto install Ipfire as a paravirtualized DomU:
+How to install Ipfire as a Xen DomU:
+
+- run xen-image-maker.sh to download and build the xen-images.
+  you need to be root because the skript do some loop mounts.
+  The script need wget and gpg for download and decode ipfire packages.
 
-- download image
-- extract the downloaded file, be careful, you need at least 2gb
 - edit the file ipfire.cfg
 - start ipfire:  "xm create ipfire.cfg"
 - if you get no errormessage go to console: "xm console ipfire-xen"
@@ -16,8 +18,3 @@ other usefull commands from the Dom0:
 - shutdown the fire: "xm shutdown ipfire-xen"
 - reset the fire: "xm destroy ipfire-xen"
 - look what is going on: "xm top" or "xm list"
-
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-+ This is image is build with the normal build environment +
-+             and not full tested yet                      +
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
index eeb35c9f21b135234c5c3ae55d7e86947874b7e6..594c82a5f9c3fcf844662069e4369ec847fa9986 100644 (file)
@@ -1,6 +1,6 @@
 bootloader = '/usr/bin/pygrub'
 
-memory = 128
+memory = 256
 name = "ipfire-xen"
 
 acpi=1
diff --git a/config/xen-image/xen-image-maker.sh b/config/xen-image/xen-image-maker.sh
new file mode 100644 (file)
index 0000000..4a7c7f2
--- /dev/null
@@ -0,0 +1,196 @@
+#/bin/bash
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2007-2013  Arne Fitzenreiter  <arne_f@ipfire.org>             #
+#                                                                             #
+# This program is free software: you can redistribute it and/or modify        #
+# it under the terms of the GNU General Public License as published by        #
+# the Free Software Foundation, either version 3 of the License, or           #
+# (at your option) any later version.                                         #
+#                                                                             #
+# This program is distributed in the hope that it will be useful,             #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
+# GNU General Public License for more details.                                #
+#                                                                             #
+# You should have received a copy of the GNU General Public License           #
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+
+SNAME=xxxSNAMExxx
+VERSION=xxxVERSIONxxx
+CORE=xxxCORExxx
+
+KERN_TYPE=pae
+KVER=xxxKVERxxx
+KERN_PACK=xxxKERN_PACKxxx
+KRNDOWN=http://mirror0.ipfire.org/pakfire2/$VERSION/paks
+
+###############################################################################
+# If you really want to use  outdated legacy kernel uncomment this lines. #####
+# Not recommended!!! ##########################################################
+######################
+#KERN_TYPE=xen
+#KVER=2.6.32.61
+#KERN_PACK=27
+#KRNDOWN=http://mirror0.ipfire.org/pakfire2/2.13/paks
+###############################################################################
+
+SIZEboot=30
+SIZEswap=512
+SIZEroot=512
+SIZEvar=950
+# ct'server does not support ext4 so change this to ext3.
+FSTYPE=ext4
+
+##############################################################################
+
+SOURCEISO=$SNAME-$VERSION.i586-full-core$CORE.iso
+HTTPDIR=http://download.ipfire.org/releases/ipfire-2.x/$VERSION-core$CORE
+
+TMPDIR=./ipfire-tmp
+ISODIR=$TMPDIR/iso
+MNThdd=$TMPDIR/harddisk
+
+IMGboot=./$SNAME-boot.img
+IMGswap=./$SNAME-swap.img
+IMGroot=./$SNAME-root.img
+IMGvar=./$SNAME-var.img
+
+KERNEL=linux-$KERN_TYPE-$KVER-$KERN_PACK.ipfire
+
+rm -rf $TMPDIR && mkdir -p $MNThdd && mkdir -p $ISODIR
+echo --------------------------------------------------------
+echo - Download $SOURCEISO ...
+echo --------------------------------------------------------
+wget $HTTPDIR/$SOURCEISO -O $TMPDIR/$SOURCEISO
+mount -o loop $TMPDIR/$SOURCEISO $ISODIR
+
+echo --------------------------------------------------------
+echo - Download $KERNEL ...
+echo --------------------------------------------------------
+wget $KRNDOWN/$KERNEL -O $TMPDIR/$KERNEL.gpg
+gpg -d $TMPDIR/$KERNEL.gpg > $TMPDIR/$KERNEL
+
+echo --------------------------------------------------------
+echo - Create Images ...
+echo --------------------------------------------------------
+
+#Create bootimage
+dd bs=1M if=/dev/zero of=$IMGboot count=$SIZEboot
+mkfs.ext2 -F $IMGboot
+
+#Create swapimage
+dd bs=1M if=/dev/zero of=$IMGswap count=$SIZEswap
+mkswap $IMGswap
+
+#Create rootimage
+dd bs=1M if=/dev/zero of=$IMGroot count=$SIZEroot
+mkfs.$FSTYPE -F $IMGroot
+
+#Create varimage
+dd bs=1M if=/dev/zero of=$IMGvar count=$SIZEvar
+mkfs.$FSTYPE -F $IMGvar
+
+echo --------------------------------------------------------
+echo - Intall IPFire to the Images ...
+echo --------------------------------------------------------
+
+# Mount Images
+mount -o loop $IMGroot $MNThdd
+mkdir $MNThdd/boot
+mkdir $MNThdd/var
+mkdir $MNThdd/var/log
+mount -o loop $IMGboot $MNThdd/boot
+mount -o loop $IMGvar $MNThdd/var
+
+# Install IPFire without kernel modules
+tar -C $MNThdd/ -xvf $ISODIR/$SNAME-$VERSION.tlz --lzma \
+       --exclude=lib/modules* --exclude=boot*
+
+#Install Kernel
+tar -C $MNThdd/opt/pakfire/tmp -xvf $TMPDIR/$KERNEL
+chroot $MNThdd /opt/pakfire/tmp/install.sh
+rm -rf $MNThdd/opt/pakfire/tmp/*
+
+#Create grub menuentry for pygrub
+mkdir $MNThdd/boot/grub
+echo "timeout 10"                          > $MNThdd/boot/grub/grub.conf
+echo "default 0"                          >> $MNThdd/boot/grub/grub.conf
+echo "title IPFire ($KERN_TYPE-kernel)"   >> $MNThdd/boot/grub/grub.conf
+echo "  kernel /vmlinuz-$KVER-ipfire-xen root=/dev/xvda3 rootdelay=10 panic=10 console=xvc0 ro" \
+                                         >> $MNThdd/boot/grub/grub.conf
+echo "  initrd /ipfirerd-$KVER-$KERN_TYPE.img" >> $MNThdd/boot/grub/grub.conf
+echo "# savedefault 0" >> $MNThdd/boot/grub/grub.conf
+
+ln -s grub.conf $MNThdd/boot/grub/menu.lst
+
+#create the meta-info of linux-kernel package
+echo ""                       >  $MNThdd/opt/pakfire/db/meta/linux-$KERN_TYPE
+echo "Name: linux-$KERN_TYPE" >> $MNThdd/opt/pakfire/db/meta/linux-$KERN_TYPE
+echo "ProgVersion: $KVER"     >> $MNThdd/opt/pakfire/db/meta/linux-$KERN_TYPE
+echo "Release: $KERN_PACK"    >> $MNThdd/opt/pakfire/db/meta/linux-$KERN_TYPE
+echo ""                       >> $MNThdd/opt/pakfire/db/meta/linux-$KERN_TYPE
+echo ""                       >  $MNThdd/opt/pakfire/db/installed/linux-$KERN_TYPE
+echo "Name: linux-$KERN_TYPE" >> $MNThdd/opt/pakfire/db/installed/linux-$KERN_TYPE
+echo "ProgVersion: $KVER"     >> $MNThdd/opt/pakfire/db/installed/linux-$KERN_TYPE
+echo "Release: $KERN_PACK"    >> $MNThdd/opt/pakfire/db/installed/linux-$KERN_TYPE
+echo ""                       >> $MNThdd/opt/pakfire/db/installed/linux-$KERN_TYPE
+
+#Set default configuration
+echo "LANGUAGE=en" >> $MNThdd/var/ipfire/main/settings
+echo "HOSTNAME=$SNAME" >> $MNThdd/var/ipfire/main/settings
+echo "THEME=ipfire" >> $MNThdd/var/ipfire/main/settings
+touch $MNThdd/lib/modules/$KVER-ipfire-$KERN_TYPE/modules.dep
+mkdir $MNThdd/proc
+mount --bind /proc $MNThdd/proc
+mount --bind /dev  $MNThdd/dev
+mount --bind /sys  $MNThdd/sys
+chroot $MNThdd /usr/bin/perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang"
+sed -i -e "s|DEVICE1|/dev/xvda1|g" $MNThdd/etc/fstab
+sed -i -e "s|DEVICE2|/dev/xvda2|g" $MNThdd/etc/fstab
+sed -i -e "s|DEVICE3|/dev/xvda3|g" $MNThdd/etc/fstab
+sed -i -e "s|DEVICE4|/dev/xvda4|g" $MNThdd/etc/fstab
+
+sed -i -e "s|FSTYPE|$FSTYPE|g" $MNThdd/etc/fstab
+
+#Remove root / fstab check
+rm -rf $MNThdd/etc/rc.d/rcsysinit.d/S19checkfstab
+#Remove console init
+rm -rf $MNThdd/etc/rc.d/rcsysinit.d/S70console
+
+#Add xvc0 to securetty
+echo xvc0 >> $MNThdd/etc/securetty
+
+#Add getty for xvc0
+echo "#Enable login for XEN" >> $MNThdd/etc/inittab
+echo "8:2345:respawn:/sbin/agetty xvc0 9600" >> $MNThdd/etc/inittab
+
+#Disable some initskripts
+echo "#!/bin/sh" > $MNThdd/etc/rc.d/init.d/setclock
+echo "#!/bin/sh" > $MNThdd/etc/rc.d/init.d/keymap
+
+#Remove autoload of acpi modules
+sed -i -e "s|^ac|#ac|g" $MNThdd/etc/sysconfig/modules
+sed -i -e "s|^battery|#battery|g" $MNThdd/etc/sysconfig/modules
+sed -i -e "s|^button|#button|g" $MNThdd/etc/sysconfig/modules
+sed -i -e "s|^fan|#fan|g" $MNThdd/etc/sysconfig/modules
+sed -i -e "s|^processor|#processor|g" $MNThdd/etc/sysconfig/modules
+sed -i -e "s|^thermal|#thermal|g" $MNThdd/etc/sysconfig/modules
+sed -i -e "s|^video|#video|g" $MNThdd/etc/sysconfig/modules
+
+# Unmount
+umount $MNThdd/proc
+umount $MNThdd/dev
+umount $MNThdd/sys
+umount $MNThdd/var
+umount $MNThdd/boot
+umount $MNThdd
+
+umount $ISODIR
+rm -rf ./ipfire-tmp
+echo --------------------------------------------------------
+echo - Done.
+echo --------------------------------------------------------
index 07d7c7c7c4ecbdbffc5c29165e55745cf9cfd97a..3393acdc07998b4069712ebd4d57cddcd692526f 100644 (file)
@@ -11,10 +11,12 @@ WARNING: translation string unused: Remote VPN IP
 WARNING: translation string unused: Resolv
 WARNING: translation string unused: TOS Bits
 WARNING: translation string unused: Verbose
+WARNING: translation string unused: access allowed
 WARNING: translation string unused: access refused with this oinkcode
 WARNING: translation string unused: add network
 WARNING: translation string unused: add new ovpn
 WARNING: translation string unused: add service
+WARNING: translation string unused: add xtaccess
 WARNING: translation string unused: add-route
 WARNING: translation string unused: admin user password has been changed
 WARNING: translation string unused: administrator user password
@@ -45,6 +47,7 @@ WARNING: translation string unused: all updates installed
 WARNING: translation string unused: allmsg
 WARNING: translation string unused: alt information
 WARNING: translation string unused: alt ovpn
+WARNING: translation string unused: alt vpn
 WARNING: translation string unused: and
 WARNING: translation string unused: apply
 WARNING: translation string unused: archive not exist
@@ -68,6 +71,7 @@ WARNING: translation string unused: cache management
 WARNING: translation string unused: cache size
 WARNING: translation string unused: calamaris report interval (in minutes)
 WARNING: translation string unused: calc traffic all x minutes
+WARNING: translation string unused: cant enable xtaccess
 WARNING: translation string unused: capsinactive
 WARNING: translation string unused: ccd err iroute
 WARNING: translation string unused: ccd err netadr
@@ -109,6 +113,11 @@ WARNING: translation string unused: debugme
 WARNING: translation string unused: deep scan directories
 WARNING: translation string unused: default networks
 WARNING: translation string unused: default services
+WARNING: translation string unused: description
+WARNING: translation string unused: destination ip bad
+WARNING: translation string unused: destination ip or net
+WARNING: translation string unused: destination net
+WARNING: translation string unused: destination port overlaps
 WARNING: translation string unused: dhcp base ip fixed lease
 WARNING: translation string unused: dhcp create fixed leases
 WARNING: translation string unused: dhcp fixed lease err1
@@ -119,10 +128,16 @@ WARNING: translation string unused: dial user password has been changed
 WARNING: translation string unused: dialup settings
 WARNING: translation string unused: disconnect
 WARNING: translation string unused: display traffic at home
+WARNING: translation string unused: dmz pinhole configuration
+WARNING: translation string unused: dmz pinhole rule added
+WARNING: translation string unused: dmz pinhole rule removed
+WARNING: translation string unused: dmzpinholes for same net not necessary
 WARNING: translation string unused: dns server
 WARNING: translation string unused: do not log this port list
 WARNING: translation string unused: donation-link
 WARNING: translation string unused: driver
+WARNING: translation string unused: dstprt range overlaps
+WARNING: translation string unused: dstprt within existing
 WARNING: translation string unused: dynamic dns client
 WARNING: translation string unused: eciadsl help
 WARNING: translation string unused: eciadsl upload
@@ -149,6 +164,7 @@ WARNING: translation string unused: error external access
 WARNING: translation string unused: expected
 WARNING: translation string unused: expertoptions
 WARNING: translation string unused: exportkey
+WARNING: translation string unused: external access
 WARNING: translation string unused: external access rule changed
 WARNING: translation string unused: extrahd unable to read
 WARNING: translation string unused: extrahd unable to write
@@ -158,6 +174,10 @@ WARNING: translation string unused: firewall log viewer
 WARNING: translation string unused: firmware
 WARNING: translation string unused: firmware upload
 WARNING: translation string unused: force update
+WARNING: translation string unused: forward firewall
+WARNING: translation string unused: forwarding rule added
+WARNING: translation string unused: forwarding rule removed
+WARNING: translation string unused: forwarding rule updated
 WARNING: translation string unused: frequency
 WARNING: translation string unused: fritzdsl help
 WARNING: translation string unused: fritzdsl upload
@@ -166,6 +186,32 @@ WARNING: translation string unused: from email pw
 WARNING: translation string unused: from email server
 WARNING: translation string unused: from email user
 WARNING: translation string unused: from warn email bad
+WARNING: translation string unused: fwdfw MODE1
+WARNING: translation string unused: fwdfw MODE2
+WARNING: translation string unused: fwdfw err tgt_port
+WARNING: translation string unused: fwdfw external port nat
+WARNING: translation string unused: fwdfw from
+WARNING: translation string unused: fwdfw ipsec network
+WARNING: translation string unused: fwdfw man port
+WARNING: translation string unused: fwdfw natport used
+WARNING: translation string unused: fwdfw rule action
+WARNING: translation string unused: fwdfw rules
+WARNING: translation string unused: fwdfw std network
+WARNING: translation string unused: fwdfw till
+WARNING: translation string unused: fwdfw time
+WARNING: translation string unused: fwhost addrule
+WARNING: translation string unused: fwhost attention
+WARNING: translation string unused: fwhost blue
+WARNING: translation string unused: fwhost changeremark
+WARNING: translation string unused: fwhost err addrgrp
+WARNING: translation string unused: fwhost err hostorip
+WARNING: translation string unused: fwhost err mac
+WARNING: translation string unused: fwhost green
+WARNING: translation string unused: fwhost ipadr
+WARNING: translation string unused: fwhost ipsec host
+WARNING: translation string unused: fwhost orange
+WARNING: translation string unused: fwhost reset
+WARNING: translation string unused: fwhost wo subnet
 WARNING: translation string unused: gen static key
 WARNING: translation string unused: generate
 WARNING: translation string unused: genkey
@@ -220,6 +266,7 @@ WARNING: translation string unused: local hard disk
 WARNING: translation string unused: localkeyfile
 WARNING: translation string unused: log enabled
 WARNING: translation string unused: log viewer
+WARNING: translation string unused: logging
 WARNING: translation string unused: loosedirectorychecking
 WARNING: translation string unused: ls_dhcpd
 WARNING: translation string unused: ls_disk space
@@ -245,6 +292,7 @@ WARNING: translation string unused: mbmon value
 WARNING: translation string unused: min size
 WARNING: translation string unused: missing dat
 WARNING: translation string unused: missing gz
+WARNING: translation string unused: mode
 WARNING: translation string unused: modem on com1
 WARNING: translation string unused: modem on com2
 WARNING: translation string unused: modem on com3
@@ -261,6 +309,7 @@ WARNING: translation string unused: monthly volume start day short
 WARNING: translation string unused: mount
 WARNING: translation string unused: mtu QoS
 WARNING: translation string unused: nat-traversal
+WARNING: translation string unused: net
 WARNING: translation string unused: net address
 WARNING: translation string unused: net config type
 WARNING: translation string unused: net config type help
@@ -286,6 +335,7 @@ WARNING: translation string unused: o-no
 WARNING: translation string unused: o-yes
 WARNING: translation string unused: online help en
 WARNING: translation string unused: only red
+WARNING: translation string unused: open to all
 WARNING: translation string unused: openvpn disabled
 WARNING: translation string unused: openvpn enabled
 WARNING: translation string unused: optional data
@@ -296,7 +346,16 @@ WARNING: translation string unused: original
 WARNING: translation string unused: other countries
 WARNING: translation string unused: our donors
 WARNING: translation string unused: out
+WARNING: translation string unused: outgoing firewall
+WARNING: translation string unused: outgoing firewall mode0
+WARNING: translation string unused: outgoing firewall mode1
+WARNING: translation string unused: outgoing firewall mode2
 WARNING: translation string unused: outgoing firewall outgoing firewall reserved groupname
+WARNING: translation string unused: outgoing firewall p2p description 1
+WARNING: translation string unused: outgoing firewall p2p description 2
+WARNING: translation string unused: outgoing firewall p2p description 3
+WARNING: translation string unused: outgoing firewall reset
+WARNING: translation string unused: outgoing firewall warning
 WARNING: translation string unused: override mtu
 WARNING: translation string unused: ovpn
 WARNING: translation string unused: ovpn config
@@ -327,6 +386,8 @@ WARNING: translation string unused: passwords must be at least 6 characters in l
 WARNING: translation string unused: phonebook entry
 WARNING: translation string unused: ping disabled
 WARNING: translation string unused: polfile
+WARNING: translation string unused: policy
+WARNING: translation string unused: port forwarding configuration
 WARNING: translation string unused: ports
 WARNING: translation string unused: pots
 WARNING: translation string unused: pppoe
@@ -353,7 +414,9 @@ WARNING: translation string unused: router ip
 WARNING: translation string unused: rules already up to date
 WARNING: translation string unused: safe removal of umounted device
 WARNING: translation string unused: save error
+WARNING: translation string unused: select dest net
 WARNING: translation string unused: select media
+WARNING: translation string unused: select source net
 WARNING: translation string unused: selecttraffic
 WARNING: translation string unused: send email notification
 WARNING: translation string unused: send test mail
@@ -369,15 +432,23 @@ WARNING: translation string unused: shutdown2
 WARNING: translation string unused: shutting down
 WARNING: translation string unused: sitekeyfile
 WARNING: translation string unused: smbreload
+WARNING: translation string unused: source ip in use
+WARNING: translation string unused: source ip or net
+WARNING: translation string unused: source net
+WARNING: translation string unused: source port overlaps
 WARNING: translation string unused: squid extension methods
 WARNING: translation string unused: squid extension methods invalid
 WARNING: translation string unused: squid fix cache
+WARNING: translation string unused: srcprt range overlaps
+WARNING: translation string unused: srcprt within existing
+WARNING: translation string unused: ssdmz pinholes
 WARNING: translation string unused: ssh access tip
 WARNING: translation string unused: ssh1 disabled
 WARNING: translation string unused: ssh1 enabled
 WARNING: translation string unused: ssh1 support
 WARNING: translation string unused: ssnetwork status
 WARNING: translation string unused: sspasswords
+WARNING: translation string unused: ssport forwarding
 WARNING: translation string unused: ssproxy graphs
 WARNING: translation string unused: sssystem status
 WARNING: translation string unused: sstraffic graphs
@@ -477,13 +548,16 @@ WARNING: translation string unused: warn when traffic reaches
 WARNING: translation string unused: web proxy configuration
 WARNING: translation string unused: week-graph
 WARNING: translation string unused: weekly firewallhits
+WARNING: translation string unused: xtaccess all error
 WARNING: translation string unused: xtaccess bad transfert
 WARNING: translation string unused: year-graph
 WARNING: translation string unused: yearly firewallhits
 WARNING: untranslated string: Scan for Songs
+WARNING: untranslated string: advproxy cache-digest
 WARNING: untranslated string: bytes
 WARNING: untranslated string: community rules
 WARNING: untranslated string: emerging rules
+WARNING: untranslated string: fwhost err hostip
 WARNING: untranslated string: new
 WARNING: untranslated string: outgoing firewall reserved groupname
 WARNING: untranslated string: qos add subclass
index 7bdf4ca4f7c2f80c4860ee1b9c644cb7256d1ac5..77e825dca6b720cd42cc6f13cbb1cb320e304847 100644 (file)
@@ -11,10 +11,12 @@ WARNING: translation string unused: Remote VPN IP
 WARNING: translation string unused: Resolv
 WARNING: translation string unused: TOS Bits
 WARNING: translation string unused: Verbose
+WARNING: translation string unused: access allowed
 WARNING: translation string unused: access refused with this oinkcode
 WARNING: translation string unused: add network
 WARNING: translation string unused: add new ovpn
 WARNING: translation string unused: add service
+WARNING: translation string unused: add xtaccess
 WARNING: translation string unused: add-route
 WARNING: translation string unused: admin user password has been changed
 WARNING: translation string unused: administrator user password
@@ -46,6 +48,7 @@ WARNING: translation string unused: all updates installed
 WARNING: translation string unused: allmsg
 WARNING: translation string unused: alt information
 WARNING: translation string unused: alt ovpn
+WARNING: translation string unused: alt vpn
 WARNING: translation string unused: and
 WARNING: translation string unused: ansi t1.483
 WARNING: translation string unused: apply
@@ -87,6 +90,7 @@ WARNING: translation string unused: cache management
 WARNING: translation string unused: cache size
 WARNING: translation string unused: calamaris report interval (in minutes)
 WARNING: translation string unused: calc traffic all x minutes
+WARNING: translation string unused: cant enable xtaccess
 WARNING: translation string unused: capsinactive
 WARNING: translation string unused: ccd err iroute
 WARNING: translation string unused: ccd err netadr
@@ -129,6 +133,11 @@ WARNING: translation string unused: debugme
 WARNING: translation string unused: deep scan directories
 WARNING: translation string unused: default networks
 WARNING: translation string unused: default services
+WARNING: translation string unused: description
+WARNING: translation string unused: destination ip bad
+WARNING: translation string unused: destination ip or net
+WARNING: translation string unused: destination net
+WARNING: translation string unused: destination port overlaps
 WARNING: translation string unused: dhcp base ip fixed lease
 WARNING: translation string unused: dhcp create fixed leases
 WARNING: translation string unused: dhcp fixed lease err1
@@ -141,11 +150,17 @@ WARNING: translation string unused: dial user password has been changed
 WARNING: translation string unused: dialup settings
 WARNING: translation string unused: disconnect
 WARNING: translation string unused: display traffic at home
+WARNING: translation string unused: dmz pinhole configuration
+WARNING: translation string unused: dmz pinhole rule added
+WARNING: translation string unused: dmz pinhole rule removed
+WARNING: translation string unused: dmzpinholes for same net not necessary
 WARNING: translation string unused: dns server
 WARNING: translation string unused: do not log this port list
 WARNING: translation string unused: donation-link
 WARNING: translation string unused: done
 WARNING: translation string unused: driver
+WARNING: translation string unused: dstprt range overlaps
+WARNING: translation string unused: dstprt within existing
 WARNING: translation string unused: dynamic dns client
 WARNING: translation string unused: eciadsl help
 WARNING: translation string unused: eciadsl upload
@@ -172,6 +187,7 @@ WARNING: translation string unused: error external access
 WARNING: translation string unused: expected
 WARNING: translation string unused: expertoptions
 WARNING: translation string unused: exportkey
+WARNING: translation string unused: external access
 WARNING: translation string unused: external access rule changed
 WARNING: translation string unused: extrahd unable to read
 WARNING: translation string unused: extrahd unable to write
@@ -181,6 +197,10 @@ WARNING: translation string unused: firewall log viewer
 WARNING: translation string unused: firmware
 WARNING: translation string unused: firmware upload
 WARNING: translation string unused: force update
+WARNING: translation string unused: forward firewall
+WARNING: translation string unused: forwarding rule added
+WARNING: translation string unused: forwarding rule removed
+WARNING: translation string unused: forwarding rule updated
 WARNING: translation string unused: frequency
 WARNING: translation string unused: fritzdsl help
 WARNING: translation string unused: fritzdsl upload
@@ -189,6 +209,32 @@ WARNING: translation string unused: from email pw
 WARNING: translation string unused: from email server
 WARNING: translation string unused: from email user
 WARNING: translation string unused: from warn email bad
+WARNING: translation string unused: fwdfw MODE1
+WARNING: translation string unused: fwdfw MODE2
+WARNING: translation string unused: fwdfw err tgt_port
+WARNING: translation string unused: fwdfw external port nat
+WARNING: translation string unused: fwdfw from
+WARNING: translation string unused: fwdfw ipsec network
+WARNING: translation string unused: fwdfw man port
+WARNING: translation string unused: fwdfw natport used
+WARNING: translation string unused: fwdfw rule action
+WARNING: translation string unused: fwdfw rules
+WARNING: translation string unused: fwdfw std network
+WARNING: translation string unused: fwdfw till
+WARNING: translation string unused: fwdfw time
+WARNING: translation string unused: fwhost addrule
+WARNING: translation string unused: fwhost attention
+WARNING: translation string unused: fwhost blue
+WARNING: translation string unused: fwhost changeremark
+WARNING: translation string unused: fwhost err addrgrp
+WARNING: translation string unused: fwhost err hostorip
+WARNING: translation string unused: fwhost err mac
+WARNING: translation string unused: fwhost green
+WARNING: translation string unused: fwhost ipadr
+WARNING: translation string unused: fwhost ipsec host
+WARNING: translation string unused: fwhost orange
+WARNING: translation string unused: fwhost reset
+WARNING: translation string unused: fwhost wo subnet
 WARNING: translation string unused: g.dtm
 WARNING: translation string unused: g.lite
 WARNING: translation string unused: gen static key
@@ -246,6 +292,7 @@ WARNING: translation string unused: local hard disk
 WARNING: translation string unused: localkeyfile
 WARNING: translation string unused: log enabled
 WARNING: translation string unused: log viewer
+WARNING: translation string unused: logging
 WARNING: translation string unused: loosedirectorychecking
 WARNING: translation string unused: ls_dhcpd
 WARNING: translation string unused: ls_disk space
@@ -271,6 +318,7 @@ WARNING: translation string unused: mbmon value
 WARNING: translation string unused: min size
 WARNING: translation string unused: missing dat
 WARNING: translation string unused: missing gz
+WARNING: translation string unused: mode
 WARNING: translation string unused: modem on com1
 WARNING: translation string unused: modem on com2
 WARNING: translation string unused: modem on com3
@@ -287,6 +335,7 @@ WARNING: translation string unused: monthly volume start day short
 WARNING: translation string unused: mount
 WARNING: translation string unused: mtu QoS
 WARNING: translation string unused: nat-traversal
+WARNING: translation string unused: net
 WARNING: translation string unused: net address
 WARNING: translation string unused: net config type
 WARNING: translation string unused: net config type help
@@ -313,6 +362,7 @@ WARNING: translation string unused: o-no
 WARNING: translation string unused: o-yes
 WARNING: translation string unused: online help en
 WARNING: translation string unused: only red
+WARNING: translation string unused: open to all
 WARNING: translation string unused: openvpn disabled
 WARNING: translation string unused: openvpn enabled
 WARNING: translation string unused: optional data
@@ -323,7 +373,16 @@ WARNING: translation string unused: original
 WARNING: translation string unused: other countries
 WARNING: translation string unused: our donors
 WARNING: translation string unused: out
+WARNING: translation string unused: outgoing firewall
+WARNING: translation string unused: outgoing firewall mode0
+WARNING: translation string unused: outgoing firewall mode1
+WARNING: translation string unused: outgoing firewall mode2
 WARNING: translation string unused: outgoing firewall outgoing firewall reserved groupname
+WARNING: translation string unused: outgoing firewall p2p description 1
+WARNING: translation string unused: outgoing firewall p2p description 2
+WARNING: translation string unused: outgoing firewall p2p description 3
+WARNING: translation string unused: outgoing firewall reset
+WARNING: translation string unused: outgoing firewall warning
 WARNING: translation string unused: override mtu
 WARNING: translation string unused: ovpn
 WARNING: translation string unused: ovpn config
@@ -354,6 +413,8 @@ WARNING: translation string unused: passwords must be at least 6 characters in l
 WARNING: translation string unused: phonebook entry
 WARNING: translation string unused: ping disabled
 WARNING: translation string unused: polfile
+WARNING: translation string unused: policy
+WARNING: translation string unused: port forwarding configuration
 WARNING: translation string unused: ports
 WARNING: translation string unused: pots
 WARNING: translation string unused: pppoe
@@ -381,7 +442,9 @@ WARNING: translation string unused: router ip
 WARNING: translation string unused: rules already up to date
 WARNING: translation string unused: safe removal of umounted device
 WARNING: translation string unused: save error
+WARNING: translation string unused: select dest net
 WARNING: translation string unused: select media
+WARNING: translation string unused: select source net
 WARNING: translation string unused: selecttraffic
 WARNING: translation string unused: send email notification
 WARNING: translation string unused: send test mail
@@ -400,15 +463,23 @@ WARNING: translation string unused: shutdown2
 WARNING: translation string unused: shutting down
 WARNING: translation string unused: sitekeyfile
 WARNING: translation string unused: smbreload
+WARNING: translation string unused: source ip in use
+WARNING: translation string unused: source ip or net
+WARNING: translation string unused: source net
+WARNING: translation string unused: source port overlaps
 WARNING: translation string unused: squid extension methods
 WARNING: translation string unused: squid extension methods invalid
 WARNING: translation string unused: squid fix cache
+WARNING: translation string unused: srcprt range overlaps
+WARNING: translation string unused: srcprt within existing
+WARNING: translation string unused: ssdmz pinholes
 WARNING: translation string unused: ssh access tip
 WARNING: translation string unused: ssh1 disabled
 WARNING: translation string unused: ssh1 enabled
 WARNING: translation string unused: ssh1 support
 WARNING: translation string unused: ssnetwork status
 WARNING: translation string unused: sspasswords
+WARNING: translation string unused: ssport forwarding
 WARNING: translation string unused: ssproxy graphs
 WARNING: translation string unused: sssystem status
 WARNING: translation string unused: sstraffic graphs
@@ -512,11 +583,14 @@ WARNING: translation string unused: warn when traffic reaches
 WARNING: translation string unused: web proxy configuration
 WARNING: translation string unused: week-graph
 WARNING: translation string unused: weekly firewallhits
+WARNING: translation string unused: xtaccess all error
 WARNING: translation string unused: xtaccess bad transfert
 WARNING: translation string unused: year-graph
 WARNING: translation string unused: yearly firewallhits
 WARNING: untranslated string: Scan for Songs
+WARNING: untranslated string: advproxy cache-digest
 WARNING: untranslated string: bytes
+WARNING: untranslated string: fwhost err hostip
 WARNING: untranslated string: new
 WARNING: untranslated string: outgoing firewall reserved groupname
 WARNING: untranslated string: route config changed
index f46723e509adeeee3cc54f3fe1c7b3bc5efc83ca..6faff27a02038795127abe8ba3867844df1b8115 100644 (file)
@@ -11,10 +11,12 @@ WARNING: translation string unused: Remote VPN IP
 WARNING: translation string unused: Resolv
 WARNING: translation string unused: TOS Bits
 WARNING: translation string unused: Verbose
+WARNING: translation string unused: access allowed
 WARNING: translation string unused: access refused with this oinkcode
 WARNING: translation string unused: add network
 WARNING: translation string unused: add new ovpn
 WARNING: translation string unused: add service
+WARNING: translation string unused: add xtaccess
 WARNING: translation string unused: add-route
 WARNING: translation string unused: admin user password has been changed
 WARNING: translation string unused: administrator user password
@@ -46,6 +48,7 @@ WARNING: translation string unused: all updates installed
 WARNING: translation string unused: allmsg
 WARNING: translation string unused: alt information
 WARNING: translation string unused: alt ovpn
+WARNING: translation string unused: alt vpn
 WARNING: translation string unused: and
 WARNING: translation string unused: ansi t1.483
 WARNING: translation string unused: apply
@@ -87,6 +90,7 @@ WARNING: translation string unused: cache management
 WARNING: translation string unused: cache size
 WARNING: translation string unused: calamaris report interval (in minutes)
 WARNING: translation string unused: calc traffic all x minutes
+WARNING: translation string unused: cant enable xtaccess
 WARNING: translation string unused: capsinactive
 WARNING: translation string unused: cfg restart
 WARNING: translation string unused: check for net traffic update
@@ -127,6 +131,11 @@ WARNING: translation string unused: debugme
 WARNING: translation string unused: deep scan directories
 WARNING: translation string unused: default networks
 WARNING: translation string unused: default services
+WARNING: translation string unused: description
+WARNING: translation string unused: destination ip bad
+WARNING: translation string unused: destination ip or net
+WARNING: translation string unused: destination net
+WARNING: translation string unused: destination port overlaps
 WARNING: translation string unused: dhcp base ip fixed lease
 WARNING: translation string unused: dhcp create fixed leases
 WARNING: translation string unused: dhcp fixed lease err1
@@ -139,11 +148,18 @@ WARNING: translation string unused: dial user password has been changed
 WARNING: translation string unused: dialup settings
 WARNING: translation string unused: disconnect
 WARNING: translation string unused: display traffic at home
+WARNING: translation string unused: dmz pinhole configuration
+WARNING: translation string unused: dmz pinhole rule added
+WARNING: translation string unused: dmz pinhole rule removed
+WARNING: translation string unused: dmzpinholes for same net not necessary
 WARNING: translation string unused: dns server
 WARNING: translation string unused: do not log this port list
 WARNING: translation string unused: donation-link
 WARNING: translation string unused: done
 WARNING: translation string unused: driver
+WARNING: translation string unused: drop output
+WARNING: translation string unused: dstprt range overlaps
+WARNING: translation string unused: dstprt within existing
 WARNING: translation string unused: dynamic dns client
 WARNING: translation string unused: eciadsl help
 WARNING: translation string unused: eciadsl upload
@@ -170,6 +186,7 @@ WARNING: translation string unused: error external access
 WARNING: translation string unused: expected
 WARNING: translation string unused: expertoptions
 WARNING: translation string unused: exportkey
+WARNING: translation string unused: external access
 WARNING: translation string unused: external access rule changed
 WARNING: translation string unused: extrahd unable to read
 WARNING: translation string unused: extrahd unable to write
@@ -179,6 +196,9 @@ WARNING: translation string unused: firewall log viewer
 WARNING: translation string unused: firmware
 WARNING: translation string unused: firmware upload
 WARNING: translation string unused: force update
+WARNING: translation string unused: forwarding rule added
+WARNING: translation string unused: forwarding rule removed
+WARNING: translation string unused: forwarding rule updated
 WARNING: translation string unused: frequency
 WARNING: translation string unused: fritzdsl help
 WARNING: translation string unused: fritzdsl upload
@@ -244,6 +264,7 @@ WARNING: translation string unused: local hard disk
 WARNING: translation string unused: localkeyfile
 WARNING: translation string unused: log enabled
 WARNING: translation string unused: log viewer
+WARNING: translation string unused: logging
 WARNING: translation string unused: loosedirectorychecking
 WARNING: translation string unused: ls_dhcpd
 WARNING: translation string unused: ls_disk space
@@ -269,6 +290,7 @@ WARNING: translation string unused: mbmon value
 WARNING: translation string unused: min size
 WARNING: translation string unused: missing dat
 WARNING: translation string unused: missing gz
+WARNING: translation string unused: mode
 WARNING: translation string unused: modem on com1
 WARNING: translation string unused: modem on com2
 WARNING: translation string unused: modem on com3
@@ -285,6 +307,7 @@ WARNING: translation string unused: monthly volume start day short
 WARNING: translation string unused: mount
 WARNING: translation string unused: mtu QoS
 WARNING: translation string unused: nat-traversal
+WARNING: translation string unused: net
 WARNING: translation string unused: net address
 WARNING: translation string unused: net config type
 WARNING: translation string unused: net config type help
@@ -311,6 +334,7 @@ WARNING: translation string unused: o-no
 WARNING: translation string unused: o-yes
 WARNING: translation string unused: online help en
 WARNING: translation string unused: only red
+WARNING: translation string unused: open to all
 WARNING: translation string unused: optional data
 WARNING: translation string unused: optionsfw portlist hint
 WARNING: translation string unused: optionsfw warning
@@ -318,8 +342,14 @@ WARNING: translation string unused: or
 WARNING: translation string unused: original
 WARNING: translation string unused: other countries
 WARNING: translation string unused: out
+WARNING: translation string unused: outgoing firewall
+WARNING: translation string unused: outgoing firewall mode0
+WARNING: translation string unused: outgoing firewall mode1
+WARNING: translation string unused: outgoing firewall mode2
 WARNING: translation string unused: outgoing firewall outgoing firewall reserved groupname
 WARNING: translation string unused: outgoing firewall p2p description
+WARNING: translation string unused: outgoing firewall reset
+WARNING: translation string unused: outgoing firewall warning
 WARNING: translation string unused: override mtu
 WARNING: translation string unused: ovpn
 WARNING: translation string unused: ovpn config
@@ -350,6 +380,8 @@ WARNING: translation string unused: passwords must be at least 6 characters in l
 WARNING: translation string unused: phonebook entry
 WARNING: translation string unused: ping disabled
 WARNING: translation string unused: polfile
+WARNING: translation string unused: policy
+WARNING: translation string unused: port forwarding configuration
 WARNING: translation string unused: ports
 WARNING: translation string unused: pots
 WARNING: translation string unused: pppoe
@@ -377,7 +409,9 @@ WARNING: translation string unused: router ip
 WARNING: translation string unused: rules already up to date
 WARNING: translation string unused: safe removal of umounted device
 WARNING: translation string unused: save error
+WARNING: translation string unused: select dest net
 WARNING: translation string unused: select media
+WARNING: translation string unused: select source net
 WARNING: translation string unused: selecttraffic
 WARNING: translation string unused: send email notification
 WARNING: translation string unused: send test mail
@@ -396,15 +430,23 @@ WARNING: translation string unused: shutdown2
 WARNING: translation string unused: shutting down
 WARNING: translation string unused: sitekeyfile
 WARNING: translation string unused: smbreload
+WARNING: translation string unused: source ip in use
+WARNING: translation string unused: source ip or net
+WARNING: translation string unused: source net
+WARNING: translation string unused: source port overlaps
 WARNING: translation string unused: squid extension methods
 WARNING: translation string unused: squid extension methods invalid
 WARNING: translation string unused: squid fix cache
+WARNING: translation string unused: srcprt range overlaps
+WARNING: translation string unused: srcprt within existing
+WARNING: translation string unused: ssdmz pinholes
 WARNING: translation string unused: ssh access tip
 WARNING: translation string unused: ssh1 disabled
 WARNING: translation string unused: ssh1 enabled
 WARNING: translation string unused: ssh1 support
 WARNING: translation string unused: ssnetwork status
 WARNING: translation string unused: sspasswords
+WARNING: translation string unused: ssport forwarding
 WARNING: translation string unused: ssproxy graphs
 WARNING: translation string unused: sssystem status
 WARNING: translation string unused: sstraffic graphs
@@ -497,6 +539,7 @@ WARNING: translation string unused: warn when traffic reaches
 WARNING: translation string unused: web proxy configuration
 WARNING: translation string unused: week-graph
 WARNING: translation string unused: weekly firewallhits
+WARNING: translation string unused: xtaccess all error
 WARNING: translation string unused: xtaccess bad transfert
 WARNING: translation string unused: year-graph
 WARNING: translation string unused: yearly firewallhits
@@ -558,6 +601,11 @@ WARNING: untranslated string: dnsforward edit an entry
 WARNING: untranslated string: dnsforward entries
 WARNING: untranslated string: dnsforward forward_server
 WARNING: untranslated string: dnsforward zone
+WARNING: untranslated string: drop action
+WARNING: untranslated string: drop action1
+WARNING: untranslated string: drop action2
+WARNING: untranslated string: drop forward
+WARNING: untranslated string: drop outgoing
 WARNING: untranslated string: emerging rules
 WARNING: untranslated string: fireinfo ipfire version
 WARNING: untranslated string: fireinfo is disabled
@@ -576,6 +624,145 @@ WARNING: untranslated string: fireinfo why descr2
 WARNING: untranslated string: fireinfo why enable
 WARNING: untranslated string: fireinfo why read more
 WARNING: untranslated string: fireinfo your profile id
+WARNING: untranslated string: fw default drop
+WARNING: untranslated string: fw settings
+WARNING: untranslated string: fw settings color
+WARNING: untranslated string: fw settings dropdown
+WARNING: untranslated string: fw settings remark
+WARNING: untranslated string: fw settings ruletable
+WARNING: untranslated string: fwdfw ACCEPT
+WARNING: untranslated string: fwdfw DROP
+WARNING: untranslated string: fwdfw REJECT
+WARNING: untranslated string: fwdfw action
+WARNING: untranslated string: fwdfw additional
+WARNING: untranslated string: fwdfw addrule
+WARNING: untranslated string: fwdfw all icmp
+WARNING: untranslated string: fwdfw change
+WARNING: untranslated string: fwdfw copy
+WARNING: untranslated string: fwdfw delete
+WARNING: untranslated string: fwdfw dnat
+WARNING: untranslated string: fwdfw dnat error
+WARNING: untranslated string: fwdfw dnat porterr
+WARNING: untranslated string: fwdfw edit
+WARNING: untranslated string: fwdfw err nosrc
+WARNING: untranslated string: fwdfw err nosrcip
+WARNING: untranslated string: fwdfw err notgt
+WARNING: untranslated string: fwdfw err notgtip
+WARNING: untranslated string: fwdfw err prot_port
+WARNING: untranslated string: fwdfw err prot_port1
+WARNING: untranslated string: fwdfw err remark
+WARNING: untranslated string: fwdfw err ruleexists
+WARNING: untranslated string: fwdfw err same
+WARNING: untranslated string: fwdfw err samesub
+WARNING: untranslated string: fwdfw err src_addr
+WARNING: untranslated string: fwdfw err tgt_addr
+WARNING: untranslated string: fwdfw err tgt_grp
+WARNING: untranslated string: fwdfw err tgt_mac
+WARNING: untranslated string: fwdfw err time
+WARNING: untranslated string: fwdfw final_rule
+WARNING: untranslated string: fwdfw hint ip1
+WARNING: untranslated string: fwdfw hint ip2
+WARNING: untranslated string: fwdfw log rule
+WARNING: untranslated string: fwdfw menu
+WARNING: untranslated string: fwdfw movedown
+WARNING: untranslated string: fwdfw moveup
+WARNING: untranslated string: fwdfw newrule
+WARNING: untranslated string: fwdfw p2p txt
+WARNING: untranslated string: fwdfw pol allow
+WARNING: untranslated string: fwdfw pol block
+WARNING: untranslated string: fwdfw pol text
+WARNING: untranslated string: fwdfw pol text1
+WARNING: untranslated string: fwdfw pol title
+WARNING: untranslated string: fwdfw red
+WARNING: untranslated string: fwdfw reread
+WARNING: untranslated string: fwdfw rule activate
+WARNING: untranslated string: fwdfw rulepos
+WARNING: untranslated string: fwdfw snat
+WARNING: untranslated string: fwdfw source
+WARNING: untranslated string: fwdfw sourceip
+WARNING: untranslated string: fwdfw target
+WARNING: untranslated string: fwdfw targetip
+WARNING: untranslated string: fwdfw timeframe
+WARNING: untranslated string: fwdfw toggle
+WARNING: untranslated string: fwdfw togglelog
+WARNING: untranslated string: fwdfw use nat
+WARNING: untranslated string: fwdfw use srcport
+WARNING: untranslated string: fwdfw use srv
+WARNING: untranslated string: fwdfw useless rule
+WARNING: untranslated string: fwdfw wd_fri
+WARNING: untranslated string: fwdfw wd_mon
+WARNING: untranslated string: fwdfw wd_sat
+WARNING: untranslated string: fwdfw wd_sun
+WARNING: untranslated string: fwdfw wd_thu
+WARNING: untranslated string: fwdfw wd_tue
+WARNING: untranslated string: fwdfw wd_wed
+WARNING: untranslated string: fwdfw xt access
+WARNING: untranslated string: fwhost addgrp
+WARNING: untranslated string: fwhost addgrpname
+WARNING: untranslated string: fwhost addhost
+WARNING: untranslated string: fwhost addnet
+WARNING: untranslated string: fwhost addservice
+WARNING: untranslated string: fwhost addservicegrp
+WARNING: untranslated string: fwhost any
+WARNING: untranslated string: fwhost back
+WARNING: untranslated string: fwhost ccdhost
+WARNING: untranslated string: fwhost ccdnet
+WARNING: untranslated string: fwhost change
+WARNING: untranslated string: fwhost cust addr
+WARNING: untranslated string: fwhost cust grp
+WARNING: untranslated string: fwhost cust net
+WARNING: untranslated string: fwhost cust service
+WARNING: untranslated string: fwhost cust srvgrp
+WARNING: untranslated string: fwhost deleted
+WARNING: untranslated string: fwhost empty
+WARNING: untranslated string: fwhost err addr
+WARNING: untranslated string: fwhost err empty
+WARNING: untranslated string: fwhost err emptytable
+WARNING: untranslated string: fwhost err groupempty
+WARNING: untranslated string: fwhost err grpexist
+WARNING: untranslated string: fwhost err hostexist
+WARNING: untranslated string: fwhost err hostip
+WARNING: untranslated string: fwhost err ip
+WARNING: untranslated string: fwhost err ipcheck
+WARNING: untranslated string: fwhost err ipmac
+WARNING: untranslated string: fwhost err ipwithsub
+WARNING: untranslated string: fwhost err isccdhost
+WARNING: untranslated string: fwhost err isccdiphost
+WARNING: untranslated string: fwhost err isccdipnet
+WARNING: untranslated string: fwhost err isccdnet
+WARNING: untranslated string: fwhost err isingrp
+WARNING: untranslated string: fwhost err name
+WARNING: untranslated string: fwhost err name1
+WARNING: untranslated string: fwhost err net
+WARNING: untranslated string: fwhost err netexist
+WARNING: untranslated string: fwhost err partofnet
+WARNING: untranslated string: fwhost err port
+WARNING: untranslated string: fwhost err remark
+WARNING: untranslated string: fwhost err srv exists
+WARNING: untranslated string: fwhost err srvexist
+WARNING: untranslated string: fwhost err sub32
+WARNING: untranslated string: fwhost hint
+WARNING: untranslated string: fwhost hosts
+WARNING: untranslated string: fwhost icmptype
+WARNING: untranslated string: fwhost ip_mac
+WARNING: untranslated string: fwhost ipsec net
+WARNING: untranslated string: fwhost menu
+WARNING: untranslated string: fwhost netaddress
+WARNING: untranslated string: fwhost newgrp
+WARNING: untranslated string: fwhost newhost
+WARNING: untranslated string: fwhost newnet
+WARNING: untranslated string: fwhost newservice
+WARNING: untranslated string: fwhost newservicegrp
+WARNING: untranslated string: fwhost ovpn_n2n
+WARNING: untranslated string: fwhost port
+WARNING: untranslated string: fwhost prot
+WARNING: untranslated string: fwhost reread
+WARNING: untranslated string: fwhost services
+WARNING: untranslated string: fwhost srv_name
+WARNING: untranslated string: fwhost stdnet
+WARNING: untranslated string: fwhost type
+WARNING: untranslated string: fwhost used
+WARNING: untranslated string: fwhost welcome
 WARNING: untranslated string: least preferred
 WARNING: untranslated string: minute
 WARNING: untranslated string: most preferred
@@ -599,9 +786,6 @@ WARNING: untranslated string: outgoing firewall ip groups
 WARNING: untranslated string: outgoing firewall mac groups
 WARNING: untranslated string: outgoing firewall p2p allow
 WARNING: untranslated string: outgoing firewall p2p deny
-WARNING: untranslated string: outgoing firewall p2p description 1
-WARNING: untranslated string: outgoing firewall p2p description 2
-WARNING: untranslated string: outgoing firewall p2p description 3
 WARNING: untranslated string: outgoing firewall reserved groupname
 WARNING: untranslated string: outgoing firewall view group
 WARNING: untranslated string: ovpn errmsg green already pushed
@@ -622,6 +806,7 @@ WARNING: untranslated string: proxy reports monthly
 WARNING: untranslated string: proxy reports today
 WARNING: untranslated string: proxy reports weekly
 WARNING: untranslated string: qos enter bandwidths
+WARNING: untranslated string: red1
 WARNING: untranslated string: route config changed
 WARNING: untranslated string: routing config added
 WARNING: untranslated string: routing config changed
index 32aa9b5b79d4c0227f49ec80281dd06a0eb6c1dd..96e691e1a428b8de1542b0752db09231abfa3052 100644 (file)
@@ -11,10 +11,12 @@ WARNING: translation string unused: Remote VPN IP
 WARNING: translation string unused: Resolv
 WARNING: translation string unused: TOS Bits
 WARNING: translation string unused: Verbose
+WARNING: translation string unused: access allowed
 WARNING: translation string unused: access refused with this oinkcode
 WARNING: translation string unused: add network
 WARNING: translation string unused: add new ovpn
 WARNING: translation string unused: add service
+WARNING: translation string unused: add xtaccess
 WARNING: translation string unused: add-route
 WARNING: translation string unused: admin user password has been changed
 WARNING: translation string unused: administrator user password
@@ -46,6 +48,7 @@ WARNING: translation string unused: all updates installed
 WARNING: translation string unused: allmsg
 WARNING: translation string unused: alt information
 WARNING: translation string unused: alt ovpn
+WARNING: translation string unused: alt vpn
 WARNING: translation string unused: and
 WARNING: translation string unused: ansi t1.483
 WARNING: translation string unused: apply
@@ -87,6 +90,7 @@ WARNING: translation string unused: cache management
 WARNING: translation string unused: cache size
 WARNING: translation string unused: calamaris report interval (in minutes)
 WARNING: translation string unused: calc traffic all x minutes
+WARNING: translation string unused: cant enable xtaccess
 WARNING: translation string unused: capsinactive
 WARNING: translation string unused: cfg restart
 WARNING: translation string unused: check for net traffic update
@@ -127,6 +131,11 @@ WARNING: translation string unused: debugme
 WARNING: translation string unused: deep scan directories
 WARNING: translation string unused: default networks
 WARNING: translation string unused: default services
+WARNING: translation string unused: description
+WARNING: translation string unused: destination ip bad
+WARNING: translation string unused: destination ip or net
+WARNING: translation string unused: destination net
+WARNING: translation string unused: destination port overlaps
 WARNING: translation string unused: dhcp base ip fixed lease
 WARNING: translation string unused: dhcp create fixed leases
 WARNING: translation string unused: dhcp fixed lease err1
@@ -139,11 +148,18 @@ WARNING: translation string unused: dial user password has been changed
 WARNING: translation string unused: dialup settings
 WARNING: translation string unused: disconnect
 WARNING: translation string unused: display traffic at home
+WARNING: translation string unused: dmz pinhole configuration
+WARNING: translation string unused: dmz pinhole rule added
+WARNING: translation string unused: dmz pinhole rule removed
+WARNING: translation string unused: dmzpinholes for same net not necessary
 WARNING: translation string unused: dns server
 WARNING: translation string unused: do not log this port list
 WARNING: translation string unused: donation-link
 WARNING: translation string unused: done
 WARNING: translation string unused: driver
+WARNING: translation string unused: drop output
+WARNING: translation string unused: dstprt range overlaps
+WARNING: translation string unused: dstprt within existing
 WARNING: translation string unused: dynamic dns client
 WARNING: translation string unused: eciadsl help
 WARNING: translation string unused: eciadsl upload
@@ -170,6 +186,7 @@ WARNING: translation string unused: error external access
 WARNING: translation string unused: expected
 WARNING: translation string unused: expertoptions
 WARNING: translation string unused: exportkey
+WARNING: translation string unused: external access
 WARNING: translation string unused: external access rule changed
 WARNING: translation string unused: extrahd unable to read
 WARNING: translation string unused: extrahd unable to write
@@ -179,6 +196,9 @@ WARNING: translation string unused: firewall log viewer
 WARNING: translation string unused: firmware
 WARNING: translation string unused: firmware upload
 WARNING: translation string unused: force update
+WARNING: translation string unused: forwarding rule added
+WARNING: translation string unused: forwarding rule removed
+WARNING: translation string unused: forwarding rule updated
 WARNING: translation string unused: frequency
 WARNING: translation string unused: fritzdsl help
 WARNING: translation string unused: fritzdsl upload
@@ -244,6 +264,7 @@ WARNING: translation string unused: local hard disk
 WARNING: translation string unused: localkeyfile
 WARNING: translation string unused: log enabled
 WARNING: translation string unused: log viewer
+WARNING: translation string unused: logging
 WARNING: translation string unused: loosedirectorychecking
 WARNING: translation string unused: ls_dhcpd
 WARNING: translation string unused: ls_disk space
@@ -269,6 +290,7 @@ WARNING: translation string unused: mbmon value
 WARNING: translation string unused: min size
 WARNING: translation string unused: missing dat
 WARNING: translation string unused: missing gz
+WARNING: translation string unused: mode
 WARNING: translation string unused: modem on com1
 WARNING: translation string unused: modem on com2
 WARNING: translation string unused: modem on com3
@@ -285,6 +307,7 @@ WARNING: translation string unused: monthly volume start day short
 WARNING: translation string unused: mount
 WARNING: translation string unused: mtu QoS
 WARNING: translation string unused: nat-traversal
+WARNING: translation string unused: net
 WARNING: translation string unused: net address
 WARNING: translation string unused: net config type
 WARNING: translation string unused: net config type help
@@ -311,6 +334,7 @@ WARNING: translation string unused: o-no
 WARNING: translation string unused: o-yes
 WARNING: translation string unused: online help en
 WARNING: translation string unused: only red
+WARNING: translation string unused: open to all
 WARNING: translation string unused: optional data
 WARNING: translation string unused: optionsfw portlist hint
 WARNING: translation string unused: optionsfw warning
@@ -318,7 +342,16 @@ WARNING: translation string unused: or
 WARNING: translation string unused: original
 WARNING: translation string unused: other countries
 WARNING: translation string unused: out
+WARNING: translation string unused: outgoing firewall
+WARNING: translation string unused: outgoing firewall mode0
+WARNING: translation string unused: outgoing firewall mode1
+WARNING: translation string unused: outgoing firewall mode2
 WARNING: translation string unused: outgoing firewall outgoing firewall reserved groupname
+WARNING: translation string unused: outgoing firewall p2p description 1
+WARNING: translation string unused: outgoing firewall p2p description 2
+WARNING: translation string unused: outgoing firewall p2p description 3
+WARNING: translation string unused: outgoing firewall reset
+WARNING: translation string unused: outgoing firewall warning
 WARNING: translation string unused: override mtu
 WARNING: translation string unused: ovpn
 WARNING: translation string unused: ovpn config
@@ -349,6 +382,8 @@ WARNING: translation string unused: passwords must be at least 6 characters in l
 WARNING: translation string unused: phonebook entry
 WARNING: translation string unused: ping disabled
 WARNING: translation string unused: polfile
+WARNING: translation string unused: policy
+WARNING: translation string unused: port forwarding configuration
 WARNING: translation string unused: ports
 WARNING: translation string unused: pots
 WARNING: translation string unused: pppoe
@@ -376,7 +411,9 @@ WARNING: translation string unused: router ip
 WARNING: translation string unused: rules already up to date
 WARNING: translation string unused: safe removal of umounted device
 WARNING: translation string unused: save error
+WARNING: translation string unused: select dest net
 WARNING: translation string unused: select media
+WARNING: translation string unused: select source net
 WARNING: translation string unused: selecttraffic
 WARNING: translation string unused: send email notification
 WARNING: translation string unused: send test mail
@@ -395,15 +432,23 @@ WARNING: translation string unused: shutdown2
 WARNING: translation string unused: shutting down
 WARNING: translation string unused: sitekeyfile
 WARNING: translation string unused: smbreload
+WARNING: translation string unused: source ip in use
+WARNING: translation string unused: source ip or net
+WARNING: translation string unused: source net
+WARNING: translation string unused: source port overlaps
 WARNING: translation string unused: squid extension methods
 WARNING: translation string unused: squid extension methods invalid
 WARNING: translation string unused: squid fix cache
+WARNING: translation string unused: srcprt range overlaps
+WARNING: translation string unused: srcprt within existing
+WARNING: translation string unused: ssdmz pinholes
 WARNING: translation string unused: ssh access tip
 WARNING: translation string unused: ssh1 disabled
 WARNING: translation string unused: ssh1 enabled
 WARNING: translation string unused: ssh1 support
 WARNING: translation string unused: ssnetwork status
 WARNING: translation string unused: sspasswords
+WARNING: translation string unused: ssport forwarding
 WARNING: translation string unused: ssproxy graphs
 WARNING: translation string unused: sssystem status
 WARNING: translation string unused: sstraffic graphs
@@ -498,6 +543,7 @@ WARNING: translation string unused: warn when traffic reaches
 WARNING: translation string unused: web proxy configuration
 WARNING: translation string unused: week-graph
 WARNING: translation string unused: weekly firewallhits
+WARNING: translation string unused: xtaccess all error
 WARNING: translation string unused: xtaccess bad transfert
 WARNING: translation string unused: year-graph
 WARNING: translation string unused: yearly firewallhits
@@ -558,6 +604,11 @@ WARNING: untranslated string: dnsforward edit an entry
 WARNING: untranslated string: dnsforward entries
 WARNING: untranslated string: dnsforward forward_server
 WARNING: untranslated string: dnsforward zone
+WARNING: untranslated string: drop action
+WARNING: untranslated string: drop action1
+WARNING: untranslated string: drop action2
+WARNING: untranslated string: drop forward
+WARNING: untranslated string: drop outgoing
 WARNING: untranslated string: emerging rules
 WARNING: untranslated string: fireinfo ipfire version
 WARNING: untranslated string: fireinfo is disabled
@@ -576,6 +627,145 @@ WARNING: untranslated string: fireinfo why descr2
 WARNING: untranslated string: fireinfo why enable
 WARNING: untranslated string: fireinfo why read more
 WARNING: untranslated string: fireinfo your profile id
+WARNING: untranslated string: fw default drop
+WARNING: untranslated string: fw settings
+WARNING: untranslated string: fw settings color
+WARNING: untranslated string: fw settings dropdown
+WARNING: untranslated string: fw settings remark
+WARNING: untranslated string: fw settings ruletable
+WARNING: untranslated string: fwdfw ACCEPT
+WARNING: untranslated string: fwdfw DROP
+WARNING: untranslated string: fwdfw REJECT
+WARNING: untranslated string: fwdfw action
+WARNING: untranslated string: fwdfw additional
+WARNING: untranslated string: fwdfw addrule
+WARNING: untranslated string: fwdfw all icmp
+WARNING: untranslated string: fwdfw change
+WARNING: untranslated string: fwdfw copy
+WARNING: untranslated string: fwdfw delete
+WARNING: untranslated string: fwdfw dnat
+WARNING: untranslated string: fwdfw dnat error
+WARNING: untranslated string: fwdfw dnat porterr
+WARNING: untranslated string: fwdfw edit
+WARNING: untranslated string: fwdfw err nosrc
+WARNING: untranslated string: fwdfw err nosrcip
+WARNING: untranslated string: fwdfw err notgt
+WARNING: untranslated string: fwdfw err notgtip
+WARNING: untranslated string: fwdfw err prot_port
+WARNING: untranslated string: fwdfw err prot_port1
+WARNING: untranslated string: fwdfw err remark
+WARNING: untranslated string: fwdfw err ruleexists
+WARNING: untranslated string: fwdfw err same
+WARNING: untranslated string: fwdfw err samesub
+WARNING: untranslated string: fwdfw err src_addr
+WARNING: untranslated string: fwdfw err tgt_addr
+WARNING: untranslated string: fwdfw err tgt_grp
+WARNING: untranslated string: fwdfw err tgt_mac
+WARNING: untranslated string: fwdfw err time
+WARNING: untranslated string: fwdfw final_rule
+WARNING: untranslated string: fwdfw hint ip1
+WARNING: untranslated string: fwdfw hint ip2
+WARNING: untranslated string: fwdfw log rule
+WARNING: untranslated string: fwdfw menu
+WARNING: untranslated string: fwdfw movedown
+WARNING: untranslated string: fwdfw moveup
+WARNING: untranslated string: fwdfw newrule
+WARNING: untranslated string: fwdfw p2p txt
+WARNING: untranslated string: fwdfw pol allow
+WARNING: untranslated string: fwdfw pol block
+WARNING: untranslated string: fwdfw pol text
+WARNING: untranslated string: fwdfw pol text1
+WARNING: untranslated string: fwdfw pol title
+WARNING: untranslated string: fwdfw red
+WARNING: untranslated string: fwdfw reread
+WARNING: untranslated string: fwdfw rule activate
+WARNING: untranslated string: fwdfw rulepos
+WARNING: untranslated string: fwdfw snat
+WARNING: untranslated string: fwdfw source
+WARNING: untranslated string: fwdfw sourceip
+WARNING: untranslated string: fwdfw target
+WARNING: untranslated string: fwdfw targetip
+WARNING: untranslated string: fwdfw timeframe
+WARNING: untranslated string: fwdfw toggle
+WARNING: untranslated string: fwdfw togglelog
+WARNING: untranslated string: fwdfw use nat
+WARNING: untranslated string: fwdfw use srcport
+WARNING: untranslated string: fwdfw use srv
+WARNING: untranslated string: fwdfw useless rule
+WARNING: untranslated string: fwdfw wd_fri
+WARNING: untranslated string: fwdfw wd_mon
+WARNING: untranslated string: fwdfw wd_sat
+WARNING: untranslated string: fwdfw wd_sun
+WARNING: untranslated string: fwdfw wd_thu
+WARNING: untranslated string: fwdfw wd_tue
+WARNING: untranslated string: fwdfw wd_wed
+WARNING: untranslated string: fwdfw xt access
+WARNING: untranslated string: fwhost addgrp
+WARNING: untranslated string: fwhost addgrpname
+WARNING: untranslated string: fwhost addhost
+WARNING: untranslated string: fwhost addnet
+WARNING: untranslated string: fwhost addservice
+WARNING: untranslated string: fwhost addservicegrp
+WARNING: untranslated string: fwhost any
+WARNING: untranslated string: fwhost back
+WARNING: untranslated string: fwhost ccdhost
+WARNING: untranslated string: fwhost ccdnet
+WARNING: untranslated string: fwhost change
+WARNING: untranslated string: fwhost cust addr
+WARNING: untranslated string: fwhost cust grp
+WARNING: untranslated string: fwhost cust net
+WARNING: untranslated string: fwhost cust service
+WARNING: untranslated string: fwhost cust srvgrp
+WARNING: untranslated string: fwhost deleted
+WARNING: untranslated string: fwhost empty
+WARNING: untranslated string: fwhost err addr
+WARNING: untranslated string: fwhost err empty
+WARNING: untranslated string: fwhost err emptytable
+WARNING: untranslated string: fwhost err groupempty
+WARNING: untranslated string: fwhost err grpexist
+WARNING: untranslated string: fwhost err hostexist
+WARNING: untranslated string: fwhost err hostip
+WARNING: untranslated string: fwhost err ip
+WARNING: untranslated string: fwhost err ipcheck
+WARNING: untranslated string: fwhost err ipmac
+WARNING: untranslated string: fwhost err ipwithsub
+WARNING: untranslated string: fwhost err isccdhost
+WARNING: untranslated string: fwhost err isccdiphost
+WARNING: untranslated string: fwhost err isccdipnet
+WARNING: untranslated string: fwhost err isccdnet
+WARNING: untranslated string: fwhost err isingrp
+WARNING: untranslated string: fwhost err name
+WARNING: untranslated string: fwhost err name1
+WARNING: untranslated string: fwhost err net
+WARNING: untranslated string: fwhost err netexist
+WARNING: untranslated string: fwhost err partofnet
+WARNING: untranslated string: fwhost err port
+WARNING: untranslated string: fwhost err remark
+WARNING: untranslated string: fwhost err srv exists
+WARNING: untranslated string: fwhost err srvexist
+WARNING: untranslated string: fwhost err sub32
+WARNING: untranslated string: fwhost hint
+WARNING: untranslated string: fwhost hosts
+WARNING: untranslated string: fwhost icmptype
+WARNING: untranslated string: fwhost ip_mac
+WARNING: untranslated string: fwhost ipsec net
+WARNING: untranslated string: fwhost menu
+WARNING: untranslated string: fwhost netaddress
+WARNING: untranslated string: fwhost newgrp
+WARNING: untranslated string: fwhost newhost
+WARNING: untranslated string: fwhost newnet
+WARNING: untranslated string: fwhost newservice
+WARNING: untranslated string: fwhost newservicegrp
+WARNING: untranslated string: fwhost ovpn_n2n
+WARNING: untranslated string: fwhost port
+WARNING: untranslated string: fwhost prot
+WARNING: untranslated string: fwhost reread
+WARNING: untranslated string: fwhost services
+WARNING: untranslated string: fwhost srv_name
+WARNING: untranslated string: fwhost stdnet
+WARNING: untranslated string: fwhost type
+WARNING: untranslated string: fwhost used
+WARNING: untranslated string: fwhost welcome
 WARNING: untranslated string: least preferred
 WARNING: untranslated string: minute
 WARNING: untranslated string: most preferred
@@ -606,6 +796,7 @@ WARNING: untranslated string: proxy reports monthly
 WARNING: untranslated string: proxy reports today
 WARNING: untranslated string: proxy reports weekly
 WARNING: untranslated string: qos enter bandwidths
+WARNING: untranslated string: red1
 WARNING: untranslated string: route config changed
 WARNING: untranslated string: routing config added
 WARNING: untranslated string: routing config changed
index cdde0f38daae3ddabfccf07551a0d6336af99f98..142ec4d5f9f0b7a740d830f145b852aeb165fed8 100644 (file)
@@ -11,10 +11,12 @@ WARNING: translation string unused: Remote VPN IP
 WARNING: translation string unused: Resolv
 WARNING: translation string unused: TOS Bits
 WARNING: translation string unused: Verbose
+WARNING: translation string unused: access allowed
 WARNING: translation string unused: access refused with this oinkcode
 WARNING: translation string unused: add network
 WARNING: translation string unused: add new ovpn
 WARNING: translation string unused: add service
+WARNING: translation string unused: add xtaccess
 WARNING: translation string unused: add-route
 WARNING: translation string unused: admin user password has been changed
 WARNING: translation string unused: administrator user password
@@ -46,6 +48,7 @@ WARNING: translation string unused: all updates installed
 WARNING: translation string unused: allmsg
 WARNING: translation string unused: alt information
 WARNING: translation string unused: alt ovpn
+WARNING: translation string unused: alt vpn
 WARNING: translation string unused: and
 WARNING: translation string unused: ansi t1.483
 WARNING: translation string unused: apply
@@ -87,6 +90,7 @@ WARNING: translation string unused: cache management
 WARNING: translation string unused: cache size
 WARNING: translation string unused: calamaris report interval (in minutes)
 WARNING: translation string unused: calc traffic all x minutes
+WARNING: translation string unused: cant enable xtaccess
 WARNING: translation string unused: capsinactive
 WARNING: translation string unused: ccd err iroute
 WARNING: translation string unused: ccd err netadr
@@ -129,6 +133,11 @@ WARNING: translation string unused: debugme
 WARNING: translation string unused: deep scan directories
 WARNING: translation string unused: default networks
 WARNING: translation string unused: default services
+WARNING: translation string unused: description
+WARNING: translation string unused: destination ip bad
+WARNING: translation string unused: destination ip or net
+WARNING: translation string unused: destination net
+WARNING: translation string unused: destination port overlaps
 WARNING: translation string unused: dhcp base ip fixed lease
 WARNING: translation string unused: dhcp create fixed leases
 WARNING: translation string unused: dhcp fixed lease err1
@@ -141,11 +150,18 @@ WARNING: translation string unused: dial user password has been changed
 WARNING: translation string unused: dialup settings
 WARNING: translation string unused: disconnect
 WARNING: translation string unused: display traffic at home
+WARNING: translation string unused: dmz pinhole configuration
+WARNING: translation string unused: dmz pinhole rule added
+WARNING: translation string unused: dmz pinhole rule removed
+WARNING: translation string unused: dmzpinholes for same net not necessary
 WARNING: translation string unused: dns server
 WARNING: translation string unused: do not log this port list
 WARNING: translation string unused: donation-link
 WARNING: translation string unused: done
 WARNING: translation string unused: driver
+WARNING: translation string unused: drop output
+WARNING: translation string unused: dstprt range overlaps
+WARNING: translation string unused: dstprt within existing
 WARNING: translation string unused: dynamic dns client
 WARNING: translation string unused: eciadsl help
 WARNING: translation string unused: eciadsl upload
@@ -172,6 +188,7 @@ WARNING: translation string unused: error external access
 WARNING: translation string unused: expected
 WARNING: translation string unused: expertoptions
 WARNING: translation string unused: exportkey
+WARNING: translation string unused: external access
 WARNING: translation string unused: external access rule changed
 WARNING: translation string unused: extrahd unable to read
 WARNING: translation string unused: extrahd unable to write
@@ -181,6 +198,9 @@ WARNING: translation string unused: firewall log viewer
 WARNING: translation string unused: firmware
 WARNING: translation string unused: firmware upload
 WARNING: translation string unused: force update
+WARNING: translation string unused: forwarding rule added
+WARNING: translation string unused: forwarding rule removed
+WARNING: translation string unused: forwarding rule updated
 WARNING: translation string unused: frequency
 WARNING: translation string unused: fritzdsl help
 WARNING: translation string unused: fritzdsl upload
@@ -246,6 +266,7 @@ WARNING: translation string unused: local hard disk
 WARNING: translation string unused: localkeyfile
 WARNING: translation string unused: log enabled
 WARNING: translation string unused: log viewer
+WARNING: translation string unused: logging
 WARNING: translation string unused: loosedirectorychecking
 WARNING: translation string unused: ls_dhcpd
 WARNING: translation string unused: ls_disk space
@@ -271,6 +292,7 @@ WARNING: translation string unused: mbmon value
 WARNING: translation string unused: min size
 WARNING: translation string unused: missing dat
 WARNING: translation string unused: missing gz
+WARNING: translation string unused: mode
 WARNING: translation string unused: modem on com1
 WARNING: translation string unused: modem on com2
 WARNING: translation string unused: modem on com3
@@ -287,6 +309,7 @@ WARNING: translation string unused: monthly volume start day short
 WARNING: translation string unused: mount
 WARNING: translation string unused: mtu QoS
 WARNING: translation string unused: nat-traversal
+WARNING: translation string unused: net
 WARNING: translation string unused: net address
 WARNING: translation string unused: net config type
 WARNING: translation string unused: net config type help
@@ -313,6 +336,7 @@ WARNING: translation string unused: o-no
 WARNING: translation string unused: o-yes
 WARNING: translation string unused: online help en
 WARNING: translation string unused: only red
+WARNING: translation string unused: open to all
 WARNING: translation string unused: openvpn disabled
 WARNING: translation string unused: openvpn enabled
 WARNING: translation string unused: optional data
@@ -323,7 +347,16 @@ WARNING: translation string unused: original
 WARNING: translation string unused: other countries
 WARNING: translation string unused: our donors
 WARNING: translation string unused: out
+WARNING: translation string unused: outgoing firewall
+WARNING: translation string unused: outgoing firewall mode0
+WARNING: translation string unused: outgoing firewall mode1
+WARNING: translation string unused: outgoing firewall mode2
 WARNING: translation string unused: outgoing firewall outgoing firewall reserved groupname
+WARNING: translation string unused: outgoing firewall p2p description 1
+WARNING: translation string unused: outgoing firewall p2p description 2
+WARNING: translation string unused: outgoing firewall p2p description 3
+WARNING: translation string unused: outgoing firewall reset
+WARNING: translation string unused: outgoing firewall warning
 WARNING: translation string unused: override mtu
 WARNING: translation string unused: ovpn
 WARNING: translation string unused: ovpn config
@@ -354,6 +387,8 @@ WARNING: translation string unused: passwords must be at least 6 characters in l
 WARNING: translation string unused: phonebook entry
 WARNING: translation string unused: ping disabled
 WARNING: translation string unused: polfile
+WARNING: translation string unused: policy
+WARNING: translation string unused: port forwarding configuration
 WARNING: translation string unused: ports
 WARNING: translation string unused: pots
 WARNING: translation string unused: pppoe
@@ -381,7 +416,9 @@ WARNING: translation string unused: router ip
 WARNING: translation string unused: rules already up to date
 WARNING: translation string unused: safe removal of umounted device
 WARNING: translation string unused: save error
+WARNING: translation string unused: select dest net
 WARNING: translation string unused: select media
+WARNING: translation string unused: select source net
 WARNING: translation string unused: selecttraffic
 WARNING: translation string unused: send email notification
 WARNING: translation string unused: send test mail
@@ -400,15 +437,23 @@ WARNING: translation string unused: shutdown2
 WARNING: translation string unused: shutting down
 WARNING: translation string unused: sitekeyfile
 WARNING: translation string unused: smbreload
+WARNING: translation string unused: source ip in use
+WARNING: translation string unused: source ip or net
+WARNING: translation string unused: source net
+WARNING: translation string unused: source port overlaps
 WARNING: translation string unused: squid extension methods
 WARNING: translation string unused: squid extension methods invalid
 WARNING: translation string unused: squid fix cache
+WARNING: translation string unused: srcprt range overlaps
+WARNING: translation string unused: srcprt within existing
+WARNING: translation string unused: ssdmz pinholes
 WARNING: translation string unused: ssh access tip
 WARNING: translation string unused: ssh1 disabled
 WARNING: translation string unused: ssh1 enabled
 WARNING: translation string unused: ssh1 support
 WARNING: translation string unused: ssnetwork status
 WARNING: translation string unused: sspasswords
+WARNING: translation string unused: ssport forwarding
 WARNING: translation string unused: ssproxy graphs
 WARNING: translation string unused: sssystem status
 WARNING: translation string unused: sstraffic graphs
@@ -501,6 +546,7 @@ WARNING: translation string unused: warn when traffic reaches
 WARNING: translation string unused: web proxy configuration
 WARNING: translation string unused: week-graph
 WARNING: translation string unused: weekly firewallhits
+WARNING: translation string unused: xtaccess all error
 WARNING: translation string unused: xtaccess bad transfert
 WARNING: translation string unused: year-graph
 WARNING: translation string unused: yearly firewallhits
@@ -522,11 +568,156 @@ WARNING: untranslated string: dnsforward edit an entry
 WARNING: untranslated string: dnsforward entries
 WARNING: untranslated string: dnsforward forward_server
 WARNING: untranslated string: dnsforward zone
+WARNING: untranslated string: drop action
+WARNING: untranslated string: drop action1
+WARNING: untranslated string: drop action2
+WARNING: untranslated string: drop forward
+WARNING: untranslated string: drop outgoing
+WARNING: untranslated string: fw default drop
+WARNING: untranslated string: fw settings
+WARNING: untranslated string: fw settings color
+WARNING: untranslated string: fw settings dropdown
+WARNING: untranslated string: fw settings remark
+WARNING: untranslated string: fw settings ruletable
+WARNING: untranslated string: fwdfw ACCEPT
+WARNING: untranslated string: fwdfw DROP
+WARNING: untranslated string: fwdfw REJECT
+WARNING: untranslated string: fwdfw action
+WARNING: untranslated string: fwdfw additional
+WARNING: untranslated string: fwdfw addrule
+WARNING: untranslated string: fwdfw all icmp
+WARNING: untranslated string: fwdfw change
+WARNING: untranslated string: fwdfw copy
+WARNING: untranslated string: fwdfw delete
+WARNING: untranslated string: fwdfw dnat
+WARNING: untranslated string: fwdfw dnat error
+WARNING: untranslated string: fwdfw dnat porterr
+WARNING: untranslated string: fwdfw edit
+WARNING: untranslated string: fwdfw err nosrc
+WARNING: untranslated string: fwdfw err nosrcip
+WARNING: untranslated string: fwdfw err notgt
+WARNING: untranslated string: fwdfw err notgtip
+WARNING: untranslated string: fwdfw err prot_port
+WARNING: untranslated string: fwdfw err prot_port1
+WARNING: untranslated string: fwdfw err remark
+WARNING: untranslated string: fwdfw err ruleexists
+WARNING: untranslated string: fwdfw err same
+WARNING: untranslated string: fwdfw err samesub
+WARNING: untranslated string: fwdfw err src_addr
+WARNING: untranslated string: fwdfw err tgt_addr
+WARNING: untranslated string: fwdfw err tgt_grp
+WARNING: untranslated string: fwdfw err tgt_mac
+WARNING: untranslated string: fwdfw err time
+WARNING: untranslated string: fwdfw final_rule
+WARNING: untranslated string: fwdfw hint ip1
+WARNING: untranslated string: fwdfw hint ip2
+WARNING: untranslated string: fwdfw log rule
+WARNING: untranslated string: fwdfw menu
+WARNING: untranslated string: fwdfw movedown
+WARNING: untranslated string: fwdfw moveup
+WARNING: untranslated string: fwdfw newrule
+WARNING: untranslated string: fwdfw p2p txt
+WARNING: untranslated string: fwdfw pol allow
+WARNING: untranslated string: fwdfw pol block
+WARNING: untranslated string: fwdfw pol text
+WARNING: untranslated string: fwdfw pol text1
+WARNING: untranslated string: fwdfw pol title
+WARNING: untranslated string: fwdfw red
+WARNING: untranslated string: fwdfw reread
+WARNING: untranslated string: fwdfw rule activate
+WARNING: untranslated string: fwdfw rulepos
+WARNING: untranslated string: fwdfw snat
+WARNING: untranslated string: fwdfw source
+WARNING: untranslated string: fwdfw sourceip
+WARNING: untranslated string: fwdfw target
+WARNING: untranslated string: fwdfw targetip
+WARNING: untranslated string: fwdfw timeframe
+WARNING: untranslated string: fwdfw toggle
+WARNING: untranslated string: fwdfw togglelog
+WARNING: untranslated string: fwdfw use nat
+WARNING: untranslated string: fwdfw use srcport
+WARNING: untranslated string: fwdfw use srv
+WARNING: untranslated string: fwdfw useless rule
+WARNING: untranslated string: fwdfw wd_fri
+WARNING: untranslated string: fwdfw wd_mon
+WARNING: untranslated string: fwdfw wd_sat
+WARNING: untranslated string: fwdfw wd_sun
+WARNING: untranslated string: fwdfw wd_thu
+WARNING: untranslated string: fwdfw wd_tue
+WARNING: untranslated string: fwdfw wd_wed
+WARNING: untranslated string: fwdfw xt access
+WARNING: untranslated string: fwhost addgrp
+WARNING: untranslated string: fwhost addgrpname
+WARNING: untranslated string: fwhost addhost
+WARNING: untranslated string: fwhost addnet
+WARNING: untranslated string: fwhost addservice
+WARNING: untranslated string: fwhost addservicegrp
+WARNING: untranslated string: fwhost any
+WARNING: untranslated string: fwhost back
+WARNING: untranslated string: fwhost ccdhost
+WARNING: untranslated string: fwhost ccdnet
+WARNING: untranslated string: fwhost change
+WARNING: untranslated string: fwhost cust addr
+WARNING: untranslated string: fwhost cust grp
+WARNING: untranslated string: fwhost cust net
+WARNING: untranslated string: fwhost cust service
+WARNING: untranslated string: fwhost cust srvgrp
+WARNING: untranslated string: fwhost deleted
+WARNING: untranslated string: fwhost empty
+WARNING: untranslated string: fwhost err addr
+WARNING: untranslated string: fwhost err empty
+WARNING: untranslated string: fwhost err emptytable
+WARNING: untranslated string: fwhost err groupempty
+WARNING: untranslated string: fwhost err grpexist
+WARNING: untranslated string: fwhost err hostexist
+WARNING: untranslated string: fwhost err hostip
+WARNING: untranslated string: fwhost err ip
+WARNING: untranslated string: fwhost err ipcheck
+WARNING: untranslated string: fwhost err ipmac
+WARNING: untranslated string: fwhost err ipwithsub
+WARNING: untranslated string: fwhost err isccdhost
+WARNING: untranslated string: fwhost err isccdiphost
+WARNING: untranslated string: fwhost err isccdipnet
+WARNING: untranslated string: fwhost err isccdnet
+WARNING: untranslated string: fwhost err isingrp
+WARNING: untranslated string: fwhost err name
+WARNING: untranslated string: fwhost err name1
+WARNING: untranslated string: fwhost err net
+WARNING: untranslated string: fwhost err netexist
+WARNING: untranslated string: fwhost err partofnet
+WARNING: untranslated string: fwhost err port
+WARNING: untranslated string: fwhost err remark
+WARNING: untranslated string: fwhost err srv exists
+WARNING: untranslated string: fwhost err srvexist
+WARNING: untranslated string: fwhost err sub32
+WARNING: untranslated string: fwhost hint
+WARNING: untranslated string: fwhost hosts
+WARNING: untranslated string: fwhost icmptype
+WARNING: untranslated string: fwhost ip_mac
+WARNING: untranslated string: fwhost ipsec net
+WARNING: untranslated string: fwhost menu
+WARNING: untranslated string: fwhost netaddress
+WARNING: untranslated string: fwhost newgrp
+WARNING: untranslated string: fwhost newhost
+WARNING: untranslated string: fwhost newnet
+WARNING: untranslated string: fwhost newservice
+WARNING: untranslated string: fwhost newservicegrp
+WARNING: untranslated string: fwhost ovpn_n2n
+WARNING: untranslated string: fwhost port
+WARNING: untranslated string: fwhost prot
+WARNING: untranslated string: fwhost reread
+WARNING: untranslated string: fwhost services
+WARNING: untranslated string: fwhost srv_name
+WARNING: untranslated string: fwhost stdnet
+WARNING: untranslated string: fwhost type
+WARNING: untranslated string: fwhost used
+WARNING: untranslated string: fwhost welcome
 WARNING: untranslated string: least preferred
 WARNING: untranslated string: most preferred
 WARNING: untranslated string: new
 WARNING: untranslated string: outgoing firewall reserved groupname
 WARNING: untranslated string: qos enter bandwidths
+WARNING: untranslated string: red1
 WARNING: untranslated string: route config changed
 WARNING: untranslated string: routing config added
 WARNING: untranslated string: routing config changed
index f46723e509adeeee3cc54f3fe1c7b3bc5efc83ca..6faff27a02038795127abe8ba3867844df1b8115 100644 (file)
@@ -11,10 +11,12 @@ WARNING: translation string unused: Remote VPN IP
 WARNING: translation string unused: Resolv
 WARNING: translation string unused: TOS Bits
 WARNING: translation string unused: Verbose
+WARNING: translation string unused: access allowed
 WARNING: translation string unused: access refused with this oinkcode
 WARNING: translation string unused: add network
 WARNING: translation string unused: add new ovpn
 WARNING: translation string unused: add service
+WARNING: translation string unused: add xtaccess
 WARNING: translation string unused: add-route
 WARNING: translation string unused: admin user password has been changed
 WARNING: translation string unused: administrator user password
@@ -46,6 +48,7 @@ WARNING: translation string unused: all updates installed
 WARNING: translation string unused: allmsg
 WARNING: translation string unused: alt information
 WARNING: translation string unused: alt ovpn
+WARNING: translation string unused: alt vpn
 WARNING: translation string unused: and
 WARNING: translation string unused: ansi t1.483
 WARNING: translation string unused: apply
@@ -87,6 +90,7 @@ WARNING: translation string unused: cache management
 WARNING: translation string unused: cache size
 WARNING: translation string unused: calamaris report interval (in minutes)
 WARNING: translation string unused: calc traffic all x minutes
+WARNING: translation string unused: cant enable xtaccess
 WARNING: translation string unused: capsinactive
 WARNING: translation string unused: cfg restart
 WARNING: translation string unused: check for net traffic update
@@ -127,6 +131,11 @@ WARNING: translation string unused: debugme
 WARNING: translation string unused: deep scan directories
 WARNING: translation string unused: default networks
 WARNING: translation string unused: default services
+WARNING: translation string unused: description
+WARNING: translation string unused: destination ip bad
+WARNING: translation string unused: destination ip or net
+WARNING: translation string unused: destination net
+WARNING: translation string unused: destination port overlaps
 WARNING: translation string unused: dhcp base ip fixed lease
 WARNING: translation string unused: dhcp create fixed leases
 WARNING: translation string unused: dhcp fixed lease err1
@@ -139,11 +148,18 @@ WARNING: translation string unused: dial user password has been changed
 WARNING: translation string unused: dialup settings
 WARNING: translation string unused: disconnect
 WARNING: translation string unused: display traffic at home
+WARNING: translation string unused: dmz pinhole configuration
+WARNING: translation string unused: dmz pinhole rule added
+WARNING: translation string unused: dmz pinhole rule removed
+WARNING: translation string unused: dmzpinholes for same net not necessary
 WARNING: translation string unused: dns server
 WARNING: translation string unused: do not log this port list
 WARNING: translation string unused: donation-link
 WARNING: translation string unused: done
 WARNING: translation string unused: driver
+WARNING: translation string unused: drop output
+WARNING: translation string unused: dstprt range overlaps
+WARNING: translation string unused: dstprt within existing
 WARNING: translation string unused: dynamic dns client
 WARNING: translation string unused: eciadsl help
 WARNING: translation string unused: eciadsl upload
@@ -170,6 +186,7 @@ WARNING: translation string unused: error external access
 WARNING: translation string unused: expected
 WARNING: translation string unused: expertoptions
 WARNING: translation string unused: exportkey
+WARNING: translation string unused: external access
 WARNING: translation string unused: external access rule changed
 WARNING: translation string unused: extrahd unable to read
 WARNING: translation string unused: extrahd unable to write
@@ -179,6 +196,9 @@ WARNING: translation string unused: firewall log viewer
 WARNING: translation string unused: firmware
 WARNING: translation string unused: firmware upload
 WARNING: translation string unused: force update
+WARNING: translation string unused: forwarding rule added
+WARNING: translation string unused: forwarding rule removed
+WARNING: translation string unused: forwarding rule updated
 WARNING: translation string unused: frequency
 WARNING: translation string unused: fritzdsl help
 WARNING: translation string unused: fritzdsl upload
@@ -244,6 +264,7 @@ WARNING: translation string unused: local hard disk
 WARNING: translation string unused: localkeyfile
 WARNING: translation string unused: log enabled
 WARNING: translation string unused: log viewer
+WARNING: translation string unused: logging
 WARNING: translation string unused: loosedirectorychecking
 WARNING: translation string unused: ls_dhcpd
 WARNING: translation string unused: ls_disk space
@@ -269,6 +290,7 @@ WARNING: translation string unused: mbmon value
 WARNING: translation string unused: min size
 WARNING: translation string unused: missing dat
 WARNING: translation string unused: missing gz
+WARNING: translation string unused: mode
 WARNING: translation string unused: modem on com1
 WARNING: translation string unused: modem on com2
 WARNING: translation string unused: modem on com3
@@ -285,6 +307,7 @@ WARNING: translation string unused: monthly volume start day short
 WARNING: translation string unused: mount
 WARNING: translation string unused: mtu QoS
 WARNING: translation string unused: nat-traversal
+WARNING: translation string unused: net
 WARNING: translation string unused: net address
 WARNING: translation string unused: net config type
 WARNING: translation string unused: net config type help
@@ -311,6 +334,7 @@ WARNING: translation string unused: o-no
 WARNING: translation string unused: o-yes
 WARNING: translation string unused: online help en
 WARNING: translation string unused: only red
+WARNING: translation string unused: open to all
 WARNING: translation string unused: optional data
 WARNING: translation string unused: optionsfw portlist hint
 WARNING: translation string unused: optionsfw warning
@@ -318,8 +342,14 @@ WARNING: translation string unused: or
 WARNING: translation string unused: original
 WARNING: translation string unused: other countries
 WARNING: translation string unused: out
+WARNING: translation string unused: outgoing firewall
+WARNING: translation string unused: outgoing firewall mode0
+WARNING: translation string unused: outgoing firewall mode1
+WARNING: translation string unused: outgoing firewall mode2
 WARNING: translation string unused: outgoing firewall outgoing firewall reserved groupname
 WARNING: translation string unused: outgoing firewall p2p description
+WARNING: translation string unused: outgoing firewall reset
+WARNING: translation string unused: outgoing firewall warning
 WARNING: translation string unused: override mtu
 WARNING: translation string unused: ovpn
 WARNING: translation string unused: ovpn config
@@ -350,6 +380,8 @@ WARNING: translation string unused: passwords must be at least 6 characters in l
 WARNING: translation string unused: phonebook entry
 WARNING: translation string unused: ping disabled
 WARNING: translation string unused: polfile
+WARNING: translation string unused: policy
+WARNING: translation string unused: port forwarding configuration
 WARNING: translation string unused: ports
 WARNING: translation string unused: pots
 WARNING: translation string unused: pppoe
@@ -377,7 +409,9 @@ WARNING: translation string unused: router ip
 WARNING: translation string unused: rules already up to date
 WARNING: translation string unused: safe removal of umounted device
 WARNING: translation string unused: save error
+WARNING: translation string unused: select dest net
 WARNING: translation string unused: select media
+WARNING: translation string unused: select source net
 WARNING: translation string unused: selecttraffic
 WARNING: translation string unused: send email notification
 WARNING: translation string unused: send test mail
@@ -396,15 +430,23 @@ WARNING: translation string unused: shutdown2
 WARNING: translation string unused: shutting down
 WARNING: translation string unused: sitekeyfile
 WARNING: translation string unused: smbreload
+WARNING: translation string unused: source ip in use
+WARNING: translation string unused: source ip or net
+WARNING: translation string unused: source net
+WARNING: translation string unused: source port overlaps
 WARNING: translation string unused: squid extension methods
 WARNING: translation string unused: squid extension methods invalid
 WARNING: translation string unused: squid fix cache
+WARNING: translation string unused: srcprt range overlaps
+WARNING: translation string unused: srcprt within existing
+WARNING: translation string unused: ssdmz pinholes
 WARNING: translation string unused: ssh access tip
 WARNING: translation string unused: ssh1 disabled
 WARNING: translation string unused: ssh1 enabled
 WARNING: translation string unused: ssh1 support
 WARNING: translation string unused: ssnetwork status
 WARNING: translation string unused: sspasswords
+WARNING: translation string unused: ssport forwarding
 WARNING: translation string unused: ssproxy graphs
 WARNING: translation string unused: sssystem status
 WARNING: translation string unused: sstraffic graphs
@@ -497,6 +539,7 @@ WARNING: translation string unused: warn when traffic reaches
 WARNING: translation string unused: web proxy configuration
 WARNING: translation string unused: week-graph
 WARNING: translation string unused: weekly firewallhits
+WARNING: translation string unused: xtaccess all error
 WARNING: translation string unused: xtaccess bad transfert
 WARNING: translation string unused: year-graph
 WARNING: translation string unused: yearly firewallhits
@@ -558,6 +601,11 @@ WARNING: untranslated string: dnsforward edit an entry
 WARNING: untranslated string: dnsforward entries
 WARNING: untranslated string: dnsforward forward_server
 WARNING: untranslated string: dnsforward zone
+WARNING: untranslated string: drop action
+WARNING: untranslated string: drop action1
+WARNING: untranslated string: drop action2
+WARNING: untranslated string: drop forward
+WARNING: untranslated string: drop outgoing
 WARNING: untranslated string: emerging rules
 WARNING: untranslated string: fireinfo ipfire version
 WARNING: untranslated string: fireinfo is disabled
@@ -576,6 +624,145 @@ WARNING: untranslated string: fireinfo why descr2
 WARNING: untranslated string: fireinfo why enable
 WARNING: untranslated string: fireinfo why read more
 WARNING: untranslated string: fireinfo your profile id
+WARNING: untranslated string: fw default drop
+WARNING: untranslated string: fw settings
+WARNING: untranslated string: fw settings color
+WARNING: untranslated string: fw settings dropdown
+WARNING: untranslated string: fw settings remark
+WARNING: untranslated string: fw settings ruletable
+WARNING: untranslated string: fwdfw ACCEPT
+WARNING: untranslated string: fwdfw DROP
+WARNING: untranslated string: fwdfw REJECT
+WARNING: untranslated string: fwdfw action
+WARNING: untranslated string: fwdfw additional
+WARNING: untranslated string: fwdfw addrule
+WARNING: untranslated string: fwdfw all icmp
+WARNING: untranslated string: fwdfw change
+WARNING: untranslated string: fwdfw copy
+WARNING: untranslated string: fwdfw delete
+WARNING: untranslated string: fwdfw dnat
+WARNING: untranslated string: fwdfw dnat error
+WARNING: untranslated string: fwdfw dnat porterr
+WARNING: untranslated string: fwdfw edit
+WARNING: untranslated string: fwdfw err nosrc
+WARNING: untranslated string: fwdfw err nosrcip
+WARNING: untranslated string: fwdfw err notgt
+WARNING: untranslated string: fwdfw err notgtip
+WARNING: untranslated string: fwdfw err prot_port
+WARNING: untranslated string: fwdfw err prot_port1
+WARNING: untranslated string: fwdfw err remark
+WARNING: untranslated string: fwdfw err ruleexists
+WARNING: untranslated string: fwdfw err same
+WARNING: untranslated string: fwdfw err samesub
+WARNING: untranslated string: fwdfw err src_addr
+WARNING: untranslated string: fwdfw err tgt_addr
+WARNING: untranslated string: fwdfw err tgt_grp
+WARNING: untranslated string: fwdfw err tgt_mac
+WARNING: untranslated string: fwdfw err time
+WARNING: untranslated string: fwdfw final_rule
+WARNING: untranslated string: fwdfw hint ip1
+WARNING: untranslated string: fwdfw hint ip2
+WARNING: untranslated string: fwdfw log rule
+WARNING: untranslated string: fwdfw menu
+WARNING: untranslated string: fwdfw movedown
+WARNING: untranslated string: fwdfw moveup
+WARNING: untranslated string: fwdfw newrule
+WARNING: untranslated string: fwdfw p2p txt
+WARNING: untranslated string: fwdfw pol allow
+WARNING: untranslated string: fwdfw pol block
+WARNING: untranslated string: fwdfw pol text
+WARNING: untranslated string: fwdfw pol text1
+WARNING: untranslated string: fwdfw pol title
+WARNING: untranslated string: fwdfw red
+WARNING: untranslated string: fwdfw reread
+WARNING: untranslated string: fwdfw rule activate
+WARNING: untranslated string: fwdfw rulepos
+WARNING: untranslated string: fwdfw snat
+WARNING: untranslated string: fwdfw source
+WARNING: untranslated string: fwdfw sourceip
+WARNING: untranslated string: fwdfw target
+WARNING: untranslated string: fwdfw targetip
+WARNING: untranslated string: fwdfw timeframe
+WARNING: untranslated string: fwdfw toggle
+WARNING: untranslated string: fwdfw togglelog
+WARNING: untranslated string: fwdfw use nat
+WARNING: untranslated string: fwdfw use srcport
+WARNING: untranslated string: fwdfw use srv
+WARNING: untranslated string: fwdfw useless rule
+WARNING: untranslated string: fwdfw wd_fri
+WARNING: untranslated string: fwdfw wd_mon
+WARNING: untranslated string: fwdfw wd_sat
+WARNING: untranslated string: fwdfw wd_sun
+WARNING: untranslated string: fwdfw wd_thu
+WARNING: untranslated string: fwdfw wd_tue
+WARNING: untranslated string: fwdfw wd_wed
+WARNING: untranslated string: fwdfw xt access
+WARNING: untranslated string: fwhost addgrp
+WARNING: untranslated string: fwhost addgrpname
+WARNING: untranslated string: fwhost addhost
+WARNING: untranslated string: fwhost addnet
+WARNING: untranslated string: fwhost addservice
+WARNING: untranslated string: fwhost addservicegrp
+WARNING: untranslated string: fwhost any
+WARNING: untranslated string: fwhost back
+WARNING: untranslated string: fwhost ccdhost
+WARNING: untranslated string: fwhost ccdnet
+WARNING: untranslated string: fwhost change
+WARNING: untranslated string: fwhost cust addr
+WARNING: untranslated string: fwhost cust grp
+WARNING: untranslated string: fwhost cust net
+WARNING: untranslated string: fwhost cust service
+WARNING: untranslated string: fwhost cust srvgrp
+WARNING: untranslated string: fwhost deleted
+WARNING: untranslated string: fwhost empty
+WARNING: untranslated string: fwhost err addr
+WARNING: untranslated string: fwhost err empty
+WARNING: untranslated string: fwhost err emptytable
+WARNING: untranslated string: fwhost err groupempty
+WARNING: untranslated string: fwhost err grpexist
+WARNING: untranslated string: fwhost err hostexist
+WARNING: untranslated string: fwhost err hostip
+WARNING: untranslated string: fwhost err ip
+WARNING: untranslated string: fwhost err ipcheck
+WARNING: untranslated string: fwhost err ipmac
+WARNING: untranslated string: fwhost err ipwithsub
+WARNING: untranslated string: fwhost err isccdhost
+WARNING: untranslated string: fwhost err isccdiphost
+WARNING: untranslated string: fwhost err isccdipnet
+WARNING: untranslated string: fwhost err isccdnet
+WARNING: untranslated string: fwhost err isingrp
+WARNING: untranslated string: fwhost err name
+WARNING: untranslated string: fwhost err name1
+WARNING: untranslated string: fwhost err net
+WARNING: untranslated string: fwhost err netexist
+WARNING: untranslated string: fwhost err partofnet
+WARNING: untranslated string: fwhost err port
+WARNING: untranslated string: fwhost err remark
+WARNING: untranslated string: fwhost err srv exists
+WARNING: untranslated string: fwhost err srvexist
+WARNING: untranslated string: fwhost err sub32
+WARNING: untranslated string: fwhost hint
+WARNING: untranslated string: fwhost hosts
+WARNING: untranslated string: fwhost icmptype
+WARNING: untranslated string: fwhost ip_mac
+WARNING: untranslated string: fwhost ipsec net
+WARNING: untranslated string: fwhost menu
+WARNING: untranslated string: fwhost netaddress
+WARNING: untranslated string: fwhost newgrp
+WARNING: untranslated string: fwhost newhost
+WARNING: untranslated string: fwhost newnet
+WARNING: untranslated string: fwhost newservice
+WARNING: untranslated string: fwhost newservicegrp
+WARNING: untranslated string: fwhost ovpn_n2n
+WARNING: untranslated string: fwhost port
+WARNING: untranslated string: fwhost prot
+WARNING: untranslated string: fwhost reread
+WARNING: untranslated string: fwhost services
+WARNING: untranslated string: fwhost srv_name
+WARNING: untranslated string: fwhost stdnet
+WARNING: untranslated string: fwhost type
+WARNING: untranslated string: fwhost used
+WARNING: untranslated string: fwhost welcome
 WARNING: untranslated string: least preferred
 WARNING: untranslated string: minute
 WARNING: untranslated string: most preferred
@@ -599,9 +786,6 @@ WARNING: untranslated string: outgoing firewall ip groups
 WARNING: untranslated string: outgoing firewall mac groups
 WARNING: untranslated string: outgoing firewall p2p allow
 WARNING: untranslated string: outgoing firewall p2p deny
-WARNING: untranslated string: outgoing firewall p2p description 1
-WARNING: untranslated string: outgoing firewall p2p description 2
-WARNING: untranslated string: outgoing firewall p2p description 3
 WARNING: untranslated string: outgoing firewall reserved groupname
 WARNING: untranslated string: outgoing firewall view group
 WARNING: untranslated string: ovpn errmsg green already pushed
@@ -622,6 +806,7 @@ WARNING: untranslated string: proxy reports monthly
 WARNING: untranslated string: proxy reports today
 WARNING: untranslated string: proxy reports weekly
 WARNING: untranslated string: qos enter bandwidths
+WARNING: untranslated string: red1
 WARNING: untranslated string: route config changed
 WARNING: untranslated string: routing config added
 WARNING: untranslated string: routing config changed
index a7d46dbb0f736abcc2d6f7b59dc3db691d059e66..4be5db7b6ca518131079f8b55bd9b3f226852b05 100644 (file)
@@ -11,10 +11,12 @@ WARNING: translation string unused: Remote VPN IP
 WARNING: translation string unused: Resolv
 WARNING: translation string unused: TOS Bits
 WARNING: translation string unused: Verbose
+WARNING: translation string unused: access allowed
 WARNING: translation string unused: access refused with this oinkcode
 WARNING: translation string unused: add network
 WARNING: translation string unused: add new ovpn
 WARNING: translation string unused: add service
+WARNING: translation string unused: add xtaccess
 WARNING: translation string unused: add-route
 WARNING: translation string unused: admin user password has been changed
 WARNING: translation string unused: administrator user password
@@ -46,6 +48,7 @@ WARNING: translation string unused: all updates installed
 WARNING: translation string unused: allmsg
 WARNING: translation string unused: alt information
 WARNING: translation string unused: alt ovpn
+WARNING: translation string unused: alt vpn
 WARNING: translation string unused: and
 WARNING: translation string unused: ansi t1.483
 WARNING: translation string unused: apply
@@ -87,6 +90,7 @@ WARNING: translation string unused: cache management
 WARNING: translation string unused: cache size
 WARNING: translation string unused: calamaris report interval (in minutes)
 WARNING: translation string unused: calc traffic all x minutes
+WARNING: translation string unused: cant enable xtaccess
 WARNING: translation string unused: capsinactive
 WARNING: translation string unused: cfg restart
 WARNING: translation string unused: check for net traffic update
@@ -126,6 +130,11 @@ WARNING: translation string unused: debugme
 WARNING: translation string unused: deep scan directories
 WARNING: translation string unused: default networks
 WARNING: translation string unused: default services
+WARNING: translation string unused: description
+WARNING: translation string unused: destination ip bad
+WARNING: translation string unused: destination ip or net
+WARNING: translation string unused: destination net
+WARNING: translation string unused: destination port overlaps
 WARNING: translation string unused: dhcp base ip fixed lease
 WARNING: translation string unused: dhcp create fixed leases
 WARNING: translation string unused: dhcp fixed lease err1
@@ -138,11 +147,18 @@ WARNING: translation string unused: dial user password has been changed
 WARNING: translation string unused: dialup settings
 WARNING: translation string unused: disconnect
 WARNING: translation string unused: display traffic at home
+WARNING: translation string unused: dmz pinhole configuration
+WARNING: translation string unused: dmz pinhole rule added
+WARNING: translation string unused: dmz pinhole rule removed
+WARNING: translation string unused: dmzpinholes for same net not necessary
 WARNING: translation string unused: dns server
 WARNING: translation string unused: do not log this port list
 WARNING: translation string unused: donation-link
 WARNING: translation string unused: done
 WARNING: translation string unused: driver
+WARNING: translation string unused: drop output
+WARNING: translation string unused: dstprt range overlaps
+WARNING: translation string unused: dstprt within existing
 WARNING: translation string unused: dynamic dns client
 WARNING: translation string unused: eciadsl help
 WARNING: translation string unused: eciadsl upload
@@ -169,6 +185,7 @@ WARNING: translation string unused: error external access
 WARNING: translation string unused: expected
 WARNING: translation string unused: expertoptions
 WARNING: translation string unused: exportkey
+WARNING: translation string unused: external access
 WARNING: translation string unused: external access rule changed
 WARNING: translation string unused: filename
 WARNING: translation string unused: firewall graphs
@@ -176,6 +193,9 @@ WARNING: translation string unused: firewall log viewer
 WARNING: translation string unused: firmware
 WARNING: translation string unused: firmware upload
 WARNING: translation string unused: force update
+WARNING: translation string unused: forwarding rule added
+WARNING: translation string unused: forwarding rule removed
+WARNING: translation string unused: forwarding rule updated
 WARNING: translation string unused: fritzdsl help
 WARNING: translation string unused: fritzdsl upload
 WARNING: translation string unused: from email adr
@@ -239,6 +259,7 @@ WARNING: translation string unused: local hard disk
 WARNING: translation string unused: localkeyfile
 WARNING: translation string unused: log enabled
 WARNING: translation string unused: log viewer
+WARNING: translation string unused: logging
 WARNING: translation string unused: loosedirectorychecking
 WARNING: translation string unused: ls_dhcpd
 WARNING: translation string unused: ls_disk space
@@ -264,6 +285,7 @@ WARNING: translation string unused: mbmon value
 WARNING: translation string unused: min size
 WARNING: translation string unused: missing dat
 WARNING: translation string unused: missing gz
+WARNING: translation string unused: mode
 WARNING: translation string unused: modem on com1
 WARNING: translation string unused: modem on com2
 WARNING: translation string unused: modem on com3
@@ -279,6 +301,7 @@ WARNING: translation string unused: monthly volume start day short
 WARNING: translation string unused: mount
 WARNING: translation string unused: mtu QoS
 WARNING: translation string unused: nat-traversal
+WARNING: translation string unused: net
 WARNING: translation string unused: net address
 WARNING: translation string unused: net config type
 WARNING: translation string unused: net config type help
@@ -305,6 +328,7 @@ WARNING: translation string unused: o-no
 WARNING: translation string unused: o-yes
 WARNING: translation string unused: online help en
 WARNING: translation string unused: only red
+WARNING: translation string unused: open to all
 WARNING: translation string unused: optional data
 WARNING: translation string unused: optionsfw portlist hint
 WARNING: translation string unused: optionsfw warning
@@ -312,7 +336,16 @@ WARNING: translation string unused: or
 WARNING: translation string unused: original
 WARNING: translation string unused: other countries
 WARNING: translation string unused: out
+WARNING: translation string unused: outgoing firewall
+WARNING: translation string unused: outgoing firewall mode0
+WARNING: translation string unused: outgoing firewall mode1
+WARNING: translation string unused: outgoing firewall mode2
 WARNING: translation string unused: outgoing firewall outgoing firewall reserved groupname
+WARNING: translation string unused: outgoing firewall p2p description 1
+WARNING: translation string unused: outgoing firewall p2p description 2
+WARNING: translation string unused: outgoing firewall p2p description 3
+WARNING: translation string unused: outgoing firewall reset
+WARNING: translation string unused: outgoing firewall warning
 WARNING: translation string unused: override mtu
 WARNING: translation string unused: ovpn
 WARNING: translation string unused: ovpn config
@@ -343,6 +376,8 @@ WARNING: translation string unused: passwords must be at least 6 characters in l
 WARNING: translation string unused: phonebook entry
 WARNING: translation string unused: ping disabled
 WARNING: translation string unused: polfile
+WARNING: translation string unused: policy
+WARNING: translation string unused: port forwarding configuration
 WARNING: translation string unused: ports
 WARNING: translation string unused: pots
 WARNING: translation string unused: pppoe
@@ -370,7 +405,9 @@ WARNING: translation string unused: router ip
 WARNING: translation string unused: rules already up to date
 WARNING: translation string unused: safe removal of umounted device
 WARNING: translation string unused: save error
+WARNING: translation string unused: select dest net
 WARNING: translation string unused: select media
+WARNING: translation string unused: select source net
 WARNING: translation string unused: selecttraffic
 WARNING: translation string unused: send email notification
 WARNING: translation string unused: send test mail
@@ -389,15 +426,23 @@ WARNING: translation string unused: shutdown2
 WARNING: translation string unused: shutting down
 WARNING: translation string unused: sitekeyfile
 WARNING: translation string unused: smbreload
+WARNING: translation string unused: source ip in use
+WARNING: translation string unused: source ip or net
+WARNING: translation string unused: source net
+WARNING: translation string unused: source port overlaps
 WARNING: translation string unused: squid extension methods
 WARNING: translation string unused: squid extension methods invalid
 WARNING: translation string unused: squid fix cache
+WARNING: translation string unused: srcprt range overlaps
+WARNING: translation string unused: srcprt within existing
+WARNING: translation string unused: ssdmz pinholes
 WARNING: translation string unused: ssh access tip
 WARNING: translation string unused: ssh1 disabled
 WARNING: translation string unused: ssh1 enabled
 WARNING: translation string unused: ssh1 support
 WARNING: translation string unused: ssnetwork status
 WARNING: translation string unused: sspasswords
+WARNING: translation string unused: ssport forwarding
 WARNING: translation string unused: ssproxy graphs
 WARNING: translation string unused: sssystem status
 WARNING: translation string unused: sstraffic graphs
@@ -489,6 +534,7 @@ WARNING: translation string unused: vpn watch
 WARNING: translation string unused: warn when traffic reaches
 WARNING: translation string unused: web proxy configuration
 WARNING: translation string unused: weekly firewallhits
+WARNING: translation string unused: xtaccess all error
 WARNING: translation string unused: xtaccess bad transfert
 WARNING: translation string unused: yearly firewallhits
 WARNING: untranslated string: Add a route
@@ -551,6 +597,11 @@ WARNING: untranslated string: dnsforward edit an entry
 WARNING: untranslated string: dnsforward entries
 WARNING: untranslated string: dnsforward forward_server
 WARNING: untranslated string: dnsforward zone
+WARNING: untranslated string: drop action
+WARNING: untranslated string: drop action1
+WARNING: untranslated string: drop action2
+WARNING: untranslated string: drop forward
+WARNING: untranslated string: drop outgoing
 WARNING: untranslated string: emerging rules
 WARNING: untranslated string: extrahd because there is already a device mounted
 WARNING: untranslated string: extrahd cant umount
@@ -559,6 +610,145 @@ WARNING: untranslated string: extrahd maybe the device is in use
 WARNING: untranslated string: extrahd to
 WARNING: untranslated string: extrahd to root
 WARNING: untranslated string: extrahd you cant mount
+WARNING: untranslated string: fw default drop
+WARNING: untranslated string: fw settings
+WARNING: untranslated string: fw settings color
+WARNING: untranslated string: fw settings dropdown
+WARNING: untranslated string: fw settings remark
+WARNING: untranslated string: fw settings ruletable
+WARNING: untranslated string: fwdfw ACCEPT
+WARNING: untranslated string: fwdfw DROP
+WARNING: untranslated string: fwdfw REJECT
+WARNING: untranslated string: fwdfw action
+WARNING: untranslated string: fwdfw additional
+WARNING: untranslated string: fwdfw addrule
+WARNING: untranslated string: fwdfw all icmp
+WARNING: untranslated string: fwdfw change
+WARNING: untranslated string: fwdfw copy
+WARNING: untranslated string: fwdfw delete
+WARNING: untranslated string: fwdfw dnat
+WARNING: untranslated string: fwdfw dnat error
+WARNING: untranslated string: fwdfw dnat porterr
+WARNING: untranslated string: fwdfw edit
+WARNING: untranslated string: fwdfw err nosrc
+WARNING: untranslated string: fwdfw err nosrcip
+WARNING: untranslated string: fwdfw err notgt
+WARNING: untranslated string: fwdfw err notgtip
+WARNING: untranslated string: fwdfw err prot_port
+WARNING: untranslated string: fwdfw err prot_port1
+WARNING: untranslated string: fwdfw err remark
+WARNING: untranslated string: fwdfw err ruleexists
+WARNING: untranslated string: fwdfw err same
+WARNING: untranslated string: fwdfw err samesub
+WARNING: untranslated string: fwdfw err src_addr
+WARNING: untranslated string: fwdfw err tgt_addr
+WARNING: untranslated string: fwdfw err tgt_grp
+WARNING: untranslated string: fwdfw err tgt_mac
+WARNING: untranslated string: fwdfw err time
+WARNING: untranslated string: fwdfw final_rule
+WARNING: untranslated string: fwdfw hint ip1
+WARNING: untranslated string: fwdfw hint ip2
+WARNING: untranslated string: fwdfw log rule
+WARNING: untranslated string: fwdfw menu
+WARNING: untranslated string: fwdfw movedown
+WARNING: untranslated string: fwdfw moveup
+WARNING: untranslated string: fwdfw newrule
+WARNING: untranslated string: fwdfw p2p txt
+WARNING: untranslated string: fwdfw pol allow
+WARNING: untranslated string: fwdfw pol block
+WARNING: untranslated string: fwdfw pol text
+WARNING: untranslated string: fwdfw pol text1
+WARNING: untranslated string: fwdfw pol title
+WARNING: untranslated string: fwdfw red
+WARNING: untranslated string: fwdfw reread
+WARNING: untranslated string: fwdfw rule activate
+WARNING: untranslated string: fwdfw rulepos
+WARNING: untranslated string: fwdfw snat
+WARNING: untranslated string: fwdfw source
+WARNING: untranslated string: fwdfw sourceip
+WARNING: untranslated string: fwdfw target
+WARNING: untranslated string: fwdfw targetip
+WARNING: untranslated string: fwdfw timeframe
+WARNING: untranslated string: fwdfw toggle
+WARNING: untranslated string: fwdfw togglelog
+WARNING: untranslated string: fwdfw use nat
+WARNING: untranslated string: fwdfw use srcport
+WARNING: untranslated string: fwdfw use srv
+WARNING: untranslated string: fwdfw useless rule
+WARNING: untranslated string: fwdfw wd_fri
+WARNING: untranslated string: fwdfw wd_mon
+WARNING: untranslated string: fwdfw wd_sat
+WARNING: untranslated string: fwdfw wd_sun
+WARNING: untranslated string: fwdfw wd_thu
+WARNING: untranslated string: fwdfw wd_tue
+WARNING: untranslated string: fwdfw wd_wed
+WARNING: untranslated string: fwdfw xt access
+WARNING: untranslated string: fwhost addgrp
+WARNING: untranslated string: fwhost addgrpname
+WARNING: untranslated string: fwhost addhost
+WARNING: untranslated string: fwhost addnet
+WARNING: untranslated string: fwhost addservice
+WARNING: untranslated string: fwhost addservicegrp
+WARNING: untranslated string: fwhost any
+WARNING: untranslated string: fwhost back
+WARNING: untranslated string: fwhost ccdhost
+WARNING: untranslated string: fwhost ccdnet
+WARNING: untranslated string: fwhost change
+WARNING: untranslated string: fwhost cust addr
+WARNING: untranslated string: fwhost cust grp
+WARNING: untranslated string: fwhost cust net
+WARNING: untranslated string: fwhost cust service
+WARNING: untranslated string: fwhost cust srvgrp
+WARNING: untranslated string: fwhost deleted
+WARNING: untranslated string: fwhost empty
+WARNING: untranslated string: fwhost err addr
+WARNING: untranslated string: fwhost err empty
+WARNING: untranslated string: fwhost err emptytable
+WARNING: untranslated string: fwhost err groupempty
+WARNING: untranslated string: fwhost err grpexist
+WARNING: untranslated string: fwhost err hostexist
+WARNING: untranslated string: fwhost err hostip
+WARNING: untranslated string: fwhost err ip
+WARNING: untranslated string: fwhost err ipcheck
+WARNING: untranslated string: fwhost err ipmac
+WARNING: untranslated string: fwhost err ipwithsub
+WARNING: untranslated string: fwhost err isccdhost
+WARNING: untranslated string: fwhost err isccdiphost
+WARNING: untranslated string: fwhost err isccdipnet
+WARNING: untranslated string: fwhost err isccdnet
+WARNING: untranslated string: fwhost err isingrp
+WARNING: untranslated string: fwhost err name
+WARNING: untranslated string: fwhost err name1
+WARNING: untranslated string: fwhost err net
+WARNING: untranslated string: fwhost err netexist
+WARNING: untranslated string: fwhost err partofnet
+WARNING: untranslated string: fwhost err port
+WARNING: untranslated string: fwhost err remark
+WARNING: untranslated string: fwhost err srv exists
+WARNING: untranslated string: fwhost err srvexist
+WARNING: untranslated string: fwhost err sub32
+WARNING: untranslated string: fwhost hint
+WARNING: untranslated string: fwhost hosts
+WARNING: untranslated string: fwhost icmptype
+WARNING: untranslated string: fwhost ip_mac
+WARNING: untranslated string: fwhost ipsec net
+WARNING: untranslated string: fwhost menu
+WARNING: untranslated string: fwhost netaddress
+WARNING: untranslated string: fwhost newgrp
+WARNING: untranslated string: fwhost newhost
+WARNING: untranslated string: fwhost newnet
+WARNING: untranslated string: fwhost newservice
+WARNING: untranslated string: fwhost newservicegrp
+WARNING: untranslated string: fwhost ovpn_n2n
+WARNING: untranslated string: fwhost port
+WARNING: untranslated string: fwhost prot
+WARNING: untranslated string: fwhost reread
+WARNING: untranslated string: fwhost services
+WARNING: untranslated string: fwhost srv_name
+WARNING: untranslated string: fwhost stdnet
+WARNING: untranslated string: fwhost type
+WARNING: untranslated string: fwhost used
+WARNING: untranslated string: fwhost welcome
 WARNING: untranslated string: incoming traffic in bytes per second
 WARNING: untranslated string: least preferred
 WARNING: untranslated string: minute
@@ -588,6 +778,7 @@ WARNING: untranslated string: proxy reports monthly
 WARNING: untranslated string: proxy reports today
 WARNING: untranslated string: proxy reports weekly
 WARNING: untranslated string: qos enter bandwidths
+WARNING: untranslated string: red1
 WARNING: untranslated string: route config changed
 WARNING: untranslated string: routing config added
 WARNING: untranslated string: routing config changed
index d58bcc300cdc2f816ea383453fbd379bc8e8657d..5ebf41a5cd006c93b435f2b0377d76f5cdfcb33b 100644 (file)
@@ -11,10 +11,12 @@ WARNING: translation string unused: Remote VPN IP
 WARNING: translation string unused: Resolv
 WARNING: translation string unused: TOS Bits
 WARNING: translation string unused: Verbose
+WARNING: translation string unused: access allowed
 WARNING: translation string unused: access refused with this oinkcode
 WARNING: translation string unused: add network
 WARNING: translation string unused: add new ovpn
 WARNING: translation string unused: add service
+WARNING: translation string unused: add xtaccess
 WARNING: translation string unused: add-route
 WARNING: translation string unused: admin user password has been changed
 WARNING: translation string unused: administrator user password
@@ -46,6 +48,7 @@ WARNING: translation string unused: all updates installed
 WARNING: translation string unused: allmsg
 WARNING: translation string unused: alt information
 WARNING: translation string unused: alt ovpn
+WARNING: translation string unused: alt vpn
 WARNING: translation string unused: and
 WARNING: translation string unused: ansi t1.483
 WARNING: translation string unused: apply
@@ -87,6 +90,7 @@ WARNING: translation string unused: cache management
 WARNING: translation string unused: cache size
 WARNING: translation string unused: calamaris report interval (in minutes)
 WARNING: translation string unused: calc traffic all x minutes
+WARNING: translation string unused: cant enable xtaccess
 WARNING: translation string unused: capsinactive
 WARNING: translation string unused: ccd err iroute
 WARNING: translation string unused: ccd err netadr
@@ -129,6 +133,11 @@ WARNING: translation string unused: debugme
 WARNING: translation string unused: deep scan directories
 WARNING: translation string unused: default networks
 WARNING: translation string unused: default services
+WARNING: translation string unused: description
+WARNING: translation string unused: destination ip bad
+WARNING: translation string unused: destination ip or net
+WARNING: translation string unused: destination net
+WARNING: translation string unused: destination port overlaps
 WARNING: translation string unused: dhcp base ip fixed lease
 WARNING: translation string unused: dhcp create fixed leases
 WARNING: translation string unused: dhcp fixed lease err1
@@ -141,11 +150,18 @@ WARNING: translation string unused: dial user password has been changed
 WARNING: translation string unused: dialup settings
 WARNING: translation string unused: disconnect
 WARNING: translation string unused: display traffic at home
+WARNING: translation string unused: dmz pinhole configuration
+WARNING: translation string unused: dmz pinhole rule added
+WARNING: translation string unused: dmz pinhole rule removed
+WARNING: translation string unused: dmzpinholes for same net not necessary
 WARNING: translation string unused: dns server
 WARNING: translation string unused: do not log this port list
 WARNING: translation string unused: donation-link
 WARNING: translation string unused: done
 WARNING: translation string unused: driver
+WARNING: translation string unused: drop output
+WARNING: translation string unused: dstprt range overlaps
+WARNING: translation string unused: dstprt within existing
 WARNING: translation string unused: dynamic dns client
 WARNING: translation string unused: eciadsl help
 WARNING: translation string unused: eciadsl upload
@@ -172,6 +188,7 @@ WARNING: translation string unused: error external access
 WARNING: translation string unused: expected
 WARNING: translation string unused: expertoptions
 WARNING: translation string unused: exportkey
+WARNING: translation string unused: external access
 WARNING: translation string unused: external access rule changed
 WARNING: translation string unused: extrahd unable to read
 WARNING: translation string unused: extrahd unable to write
@@ -181,6 +198,9 @@ WARNING: translation string unused: firewall log viewer
 WARNING: translation string unused: firmware
 WARNING: translation string unused: firmware upload
 WARNING: translation string unused: force update
+WARNING: translation string unused: forwarding rule added
+WARNING: translation string unused: forwarding rule removed
+WARNING: translation string unused: forwarding rule updated
 WARNING: translation string unused: frequency
 WARNING: translation string unused: fritzdsl help
 WARNING: translation string unused: fritzdsl upload
@@ -246,6 +266,7 @@ WARNING: translation string unused: local hard disk
 WARNING: translation string unused: localkeyfile
 WARNING: translation string unused: log enabled
 WARNING: translation string unused: log viewer
+WARNING: translation string unused: logging
 WARNING: translation string unused: loosedirectorychecking
 WARNING: translation string unused: ls_dhcpd
 WARNING: translation string unused: ls_disk space
@@ -271,6 +292,7 @@ WARNING: translation string unused: mbmon value
 WARNING: translation string unused: min size
 WARNING: translation string unused: missing dat
 WARNING: translation string unused: missing gz
+WARNING: translation string unused: mode
 WARNING: translation string unused: modem on com1
 WARNING: translation string unused: modem on com2
 WARNING: translation string unused: modem on com3
@@ -287,6 +309,7 @@ WARNING: translation string unused: monthly volume start day short
 WARNING: translation string unused: mount
 WARNING: translation string unused: mtu QoS
 WARNING: translation string unused: nat-traversal
+WARNING: translation string unused: net
 WARNING: translation string unused: net address
 WARNING: translation string unused: net config type
 WARNING: translation string unused: net config type help
@@ -313,6 +336,7 @@ WARNING: translation string unused: o-no
 WARNING: translation string unused: o-yes
 WARNING: translation string unused: online help en
 WARNING: translation string unused: only red
+WARNING: translation string unused: open to all
 WARNING: translation string unused: openvpn disabled
 WARNING: translation string unused: openvpn enabled
 WARNING: translation string unused: optional data
@@ -323,7 +347,16 @@ WARNING: translation string unused: original
 WARNING: translation string unused: other countries
 WARNING: translation string unused: our donors
 WARNING: translation string unused: out
+WARNING: translation string unused: outgoing firewall
+WARNING: translation string unused: outgoing firewall mode0
+WARNING: translation string unused: outgoing firewall mode1
+WARNING: translation string unused: outgoing firewall mode2
 WARNING: translation string unused: outgoing firewall outgoing firewall reserved groupname
+WARNING: translation string unused: outgoing firewall p2p description 1
+WARNING: translation string unused: outgoing firewall p2p description 2
+WARNING: translation string unused: outgoing firewall p2p description 3
+WARNING: translation string unused: outgoing firewall reset
+WARNING: translation string unused: outgoing firewall warning
 WARNING: translation string unused: override mtu
 WARNING: translation string unused: ovpn
 WARNING: translation string unused: ovpn config
@@ -354,6 +387,8 @@ WARNING: translation string unused: passwords must be at least 6 characters in l
 WARNING: translation string unused: phonebook entry
 WARNING: translation string unused: ping disabled
 WARNING: translation string unused: polfile
+WARNING: translation string unused: policy
+WARNING: translation string unused: port forwarding configuration
 WARNING: translation string unused: ports
 WARNING: translation string unused: pots
 WARNING: translation string unused: pppoe
@@ -381,7 +416,9 @@ WARNING: translation string unused: router ip
 WARNING: translation string unused: rules already up to date
 WARNING: translation string unused: safe removal of umounted device
 WARNING: translation string unused: save error
+WARNING: translation string unused: select dest net
 WARNING: translation string unused: select media
+WARNING: translation string unused: select source net
 WARNING: translation string unused: selecttraffic
 WARNING: translation string unused: send email notification
 WARNING: translation string unused: send test mail
@@ -400,15 +437,23 @@ WARNING: translation string unused: shutdown2
 WARNING: translation string unused: shutting down
 WARNING: translation string unused: sitekeyfile
 WARNING: translation string unused: smbreload
+WARNING: translation string unused: source ip in use
+WARNING: translation string unused: source ip or net
+WARNING: translation string unused: source net
+WARNING: translation string unused: source port overlaps
 WARNING: translation string unused: squid extension methods
 WARNING: translation string unused: squid extension methods invalid
 WARNING: translation string unused: squid fix cache
+WARNING: translation string unused: srcprt range overlaps
+WARNING: translation string unused: srcprt within existing
+WARNING: translation string unused: ssdmz pinholes
 WARNING: translation string unused: ssh access tip
 WARNING: translation string unused: ssh1 disabled
 WARNING: translation string unused: ssh1 enabled
 WARNING: translation string unused: ssh1 support
 WARNING: translation string unused: ssnetwork status
 WARNING: translation string unused: sspasswords
+WARNING: translation string unused: ssport forwarding
 WARNING: translation string unused: ssproxy graphs
 WARNING: translation string unused: sssystem status
 WARNING: translation string unused: sstraffic graphs
@@ -505,6 +550,7 @@ WARNING: translation string unused: warn when traffic reaches
 WARNING: translation string unused: web proxy configuration
 WARNING: translation string unused: week-graph
 WARNING: translation string unused: weekly firewallhits
+WARNING: translation string unused: xtaccess all error
 WARNING: translation string unused: xtaccess bad transfert
 WARNING: translation string unused: year-graph
 WARNING: translation string unused: yearly firewallhits
@@ -519,10 +565,155 @@ WARNING: untranslated string: dnsforward edit an entry
 WARNING: untranslated string: dnsforward entries
 WARNING: untranslated string: dnsforward forward_server
 WARNING: untranslated string: dnsforward zone
+WARNING: untranslated string: drop action
+WARNING: untranslated string: drop action1
+WARNING: untranslated string: drop action2
+WARNING: untranslated string: drop forward
+WARNING: untranslated string: drop outgoing
+WARNING: untranslated string: fw default drop
+WARNING: untranslated string: fw settings
+WARNING: untranslated string: fw settings color
+WARNING: untranslated string: fw settings dropdown
+WARNING: untranslated string: fw settings remark
+WARNING: untranslated string: fw settings ruletable
+WARNING: untranslated string: fwdfw ACCEPT
+WARNING: untranslated string: fwdfw DROP
+WARNING: untranslated string: fwdfw REJECT
+WARNING: untranslated string: fwdfw action
+WARNING: untranslated string: fwdfw additional
+WARNING: untranslated string: fwdfw addrule
+WARNING: untranslated string: fwdfw all icmp
+WARNING: untranslated string: fwdfw change
+WARNING: untranslated string: fwdfw copy
+WARNING: untranslated string: fwdfw delete
+WARNING: untranslated string: fwdfw dnat
+WARNING: untranslated string: fwdfw dnat error
+WARNING: untranslated string: fwdfw dnat porterr
+WARNING: untranslated string: fwdfw edit
+WARNING: untranslated string: fwdfw err nosrc
+WARNING: untranslated string: fwdfw err nosrcip
+WARNING: untranslated string: fwdfw err notgt
+WARNING: untranslated string: fwdfw err notgtip
+WARNING: untranslated string: fwdfw err prot_port
+WARNING: untranslated string: fwdfw err prot_port1
+WARNING: untranslated string: fwdfw err remark
+WARNING: untranslated string: fwdfw err ruleexists
+WARNING: untranslated string: fwdfw err same
+WARNING: untranslated string: fwdfw err samesub
+WARNING: untranslated string: fwdfw err src_addr
+WARNING: untranslated string: fwdfw err tgt_addr
+WARNING: untranslated string: fwdfw err tgt_grp
+WARNING: untranslated string: fwdfw err tgt_mac
+WARNING: untranslated string: fwdfw err time
+WARNING: untranslated string: fwdfw final_rule
+WARNING: untranslated string: fwdfw hint ip1
+WARNING: untranslated string: fwdfw hint ip2
+WARNING: untranslated string: fwdfw log rule
+WARNING: untranslated string: fwdfw menu
+WARNING: untranslated string: fwdfw movedown
+WARNING: untranslated string: fwdfw moveup
+WARNING: untranslated string: fwdfw newrule
+WARNING: untranslated string: fwdfw p2p txt
+WARNING: untranslated string: fwdfw pol allow
+WARNING: untranslated string: fwdfw pol block
+WARNING: untranslated string: fwdfw pol text
+WARNING: untranslated string: fwdfw pol text1
+WARNING: untranslated string: fwdfw pol title
+WARNING: untranslated string: fwdfw red
+WARNING: untranslated string: fwdfw reread
+WARNING: untranslated string: fwdfw rule activate
+WARNING: untranslated string: fwdfw rulepos
+WARNING: untranslated string: fwdfw snat
+WARNING: untranslated string: fwdfw source
+WARNING: untranslated string: fwdfw sourceip
+WARNING: untranslated string: fwdfw target
+WARNING: untranslated string: fwdfw targetip
+WARNING: untranslated string: fwdfw timeframe
+WARNING: untranslated string: fwdfw toggle
+WARNING: untranslated string: fwdfw togglelog
+WARNING: untranslated string: fwdfw use nat
+WARNING: untranslated string: fwdfw use srcport
+WARNING: untranslated string: fwdfw use srv
+WARNING: untranslated string: fwdfw useless rule
+WARNING: untranslated string: fwdfw wd_fri
+WARNING: untranslated string: fwdfw wd_mon
+WARNING: untranslated string: fwdfw wd_sat
+WARNING: untranslated string: fwdfw wd_sun
+WARNING: untranslated string: fwdfw wd_thu
+WARNING: untranslated string: fwdfw wd_tue
+WARNING: untranslated string: fwdfw wd_wed
+WARNING: untranslated string: fwdfw xt access
+WARNING: untranslated string: fwhost addgrp
+WARNING: untranslated string: fwhost addgrpname
+WARNING: untranslated string: fwhost addhost
+WARNING: untranslated string: fwhost addnet
+WARNING: untranslated string: fwhost addservice
+WARNING: untranslated string: fwhost addservicegrp
+WARNING: untranslated string: fwhost any
+WARNING: untranslated string: fwhost back
+WARNING: untranslated string: fwhost ccdhost
+WARNING: untranslated string: fwhost ccdnet
+WARNING: untranslated string: fwhost change
+WARNING: untranslated string: fwhost cust addr
+WARNING: untranslated string: fwhost cust grp
+WARNING: untranslated string: fwhost cust net
+WARNING: untranslated string: fwhost cust service
+WARNING: untranslated string: fwhost cust srvgrp
+WARNING: untranslated string: fwhost deleted
+WARNING: untranslated string: fwhost empty
+WARNING: untranslated string: fwhost err addr
+WARNING: untranslated string: fwhost err empty
+WARNING: untranslated string: fwhost err emptytable
+WARNING: untranslated string: fwhost err groupempty
+WARNING: untranslated string: fwhost err grpexist
+WARNING: untranslated string: fwhost err hostexist
+WARNING: untranslated string: fwhost err hostip
+WARNING: untranslated string: fwhost err ip
+WARNING: untranslated string: fwhost err ipcheck
+WARNING: untranslated string: fwhost err ipmac
+WARNING: untranslated string: fwhost err ipwithsub
+WARNING: untranslated string: fwhost err isccdhost
+WARNING: untranslated string: fwhost err isccdiphost
+WARNING: untranslated string: fwhost err isccdipnet
+WARNING: untranslated string: fwhost err isccdnet
+WARNING: untranslated string: fwhost err isingrp
+WARNING: untranslated string: fwhost err name
+WARNING: untranslated string: fwhost err name1
+WARNING: untranslated string: fwhost err net
+WARNING: untranslated string: fwhost err netexist
+WARNING: untranslated string: fwhost err partofnet
+WARNING: untranslated string: fwhost err port
+WARNING: untranslated string: fwhost err remark
+WARNING: untranslated string: fwhost err srv exists
+WARNING: untranslated string: fwhost err srvexist
+WARNING: untranslated string: fwhost err sub32
+WARNING: untranslated string: fwhost hint
+WARNING: untranslated string: fwhost hosts
+WARNING: untranslated string: fwhost icmptype
+WARNING: untranslated string: fwhost ip_mac
+WARNING: untranslated string: fwhost ipsec net
+WARNING: untranslated string: fwhost menu
+WARNING: untranslated string: fwhost netaddress
+WARNING: untranslated string: fwhost newgrp
+WARNING: untranslated string: fwhost newhost
+WARNING: untranslated string: fwhost newnet
+WARNING: untranslated string: fwhost newservice
+WARNING: untranslated string: fwhost newservicegrp
+WARNING: untranslated string: fwhost ovpn_n2n
+WARNING: untranslated string: fwhost port
+WARNING: untranslated string: fwhost prot
+WARNING: untranslated string: fwhost reread
+WARNING: untranslated string: fwhost services
+WARNING: untranslated string: fwhost srv_name
+WARNING: untranslated string: fwhost stdnet
+WARNING: untranslated string: fwhost type
+WARNING: untranslated string: fwhost used
+WARNING: untranslated string: fwhost welcome
 WARNING: untranslated string: least preferred
 WARNING: untranslated string: most preferred
 WARNING: untranslated string: new
 WARNING: untranslated string: outgoing firewall reserved groupname
+WARNING: untranslated string: red1
 WARNING: untranslated string: route config changed
 WARNING: untranslated string: routing config added
 WARNING: untranslated string: routing config changed
index 7c7b082675499ce3a2af8d33c87be3d81799fd15..c5f8ac079dd07e4e3c08a6fb4e05addad98d6a81 100644 (file)
@@ -11,7 +11,6 @@
 ############################################################################
 # Checking cgi-bin translations for language: fr                           #
 ############################################################################
-< advproxy cache-digest
 < advproxy errmsg cache
 < advproxy errmsg invalid upstream proxy
 < advproxy errmsg proxy ports equal
 < dnsforward entries
 < dnsforward forward_server
 < dnsforward zone
+< drop action
+< drop action1
+< drop action2
+< drop forward
+< drop outgoing
 < fireinfo ipfire version
 < fireinfo is disabled
 < fireinfo is enabled
 < fireinfo why enable
 < fireinfo why read more
 < fireinfo your profile id
+< forward firewall
+< fw default drop
+< fwdfw ACCEPT
+< fwdfw action
+< fwdfw additional
+< fwdfw addrule
+< fwdfw all icmp
+< fwdfw change
+< fwdfw copy
+< fwdfw delete
+< fwdfw dnat
+< fwdfw dnat error
+< fwdfw dnat porterr
+< fwdfw DROP
+< fwdfw edit
+< fwdfw err nosrc
+< fwdfw err nosrcip
+< fwdfw err notgt
+< fwdfw err notgtip
+< fwdfw err prot_port
+< fwdfw err prot_port1
+< fwdfw err remark
+< fwdfw err ruleexists
+< fwdfw err same
+< fwdfw err samesub
+< fwdfw err src_addr
+< fwdfw err tgt_addr
+< fwdfw err tgt_grp
+< fwdfw err tgt_mac
+< fwdfw err tgt_port
+< fwdfw err time
+< fwdfw external port nat
+< fwdfw final_rule
+< fwdfw from
+< fwdfw hint ip1
+< fwdfw hint ip2
+< fwdfw ipsec network
+< fwdfw log rule
+< fwdfw man port
+< fwdfw menu
+< fwdfw MODE1
+< fwdfw MODE2
+< fwdfw movedown
+< fwdfw moveup
+< fwdfw natport used
+< fwdfw newrule
+< fwdfw p2p txt
+< fwdfw pol allow
+< fwdfw pol block
+< fwdfw pol text
+< fwdfw pol text1
+< fwdfw pol title
+< fwdfw red
+< fwdfw REJECT
+< fwdfw reread
+< fwdfw rule action
+< fwdfw rule activate
+< fwdfw rulepos
+< fwdfw rules
+< fwdfw snat
+< fwdfw source
+< fwdfw sourceip
+< fwdfw std network
+< fwdfw target
+< fwdfw targetip
+< fwdfw till
+< fwdfw time
+< fwdfw timeframe
+< fwdfw toggle
+< fwdfw togglelog
+< fwdfw useless rule
+< fwdfw use nat
+< fwdfw use srcport
+< fwdfw use srv
+< fwdfw wd_fri
+< fwdfw wd_mon
+< fwdfw wd_sat
+< fwdfw wd_sun
+< fwdfw wd_thu
+< fwdfw wd_tue
+< fwdfw wd_wed
+< fwdfw xt access
+< fwhost addgrp
+< fwhost addgrpname
+< fwhost addhost
+< fwhost addnet
+< fwhost addrule
+< fwhost addservice
+< fwhost addservicegrp
+< fwhost any
+< fwhost attention
+< fwhost back
+< fwhost blue
+< fwhost ccdhost
+< fwhost ccdnet
+< fwhost change
+< fwhost changeremark
+< fwhost cust addr
+< fwhost cust grp
+< fwhost cust net
+< fwhost cust service
+< fwhost cust srvgrp
+< fwhost deleted
+< fwhost empty
+< fwhost err addr
+< fwhost err addrgrp
+< fwhost err empty
+< fwhost err emptytable
+< fwhost err groupempty
+< fwhost err grpexist
+< fwhost err hostexist
+< fwhost err hostorip
+< fwhost err ip
+< fwhost err ipcheck
+< fwhost err ipmac
+< fwhost err ipwithsub
+< fwhost err isccdhost
+< fwhost err isccdiphost
+< fwhost err isccdipnet
+< fwhost err isccdnet
+< fwhost err isingrp
+< fwhost err mac
+< fwhost err name
+< fwhost err name1
+< fwhost err net
+< fwhost err netexist
+< fwhost err partofnet
+< fwhost err port
+< fwhost err remark
+< fwhost err srvexist
+< fwhost err srv exists
+< fwhost err sub32
+< fwhost green
+< fwhost hint
+< fwhost hosts
+< fwhost icmptype
+< fwhost ipadr
+< fwhost ip_mac
+< fwhost ipsec host
+< fwhost ipsec net
+< fwhost menu
+< fwhost netaddress
+< fwhost newgrp
+< fwhost newhost
+< fwhost newnet
+< fwhost newservice
+< fwhost newservicegrp
+< fwhost orange
+< fwhost ovpn_n2n
+< fwhost port
+< fwhost prot
+< fwhost reread
+< fwhost reset
+< fwhost services
+< fwhost srv_name
+< fwhost stdnet
+< fwhost type
+< fwhost used
+< fwhost welcome
+< fwhost wo subnet
+< fw settings
+< fw settings color
+< fw settings dropdown
+< fw settings remark
+< fw settings ruletable
 < least preferred
 < minute
 < most preferred
 < proxy reports today
 < proxy reports weekly
 < qos enter bandwidths
+< red1
 < server restart
 < snort working
 < static routes
 ############################################################################
 # Checking cgi-bin translations for language: es                           #
 ############################################################################
-< advproxy cache-digest
 < advproxy errmsg cache
 < advproxy errmsg invalid upstream proxy
 < advproxy errmsg proxy ports equal
 < dnsforward entries
 < dnsforward forward_server
 < dnsforward zone
+< drop action
+< drop action1
+< drop action2
+< drop forward
+< drop outgoing
 < fireinfo ipfire version
 < fireinfo is disabled
 < fireinfo is enabled
 < fireinfo why enable
 < fireinfo why read more
 < fireinfo your profile id
+< forward firewall
+< fw default drop
+< fwdfw ACCEPT
+< fwdfw action
+< fwdfw additional
+< fwdfw addrule
+< fwdfw all icmp
+< fwdfw change
+< fwdfw copy
+< fwdfw delete
+< fwdfw dnat
+< fwdfw dnat error
+< fwdfw dnat porterr
+< fwdfw DROP
+< fwdfw edit
+< fwdfw err nosrc
+< fwdfw err nosrcip
+< fwdfw err notgt
+< fwdfw err notgtip
+< fwdfw err prot_port
+< fwdfw err prot_port1
+< fwdfw err remark
+< fwdfw err ruleexists
+< fwdfw err same
+< fwdfw err samesub
+< fwdfw err src_addr
+< fwdfw err tgt_addr
+< fwdfw err tgt_grp
+< fwdfw err tgt_mac
+< fwdfw err tgt_port
+< fwdfw err time
+< fwdfw external port nat
+< fwdfw final_rule
+< fwdfw from
+< fwdfw hint ip1
+< fwdfw hint ip2
+< fwdfw ipsec network
+< fwdfw log rule
+< fwdfw man port
+< fwdfw menu
+< fwdfw MODE1
+< fwdfw MODE2
+< fwdfw movedown
+< fwdfw moveup
+< fwdfw natport used
+< fwdfw newrule
+< fwdfw p2p txt
+< fwdfw pol allow
+< fwdfw pol block
+< fwdfw pol text
+< fwdfw pol text1
+< fwdfw pol title
+< fwdfw red
+< fwdfw REJECT
+< fwdfw reread
+< fwdfw rule action
+< fwdfw rule activate
+< fwdfw rulepos
+< fwdfw rules
+< fwdfw snat
+< fwdfw source
+< fwdfw sourceip
+< fwdfw std network
+< fwdfw target
+< fwdfw targetip
+< fwdfw till
+< fwdfw time
+< fwdfw timeframe
+< fwdfw toggle
+< fwdfw togglelog
+< fwdfw useless rule
+< fwdfw use nat
+< fwdfw use srcport
+< fwdfw use srv
+< fwdfw wd_fri
+< fwdfw wd_mon
+< fwdfw wd_sat
+< fwdfw wd_sun
+< fwdfw wd_thu
+< fwdfw wd_tue
+< fwdfw wd_wed
+< fwdfw xt access
+< fwhost addgrp
+< fwhost addgrpname
+< fwhost addhost
+< fwhost addnet
+< fwhost addrule
+< fwhost addservice
+< fwhost addservicegrp
+< fwhost any
+< fwhost attention
+< fwhost back
+< fwhost blue
+< fwhost ccdhost
+< fwhost ccdnet
+< fwhost change
+< fwhost changeremark
+< fwhost cust addr
+< fwhost cust grp
+< fwhost cust net
+< fwhost cust service
+< fwhost cust srvgrp
+< fwhost deleted
+< fwhost empty
+< fwhost err addr
+< fwhost err addrgrp
+< fwhost err empty
+< fwhost err emptytable
+< fwhost err groupempty
+< fwhost err grpexist
+< fwhost err hostexist
+< fwhost err hostorip
+< fwhost err ip
+< fwhost err ipcheck
+< fwhost err ipmac
+< fwhost err ipwithsub
+< fwhost err isccdhost
+< fwhost err isccdiphost
+< fwhost err isccdipnet
+< fwhost err isccdnet
+< fwhost err isingrp
+< fwhost err mac
+< fwhost err name
+< fwhost err name1
+< fwhost err net
+< fwhost err netexist
+< fwhost err partofnet
+< fwhost err port
+< fwhost err remark
+< fwhost err srvexist
+< fwhost err srv exists
+< fwhost err sub32
+< fwhost green
+< fwhost hint
+< fwhost hosts
+< fwhost icmptype
+< fwhost ipadr
+< fwhost ip_mac
+< fwhost ipsec host
+< fwhost ipsec net
+< fwhost menu
+< fwhost netaddress
+< fwhost newgrp
+< fwhost newhost
+< fwhost newnet
+< fwhost newservice
+< fwhost newservicegrp
+< fwhost orange
+< fwhost ovpn_n2n
+< fwhost port
+< fwhost prot
+< fwhost reread
+< fwhost reset
+< fwhost services
+< fwhost srv_name
+< fwhost stdnet
+< fwhost type
+< fwhost used
+< fwhost welcome
+< fwhost wo subnet
+< fw settings
+< fw settings color
+< fw settings dropdown
+< fw settings remark
+< fw settings ruletable
 < least preferred
 < minute
 < most preferred
 < proxy reports today
 < proxy reports weekly
 < qos enter bandwidths
+< red1
 < server restart
 < Set time on boot
 < static routes
 ############################################################################
 # Checking cgi-bin translations for language: pl                           #
 ############################################################################
-< advproxy cache-digest
 < advproxy errmsg cache
 < advproxy errmsg invalid upstream proxy
 < advproxy errmsg proxy ports equal
 < dnsforward entries
 < dnsforward forward_server
 < dnsforward zone
+< drop action
+< drop action1
+< drop action2
+< drop forward
+< drop outgoing
 < extrahd because there is already a device mounted
 < extrahd cant umount
 < extrahd install or load driver
 < extrahd unable to read
 < extrahd unable to write
 < extrahd you cant mount
+< forward firewall
+< fw default drop
+< fwdfw ACCEPT
+< fwdfw action
+< fwdfw additional
+< fwdfw addrule
+< fwdfw all icmp
+< fwdfw change
+< fwdfw copy
+< fwdfw delete
+< fwdfw dnat
+< fwdfw dnat error
+< fwdfw dnat porterr
+< fwdfw DROP
+< fwdfw edit
+< fwdfw err nosrc
+< fwdfw err nosrcip
+< fwdfw err notgt
+< fwdfw err notgtip
+< fwdfw err prot_port
+< fwdfw err prot_port1
+< fwdfw err remark
+< fwdfw err ruleexists
+< fwdfw err same
+< fwdfw err samesub
+< fwdfw err src_addr
+< fwdfw err tgt_addr
+< fwdfw err tgt_grp
+< fwdfw err tgt_mac
+< fwdfw err tgt_port
+< fwdfw err time
+< fwdfw external port nat
+< fwdfw final_rule
+< fwdfw from
+< fwdfw hint ip1
+< fwdfw hint ip2
+< fwdfw ipsec network
+< fwdfw log rule
+< fwdfw man port
+< fwdfw menu
+< fwdfw MODE1
+< fwdfw MODE2
+< fwdfw movedown
+< fwdfw moveup
+< fwdfw natport used
+< fwdfw newrule
+< fwdfw p2p txt
+< fwdfw pol allow
+< fwdfw pol block
+< fwdfw pol text
+< fwdfw pol text1
+< fwdfw pol title
+< fwdfw red
+< fwdfw REJECT
+< fwdfw reread
+< fwdfw rule action
+< fwdfw rule activate
+< fwdfw rulepos
+< fwdfw rules
+< fwdfw snat
+< fwdfw source
+< fwdfw sourceip
+< fwdfw std network
+< fwdfw target
+< fwdfw targetip
+< fwdfw till
+< fwdfw time
+< fwdfw timeframe
+< fwdfw toggle
+< fwdfw togglelog
+< fwdfw useless rule
+< fwdfw use nat
+< fwdfw use srcport
+< fwdfw use srv
+< fwdfw wd_fri
+< fwdfw wd_mon
+< fwdfw wd_sat
+< fwdfw wd_sun
+< fwdfw wd_thu
+< fwdfw wd_tue
+< fwdfw wd_wed
+< fwdfw xt access
+< fwhost addgrp
+< fwhost addgrpname
+< fwhost addhost
+< fwhost addnet
+< fwhost addrule
+< fwhost addservice
+< fwhost addservicegrp
+< fwhost any
+< fwhost attention
+< fwhost back
+< fwhost blue
+< fwhost ccdhost
+< fwhost ccdnet
+< fwhost change
+< fwhost changeremark
+< fwhost cust addr
+< fwhost cust grp
+< fwhost cust net
+< fwhost cust service
+< fwhost cust srvgrp
+< fwhost deleted
+< fwhost empty
+< fwhost err addr
+< fwhost err addrgrp
+< fwhost err empty
+< fwhost err emptytable
+< fwhost err groupempty
+< fwhost err grpexist
+< fwhost err hostexist
+< fwhost err hostorip
+< fwhost err ip
+< fwhost err ipcheck
+< fwhost err ipmac
+< fwhost err ipwithsub
+< fwhost err isccdhost
+< fwhost err isccdiphost
+< fwhost err isccdipnet
+< fwhost err isccdnet
+< fwhost err isingrp
+< fwhost err mac
+< fwhost err name
+< fwhost err name1
+< fwhost err net
+< fwhost err netexist
+< fwhost err partofnet
+< fwhost err port
+< fwhost err remark
+< fwhost err srvexist
+< fwhost err srv exists
+< fwhost err sub32
+< fwhost green
+< fwhost hint
+< fwhost hosts
+< fwhost icmptype
+< fwhost ipadr
+< fwhost ip_mac
+< fwhost ipsec host
+< fwhost ipsec net
+< fwhost menu
+< fwhost netaddress
+< fwhost newgrp
+< fwhost newhost
+< fwhost newnet
+< fwhost newservice
+< fwhost newservicegrp
+< fwhost orange
+< fwhost ovpn_n2n
+< fwhost port
+< fwhost prot
+< fwhost reread
+< fwhost reset
+< fwhost services
+< fwhost srv_name
+< fwhost stdnet
+< fwhost type
+< fwhost used
+< fwhost welcome
+< fwhost wo subnet
+< fw settings
+< fw settings color
+< fw settings dropdown
+< fw settings remark
+< fw settings ruletable
 < least preferred
 < minute
 < most preferred
 < proxy reports today
 < proxy reports weekly
 < qos enter bandwidths
+< red1
 < server restart
 < static routes
 < tor
 # Checking cgi-bin translations for language: ru                           #
 ############################################################################
 < Add a route
-< advproxy cache-digest
 < advproxy errmsg cache
 < advproxy errmsg invalid upstream proxy
 < advproxy errmsg proxy ports equal
 < dnsforward entries
 < dnsforward forward_server
 < dnsforward zone
+< drop action
+< drop action1
+< drop action2
+< drop forward
+< drop outgoing
 < Edit an existing route
 < extrahd because there is already a device mounted
 < extrahd cant umount
 < extrahd unable to read
 < extrahd unable to write
 < extrahd you cant mount
+< forward firewall
 < frequency
+< fw default drop
+< fwdfw ACCEPT
+< fwdfw action
+< fwdfw additional
+< fwdfw addrule
+< fwdfw all icmp
+< fwdfw change
+< fwdfw copy
+< fwdfw delete
+< fwdfw dnat
+< fwdfw dnat error
+< fwdfw dnat porterr
+< fwdfw DROP
+< fwdfw edit
+< fwdfw err nosrc
+< fwdfw err nosrcip
+< fwdfw err notgt
+< fwdfw err notgtip
+< fwdfw err prot_port
+< fwdfw err prot_port1
+< fwdfw err remark
+< fwdfw err ruleexists
+< fwdfw err same
+< fwdfw err samesub
+< fwdfw err src_addr
+< fwdfw err tgt_addr
+< fwdfw err tgt_grp
+< fwdfw err tgt_mac
+< fwdfw err tgt_port
+< fwdfw err time
+< fwdfw external port nat
+< fwdfw final_rule
+< fwdfw from
+< fwdfw hint ip1
+< fwdfw hint ip2
+< fwdfw ipsec network
+< fwdfw log rule
+< fwdfw man port
+< fwdfw menu
+< fwdfw MODE1
+< fwdfw MODE2
+< fwdfw movedown
+< fwdfw moveup
+< fwdfw natport used
+< fwdfw newrule
+< fwdfw p2p txt
+< fwdfw pol allow
+< fwdfw pol block
+< fwdfw pol text
+< fwdfw pol text1
+< fwdfw pol title
+< fwdfw red
+< fwdfw REJECT
+< fwdfw reread
+< fwdfw rule action
+< fwdfw rule activate
+< fwdfw rulepos
+< fwdfw rules
+< fwdfw snat
+< fwdfw source
+< fwdfw sourceip
+< fwdfw std network
+< fwdfw target
+< fwdfw targetip
+< fwdfw till
+< fwdfw time
+< fwdfw timeframe
+< fwdfw toggle
+< fwdfw togglelog
+< fwdfw useless rule
+< fwdfw use nat
+< fwdfw use srcport
+< fwdfw use srv
+< fwdfw wd_fri
+< fwdfw wd_mon
+< fwdfw wd_sat
+< fwdfw wd_sun
+< fwdfw wd_thu
+< fwdfw wd_tue
+< fwdfw wd_wed
+< fwdfw xt access
+< fwhost addgrp
+< fwhost addgrpname
+< fwhost addhost
+< fwhost addnet
+< fwhost addrule
+< fwhost addservice
+< fwhost addservicegrp
+< fwhost any
+< fwhost attention
+< fwhost back
+< fwhost blue
+< fwhost ccdhost
+< fwhost ccdnet
+< fwhost change
+< fwhost changeremark
+< fwhost cust addr
+< fwhost cust grp
+< fwhost cust net
+< fwhost cust service
+< fwhost cust srvgrp
+< fwhost deleted
+< fwhost empty
+< fwhost err addr
+< fwhost err addrgrp
+< fwhost err empty
+< fwhost err emptytable
+< fwhost err groupempty
+< fwhost err grpexist
+< fwhost err hostexist
+< fwhost err hostorip
+< fwhost err ip
+< fwhost err ipcheck
+< fwhost err ipmac
+< fwhost err ipwithsub
+< fwhost err isccdhost
+< fwhost err isccdiphost
+< fwhost err isccdipnet
+< fwhost err isccdnet
+< fwhost err isingrp
+< fwhost err mac
+< fwhost err name
+< fwhost err name1
+< fwhost err net
+< fwhost err netexist
+< fwhost err partofnet
+< fwhost err port
+< fwhost err remark
+< fwhost err srvexist
+< fwhost err srv exists
+< fwhost err sub32
+< fwhost green
+< fwhost hint
+< fwhost hosts
+< fwhost icmptype
+< fwhost ipadr
+< fwhost ip_mac
+< fwhost ipsec host
+< fwhost ipsec net
+< fwhost menu
+< fwhost netaddress
+< fwhost newgrp
+< fwhost newhost
+< fwhost newnet
+< fwhost newservice
+< fwhost newservicegrp
+< fwhost orange
+< fwhost ovpn_n2n
+< fwhost port
+< fwhost prot
+< fwhost reread
+< fwhost reset
+< fwhost services
+< fwhost srv_name
+< fwhost stdnet
+< fwhost type
+< fwhost used
+< fwhost welcome
+< fwhost wo subnet
+< fw settings
+< fw settings color
+< fw settings dropdown
+< fw settings remark
+< fw settings ruletable
 < hour-graph
 < incoming traffic in bytes per second
 < least preferred
 < proxy reports today
 < proxy reports weekly
 < qos enter bandwidths
+< red1
 < server restart
 < static routes
 < tor
index 88847a050b04171d9b191aca28e4a1f18db25bd0..ae4de6cd55380aeaccfefdae5251e0f4a30ba2c9 100644 (file)
@@ -256,6 +256,7 @@ $checked{'SERVICE'}{'selfhost.de'} = '';
 $checked{'SERVICE'}{'strato.com'} = '';
 $checked{'SERVICE'}{'tzo.com'} = '';
 $checked{'SERVICE'}{'zoneedit.com'} = '';
+$checked{'SERVICE'}{'udmedia.de'} = '';
 $checked{'SERVICE'}{$settings{'SERVICE'}} = "selected='selected'";
 
 $checked{'BEHINDROUTER'}{'RED_IP'} = '';
@@ -351,6 +352,7 @@ print <<END
     <option $checked{'SERVICE'}{'selfhost.de'}>selfhost.de</option>
     <option $checked{'SERVICE'}{'strato.com'}>strato.com</option>
 <!--    <option $checked{'SERVICE'}{'tzo.com'}>tzo.com</option>        comment this service out until a working fix is developed -->
+    <option $checked{'SERVICE'}{'udmedia.de'}>udmedia.de</option>
     <option $checked{'SERVICE'}{'zoneedit.com'}>zoneedit.com</option>
     </select></td>
     <td width='20%' class='base'>$Lang::tr{'hostname'}:&nbsp;<img src='/blob.gif' alt='*' /></td>
diff --git a/html/cgi-bin/dmzholes.cgi b/html/cgi-bin/dmzholes.cgi
deleted file mode 100644 (file)
index 5c16f00..0000000
+++ /dev/null
@@ -1,446 +0,0 @@
-#!/usr/bin/perl
-###############################################################################
-#                                                                             #
-# IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007  Michael Tremer & Christian Schmidt                      #
-#                                                                             #
-# This program is free software: you can redistribute it and/or modify        #
-# it under the terms of the GNU General Public License as published by        #
-# the Free Software Foundation, either version 3 of the License, or           #
-# (at your option) any later version.                                         #
-#                                                                             #
-# This program is distributed in the hope that it will be useful,             #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
-# GNU General Public License for more details.                                #
-#                                                                             #
-# You should have received a copy of the GNU General Public License           #
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
-#                                                                             #
-###############################################################################
-
-use strict;
-
-# enable only the following on debugging purpose
-#use warnings;
-#use CGI::Carp 'fatalsToBrowser';
-
-require '/var/ipfire/general-functions.pl';
-require "${General::swroot}/lang.pl";
-require "${General::swroot}/header.pl";
-
-#workaround to suppress a warning when a variable is used only once
-my @dummy = ( ${Header::table2colour}, ${Header::colouryellow} );
-undef (@dummy);
-
-my %cgiparams=();
-my %checked=();
-my %selected=();
-my %netsettings=();
-my $errormessage = '';
-my $filename = "${General::swroot}/dmzholes/config";
-
-&General::readhash("${General::swroot}/ethernet/settings", \%netsettings);
-
-&Header::showhttpheaders();
-
-$cgiparams{'ENABLED'} = 'off';
-$cgiparams{'REMARK'} = '';
-$cgiparams{'ACTION'} = '';
-$cgiparams{'SRC_IP'} = '';
-$cgiparams{'DEST_IP'} ='';
-$cgiparams{'DEST_PORT'} = '';
-&Header::getcgihash(\%cgiparams);
-
-open(FILE, $filename) or die 'Unable to open config file.';
-my @current = <FILE>;
-close(FILE);
-
-if ($cgiparams{'ACTION'} eq $Lang::tr{'add'})
-{
-       unless($cgiparams{'PROTOCOL'} =~ /^(tcp|udp)$/) { $errormessage = $Lang::tr{'invalid input'}; }
-       unless(&General::validipormask($cgiparams{'SRC_IP'})) { $errormessage = $Lang::tr{'source ip bad'}; }
-       unless($errormessage){$errormessage = &General::validportrange($cgiparams{'DEST_PORT'},'dst');}
-       unless(&General::validipormask($cgiparams{'DEST_IP'})) { $errormessage = $Lang::tr{'destination ip bad'}; }
-       unless ($errormessage) {
-               $errormessage = &validNet($cgiparams{'SRC_NET'},$cgiparams{'DEST_NET'}); }
-       # Darren Critchley - Remove commas from remarks
-       $cgiparams{'REMARK'} = &Header::cleanhtml($cgiparams{'REMARK'});
-
-       unless ($errormessage)
-       {
-               if($cgiparams{'EDITING'} eq 'no') {
-                       open(FILE,">>$filename") or die 'Unable to open config file.';
-                       flock FILE, 2;
-                       print FILE "$cgiparams{'PROTOCOL'},";           # [0]
-                       print FILE "$cgiparams{'SRC_IP'},";             # [1]
-                       print FILE "$cgiparams{'DEST_IP'},";            # [2]
-                       print FILE "$cgiparams{'DEST_PORT'},";          # [3]
-                       print FILE "$cgiparams{'ENABLED'},";            # [4]
-                       print FILE "$cgiparams{'SRC_NET'},";            # [5]
-                       print FILE "$cgiparams{'DEST_NET'},";           # [6]
-                       print FILE "$cgiparams{'REMARK'}\n";            # [7]
-               } else {
-                       open(FILE,">$filename") or die 'Unable to open config file.';
-                       flock FILE, 2;
-                       my $id = 0;
-                       foreach my $line (@current)
-                       {
-                               $id++;
-                               if ($cgiparams{'EDITING'} eq $id) {
-                                       print FILE "$cgiparams{'PROTOCOL'},";           # [0]
-                                       print FILE "$cgiparams{'SRC_IP'},";             # [1]
-                                       print FILE "$cgiparams{'DEST_IP'},";            # [2]
-                                       print FILE "$cgiparams{'DEST_PORT'},";          # [3]
-                                       print FILE "$cgiparams{'ENABLED'},";            # [4]
-                                       print FILE "$cgiparams{'SRC_NET'},";            # [5]
-                                       print FILE "$cgiparams{'DEST_NET'},";           # [6]
-                                       print FILE "$cgiparams{'REMARK'}\n";            # [7]
-                               } else { print FILE "$line"; }
-                       }
-               }
-               close(FILE);
-               undef %cgiparams;
-               &General::log($Lang::tr{'dmz pinhole rule added'});
-               system('/usr/local/bin/setdmzholes');
-       }
-}
-if ($cgiparams{'ACTION'} eq $Lang::tr{'remove'})
-{
-       my $id = 0;
-       open(FILE, ">$filename") or die 'Unable to open config file.';
-       flock FILE, 2;
-       foreach my $line (@current)
-       {
-               $id++;
-               unless ($cgiparams{'ID'} eq $id) { print FILE "$line"; }
-       }
-       close(FILE);
-       system('/usr/local/bin/setdmzholes');
-       &General::log($Lang::tr{'dmz pinhole rule removed'});
-}
-if ($cgiparams{'ACTION'} eq $Lang::tr{'toggle enable disable'})
-{
-       my $id = 0;
-       open(FILE, ">$filename") or die 'Unable to open config file.';
-       flock FILE, 2;
-       foreach my $line (@current)
-       {
-               $id++;
-               unless ($cgiparams{'ID'} eq $id) { print FILE "$line"; }
-               else
-               {
-                       chomp($line);
-                       my @temp = split(/\,/,$line);
-                       print FILE "$temp[0],$temp[1],$temp[2],$temp[3],$cgiparams{'ENABLE'},$temp[5],$temp[6],$temp[7]\n";
-               }
-       }
-       close(FILE);
-       system('/usr/local/bin/setdmzholes');
-}
-if ($cgiparams{'ACTION'} eq $Lang::tr{'edit'})
-{
-       my $id = 0;
-       foreach my $line (@current)
-       {
-               $id++;
-               if ($cgiparams{'ID'} eq $id)
-               {
-                       chomp($line);
-                       my @temp = split(/\,/,$line);
-                       $cgiparams{'PROTOCOL'} = $temp[0];
-                       $cgiparams{'SRC_IP'} = $temp[1];
-                       $cgiparams{'DEST_IP'} = $temp[2];
-                       $cgiparams{'DEST_PORT'} = $temp[3];
-                       $cgiparams{'ENABLED'} = $temp[4];
-                       $cgiparams{'SRC_NET'} = $temp[5];
-                       $cgiparams{'DEST_NET'} = $temp[6];
-                       $cgiparams{'REMARK'} = $temp[7];
-               }
-       }
-}
-
-if ($cgiparams{'ACTION'} eq '')
-{
-       $cgiparams{'PROTOCOL'} = 'tcp';
-       $cgiparams{'ENABLED'} = 'on';
-       $cgiparams{'SRC_NET'} = 'orange';
-       $cgiparams{'DEST_NET'} = 'blue';
-}
-
-$selected{'PROTOCOL'}{'udp'} = '';
-$selected{'PROTOCOL'}{'tcp'} = '';
-$selected{'PROTOCOL'}{$cgiparams{'PROTOCOL'}} = "selected='selected'";
-
-$selected{'SRC_NET'}{'orange'} = '';
-$selected{'SRC_NET'}{'blue'} = '';
-$selected{'SRC_NET'}{$cgiparams{'SRC_NET'}} = "selected='selected'";
-
-$selected{'DEST_NET'}{'blue'} = '';
-$selected{'DEST_NET'}{'green'} = '';
-$selected{'DEST_NET'}{$cgiparams{'DEST_NET'}} = "selected='selected'";
-
-$checked{'ENABLED'}{'off'} = '';
-$checked{'ENABLED'}{'on'} = '';
-$checked{'ENABLED'}{$cgiparams{'ENABLED'}} = "checked='checked'";
-
-&Header::openpage($Lang::tr{'dmz pinhole configuration'}, 1, '');
-
-&Header::openbigbox('100%', 'left', '', $errormessage);
-
-if ($errormessage) {
-       &Header::openbox('100%', 'left', $Lang::tr{'error messages'});
-       print "<class name='base'>$errormessage\n";
-       print "&nbsp;</class>\n";
-       &Header::closebox();
-}
-
-print "<form method='post' action='$ENV{'SCRIPT_NAME'}'>\n";
-
-my $buttonText = $Lang::tr{'add'};
-if ($cgiparams{'ACTION'} eq $Lang::tr{'edit'}) {
-       &Header::openbox('100%', 'left', $Lang::tr{'edit a rule'});
-       $buttonText = $Lang::tr{'update'};
-} else {
-       &Header::openbox('100%', 'left', $Lang::tr{'add a new rule'});
-}
-print <<END
-<table width='100%'>
-<tr>
-<td>
-       <select name='PROTOCOL'>
-               <option value='udp' $selected{'PROTOCOL'}{'udp'}>UDP</option>
-               <option value='tcp' $selected{'PROTOCOL'}{'tcp'}>TCP</option>
-       </select>
-</td>
-<td>
-       $Lang::tr{'source net'}:</td>
-<td>
-       <select name='SRC_NET'>
-END
-;
-       if (&haveOrangeNet()) {
-               print "<option value='orange' $selected{'SRC_NET'}{'orange'}>$Lang::tr{'orange'}</option>";
-       }
-       if (&haveBlueNet()) {
-               print "<option value='blue' $selected{'SRC_NET'}{'blue'}>$Lang::tr{'blue'}</option>";
-       }
-print <<END
-       </select>
-</td>
-<td class='base'>$Lang::tr{'source ip or net'}:</td>
-<td><input type='text' name='SRC_IP' value='$cgiparams{'SRC_IP'}' size='15' /></td>
-</tr>
-<tr>
-<td>
-       &nbsp;</td>
-<td>
-       $Lang::tr{'destination net'}:</td>
-<td>
-       <select name='DEST_NET'>
-END
-;
-       if (&haveOrangeNet() && &haveBlueNet()) {
-               print "<option value='blue' $selected{'DEST_NET'}{'blue'}>$Lang::tr{'blue'}</option>";
-       }
-
-print <<END
-               <option value='green' $selected{'DEST_NET'}{'green'}>$Lang::tr{'green'}</option>
-       </select>
-</td>
-<td class='base'>
-       $Lang::tr{'destination ip or net'}:</td>
-<td>
-       <input type='text' name='DEST_IP' value='$cgiparams{'DEST_IP'}' size='15' />
-</td>
-<td class='base'>
-       $Lang::tr{'destination port'}:&nbsp;
-       <input type='text' name='DEST_PORT' value='$cgiparams{'DEST_PORT'}' size='5' />
-</td>
-</tr>
-</table>
-<table width='100%'>
-       <tr>
-               <td colspan='3' width='50%' class='base'>
-                       <font class='boldbase'>$Lang::tr{'remark title'}&nbsp;<img src='/blob.gif' alt='*' /></font>
-                       <input type='text' name='REMARK' value='$cgiparams{'REMARK'}' size='55' maxlength='50' />
-               </td>
-       </tr>
-       <tr>
-               <td class='base' width='50%'>
-                       <img src='/blob.gif' alt ='*' align='top' />&nbsp;
-                       <font class='base'>$Lang::tr{'this field may be blank'}</font>
-               </td>
-               <td class='base' width='25%' align='center'>$Lang::tr{'enabled'}<input type='checkbox' name='ENABLED' $checked{'ENABLED'}{'on'} /></td>
-               <td width='25%' align='center'>
-                       <input type='hidden' name='ACTION' value='$Lang::tr{'add'}' />
-                       <input type='submit' name='SUBMIT' value='$buttonText' />
-               </td>
-       </tr>
-</table>
-END
-;
-if ($cgiparams{'ACTION'} eq $Lang::tr{'edit'}) {
-       print "<input type='hidden' name='EDITING' value='$cgiparams{'ID'}' />\n";
-} else {
-       print "<input type='hidden' name='EDITING' value='no' />\n";
-}
-&Header::closebox();
-print "</form>\n";
-
-&Header::openbox('100%', 'left', $Lang::tr{'current rules'});
-print <<END
-<table width='100%'>
-<tr>
-<td width='7%' class='boldbase' align='center'><b>$Lang::tr{'proto'}</b></td>
-<td width='3%' class='boldbase' align='center'><b>$Lang::tr{'net'}</b></td>
-<td width='25%' class='boldbase' align='center'><b>$Lang::tr{'source'}</b></td>
-<td width='2%' class='boldbase' align='center'>&nbsp;</td>
-<td width='3%' class='boldbase' align='center'><b>$Lang::tr{'net'}</b></td>
-<td width='25%' class='boldbase' align='center'><b>$Lang::tr{'destination'}</b></td>
-<td width='30%' class='boldbase' align='center'><b>$Lang::tr{'remark'}</b></td>
-<td width='1%' class='boldbase' align='center'>&nbsp;</td>
-<td width='4%' class='boldbase' colspan='3' align='center'><b>$Lang::tr{'action'}</b></td>
-END
-;
-
-# Achim Weber: if i add a new rule, this rule is not displayed?!?
-#                                                      we re-read always config.
-# If something has happeened re-read config
-#if($cgiparams{'ACTION'} ne '')
-#{
-       open(FILE, $filename) or die 'Unable to open config file.';
-       @current = <FILE>;
-       close(FILE);
-#}
-my $id = 0;
-foreach my $line (@current)
-{
-       my $protocol='';
-       my $gif='';
-       my $toggle='';
-       my $gdesc='';
-       $id++;
-       chomp($line);
-       my @temp = split(/\,/,$line);
-       if ($temp[0] eq 'udp') { $protocol = 'UDP'; } else { $protocol = 'TCP' }
-
-       my $srcnetcolor = ($temp[5] eq 'blue')? ${Header::colourblue} : ${Header::colourorange};
-       my $destnetcolor = ($temp[6] eq 'blue')? ${Header::colourblue} : ${Header::colourgreen};
-
-       if ($cgiparams{'ACTION'} eq $Lang::tr{'edit'} && $cgiparams{'ID'} eq $id) {
-               print "<tr bgcolor='${Header::colouryellow}'>\n"; }
-       elsif ($id % 2) {
-               print "<tr bgcolor='${Header::table1colour}'>\n"; }
-       else {
-               print "<tr bgcolor='${Header::table2colour}'>\n"; }
-       if ($temp[4] eq 'on') { $gif='on.gif'; $toggle='off'; $gdesc=$Lang::tr{'click to disable'};}
-       else { $gif = 'off.gif'; $toggle='on'; $gdesc=$Lang::tr{'click to enable'}; }
-
-       # Darren Critchley - Get Port Service Name if we can - code borrowed from firewalllog.dat
-       my $dstprt =$temp[3];
-       $_=$temp[3];
-       if (/^\d+$/) {
-               my $servi = uc(getservbyport($temp[3], lc($temp[0])));
-               if ($servi ne '' && $temp[3] < 1024) {
-                       $dstprt = "$dstprt($servi)"; }
-       }
-       # Darren Critchley - If the line is too long, wrap the port numbers
-       my $dstaddr = "$temp[2] : $dstprt";
-       if (length($dstaddr) > 26) {
-               $dstaddr = "$temp[2] :<br /> $dstprt";
-       }
-print <<END
-<td align='center'>$protocol</td>
-<td bgcolor='$srcnetcolor'></td>
-<td align='center'>$temp[1]</td>
-<td align='center'><img src='/images/forward.gif' /></td>
-<td bgcolor='$destnetcolor'></td>
-<td align='center'>$dstaddr</td>
-<td align='center'>$temp[7]</td>
-
-<td align='center'>
-<form method='post' name='frma$id' action='$ENV{'SCRIPT_NAME'}'>
-<input type='image' name='$Lang::tr{'toggle enable disable'}' src='/images/$gif' alt='$gdesc' />
-<input type='hidden' name='ID' value='$id' />
-<input type='hidden' name='ENABLE' value='$toggle' />
-<input type='hidden' name='ACTION' value='$Lang::tr{'toggle enable disable'}' />
-</form>
-</td>
-
-<td align='center'>
-<form method='post' name='frmb$id' action='$ENV{'SCRIPT_NAME'}'>
-<input type='image' name='$Lang::tr{'edit'}' src='/images/edit.gif' alt='$Lang::tr{'edit'}' />
-<input type='hidden' name='ID' value='$id' />
-<input type='hidden' name='ACTION' value='$Lang::tr{'edit'}' />
-</form>
-</td>
-
-<td align='center'>
-<form method='post' name='frmc$id' action='$ENV{'SCRIPT_NAME'}'>
-<input type='image' name='$Lang::tr{'remove'}' src='/images/delete.gif' alt='$Lang::tr{'remove'}' />
-<input type='hidden' name='ID' value='$id' />
-<input type='hidden' name='ACTION' value='$Lang::tr{'remove'}' />
-</form>
-</td>
-
-</tr>
-END
-       ;
-}
-print "</table>\n";
-
-# If the fixed lease file contains entries, print Key to action icons
-if ( ! -z "$filename") {
-print <<END
-<table>
-<tr>
-       <td class='boldbase'>&nbsp; <b>$Lang::tr{'legend'}:</b></td>
-       <td>&nbsp; <img src='/images/on.gif' alt='$Lang::tr{'click to disable'}' /></td>
-       <td class='base'>$Lang::tr{'click to disable'}</td>
-       <td>&nbsp; &nbsp; <img src='/images/off.gif' alt='$Lang::tr{'click to enable'}' /></td>
-       <td class='base'>$Lang::tr{'click to enable'}</td>
-       <td>&nbsp; &nbsp; <img src='/images/edit.gif' alt='$Lang::tr{'edit'}' /></td>
-       <td class='base'>$Lang::tr{'edit'}</td>
-       <td>&nbsp; &nbsp; <img src='/images/delete.gif' alt='$Lang::tr{'remove'}' /></td>
-       <td class='base'>$Lang::tr{'remove'}</td>
-</tr>
-</table>
-END
-;
-}
-
-&Header::closebox();
-
-&Header::closebigbox();
-
-&Header::closepage();
-
-sub validNet
-{
-       my $srcNet      = $_[0];
-       my $destNet     = $_[1];
-
-       if ($srcNet eq $destNet) {
-               return $Lang::tr{'dmzpinholes for same net not necessary'}; }
-       unless ($srcNet =~ /^(blue|orange)$/) {
-               return $Lang::tr{'select source net'}; }
-       unless ($destNet =~ /^(blue|green)$/) {
-               return $Lang::tr{'select dest net'}; }
-               
-       return '';
-}
-
-sub haveOrangeNet
-{
-       if ($netsettings{'CONFIG_TYPE'} == 2) {return 1;}
-       if ($netsettings{'CONFIG_TYPE'} == 4) {return 1;}
-       return 0;
-}
-
-sub haveBlueNet
-{
-       if ($netsettings{'CONFIG_TYPE'} == 3) {return 1;}
-       if ($netsettings{'CONFIG_TYPE'} == 4) {return 1;}
-       return 0;
-}
diff --git a/html/cgi-bin/firewall.cgi b/html/cgi-bin/firewall.cgi
new file mode 100755 (executable)
index 0000000..802b2be
--- /dev/null
@@ -0,0 +1,2778 @@
+#!/usr/bin/perl
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2013 Alexander Marx <amarx@ipfire.org>                        #
+#                                                                             #
+# This program is free software: you can redistribute it and/or modify        #
+# it under the terms of the GNU General Public License as published by        #
+# the Free Software Foundation, either version 3 of the License, or           #
+# (at your option) any later version.                                         #
+#                                                                             #
+# This program is distributed in the hope that it will be useful,             #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
+# GNU General Public License for more details.                                #
+#                                                                             #
+# You should have received a copy of the GNU General Public License           #
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+
+use strict;
+use Sort::Naturally;
+no warnings 'uninitialized';
+# enable only the following on debugging purpose
+#use warnings;
+#use CGI::Carp 'fatalsToBrowser';
+
+require '/var/ipfire/general-functions.pl';
+require "${General::swroot}/lang.pl";
+require "${General::swroot}/header.pl";
+require "${General::swroot}/firewall/bin/firewall-lib.pl";
+
+unless (-d "${General::swroot}/firewall")                      { system("mkdir ${General::swroot}/firewall"); }
+unless (-e "${General::swroot}/firewall/settings")     { system("touch ${General::swroot}/firewall/settings"); }
+unless (-e "${General::swroot}/firewall/config")       { system("touch ${General::swroot}/firewall/config"); }
+unless (-e "${General::swroot}/firewall/input")                { system("touch ${General::swroot}/firewall/input"); }
+unless (-e "${General::swroot}/firewall/outgoing")     { system("touch ${General::swroot}/firewall/outgoing"); }
+
+my %fwdfwsettings=();
+my %selected=() ;
+my %defaultNetworks=();
+my %netsettings=();
+my %customhost=();
+my %customgrp=();
+my %customnetworks=();
+my %customservice=();
+my %customservicegrp=();
+my %ccdnet=();
+my %customnetwork=();
+my %ccdhost=();
+my %configfwdfw=();
+my %configinputfw=();
+my %configoutgoingfw=();
+my %ipsecconf=();
+my %color=();
+my %mainsettings=();
+my %checked=();
+my %icmptypes=();
+my %ovpnsettings=();
+my %ipsecsettings=();
+my %aliases=();
+my %optionsfw=();
+my %ifaces=();
+
+my @PROTOCOLS = ("TCP", "UDP", "ICMP", "IGMP", "AH", "ESP", "GRE","IPv6","IPIP");
+
+my $color;
+my $confignet          = "${General::swroot}/fwhosts/customnetworks";
+my $confighost         = "${General::swroot}/fwhosts/customhosts";
+my $configgrp          = "${General::swroot}/fwhosts/customgroups";
+my $configsrv          = "${General::swroot}/fwhosts/customservices";
+my $configsrvgrp       = "${General::swroot}/fwhosts/customservicegrp";
+my $configccdnet       = "${General::swroot}/ovpn/ccd.conf";
+my $configccdhost      = "${General::swroot}/ovpn/ovpnconfig";
+my $configipsec                = "${General::swroot}/vpn/config";
+my $configipsecrw      = "${General::swroot}/vpn/settings";
+my $configfwdfw                = "${General::swroot}/firewall/config";
+my $configinput                = "${General::swroot}/firewall/input";
+my $configoutgoing     = "${General::swroot}/firewall/outgoing";
+my $configovpn         = "${General::swroot}/ovpn/settings";
+my $fwoptions          = "${General::swroot}/optionsfw/settings";
+my $ifacesettings      = "${General::swroot}/ethernet/settings";
+my $errormessage='';
+my $hint='';
+my $ipgrp="${General::swroot}/outgoing/groups";
+my $tdcolor='';
+my $checkorange='';
+my @protocols;
+&General::readhash("${General::swroot}/firewall/settings", \%fwdfwsettings);
+&General::readhash("${General::swroot}/main/settings", \%mainsettings);
+&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash($fwoptions, \%optionsfw); 
+&General::readhash($ifacesettings, \%ifaces);
+&General::readhash("$configovpn", \%ovpnsettings);
+&General::readhash("$configipsecrw", \%ipsecsettings);
+&General::readhasharray("$configipsec", \%ipsecconf);
+&Header::showhttpheaders();
+&Header::getcgihash(\%fwdfwsettings);
+&Header::openpage($Lang::tr{'fwdfw menu'}, 1, '');
+&Header::openbigbox('100%', 'center',$errormessage);
+#### JAVA SCRIPT ####
+print<<END;
+<script>
+       var PROTOCOLS_WITH_PORTS = ["TCP", "UDP"];
+
+       var update_protocol = function() {
+               var protocol = \$("#protocol").val();
+
+               if (protocol === undefined)
+                       return;
+
+               // Check if a template is/should be used.
+               if (protocol === "template") {
+                       \$("#PROTOCOL_TEMPLATE").show();
+               } else {
+                       \$("#PROTOCOL_TEMPLATE").hide();
+               }
+
+               // Check if we are dealing with a protocol, that knows ports.
+               if (\$.inArray(protocol, PROTOCOLS_WITH_PORTS) >= 0) {
+                       \$("#PROTOCOL_PORTS").show();
+               } else {
+                       \$("#PROTOCOL_PORTS").hide();
+               }
+
+               // Handle ICMP.
+               if (protocol === "ICMP") {
+                       \$("#PROTOCOL_ICMP_TYPES").show();
+               } else {
+                       \$("#PROTOCOL_ICMP_TYPES").hide();
+               }
+       };
+
+       \$(document).ready(function() {
+               \$("#protocol").change(update_protocol);
+               update_protocol();
+
+               // When nat not used, hide it
+               if (! \$("#USE_NAT").attr("checked")) {
+                       \$(".NAT").hide();
+               }
+
+               // Show NAT area when "use nat" checkbox is clicked
+               \$("#USE_NAT").change(function() {
+                       \$(".NAT").toggle();
+               });
+
+               // Time constraints
+               if(!\$("#USE_TIME_CONSTRAINTS").attr("checked")) {
+                       \$("#TIME_CONSTRAINTS").hide();
+               }
+               \$("#USE_TIME_CONSTRAINTS").change(function() {
+                       \$("#TIME_CONSTRAINTS").toggle();
+               });
+
+               // Automatically select radio buttons when corresponding
+               // dropdown menu changes.
+               \$("select").change(function() {
+                       var id = \$(this).attr("name");
+
+                       // When using SNAT or DNAT, check "USE NAT" Checkbox
+                       if (id === 'snat' || id === 'dnat') {
+                               \$('#USE_NAT').prop('checked', true);
+                       }
+                       \$('#' + id).prop("checked", true);
+               });
+       });
+</script>
+END
+
+####  ACTION  #####
+
+if ($fwdfwsettings{'ACTION'} eq 'saverule')
+{
+       &General::readhasharray("$configfwdfw", \%configfwdfw);
+       &General::readhasharray("$configinput", \%configinputfw);
+       &General::readhasharray("$configoutgoing", \%configoutgoingfw);
+       #Set Variables according to the JQuery code in protocol section
+       if ($fwdfwsettings{'PROT'} eq 'TCP' || $fwdfwsettings{'PROT'} eq 'UDP')
+       {
+               if ($fwdfwsettings{'SRC_PORT'} ne '')
+               {
+                       $fwdfwsettings{'USE_SRC_PORT'} = 'ON';
+               }
+               if ($fwdfwsettings{'TGT_PORT'} ne '')
+               {
+                       $fwdfwsettings{'USESRV'} = 'ON';
+                       $fwdfwsettings{'grp3'} = 'TGT_PORT';
+               }
+       }
+       if ($fwdfwsettings{'PROT'} eq 'template')
+       {
+               $fwdfwsettings{'USESRV'} = 'ON';
+       }
+       $errormessage=&checksource;
+       if(!$errormessage){&checktarget;}
+       if(!$errormessage){&checkrule;}
+       #check if manual ip (source) is orange network
+       if ($fwdfwsettings{'grp1'} eq 'src_addr'){
+               my ($sip,$scidr) = split("/",$fwdfwsettings{$fwdfwsettings{'grp1'}});
+               if ( &General::IpInSubnet($sip,$netsettings{'ORANGE_ADDRESS'},$netsettings{'ORANGE_NETMASK'})){
+                       $checkorange='on';
+               }
+       }
+       #check useless rules
+       if(     ($fwdfwsettings{$fwdfwsettings{'grp1'}} eq 'ORANGE' || $checkorange eq 'on') && $fwdfwsettings{'grp2'} eq 'ipfire'){
+               $errormessage.=$Lang::tr{'fwdfw useless rule'}."<br>";
+       }
+       #check if we try to break rules
+       if(     $fwdfwsettings{'grp1'} eq 'ipfire_src' && $fwdfwsettings{'grp2'} eq 'ipfire'){
+               $errormessage=$Lang::tr{'fwdfw err same'};
+       }
+       #INPUT part
+       if($fwdfwsettings{'grp2'} eq 'ipfire' && $fwdfwsettings{$fwdfwsettings{'grp1'}} ne 'ORANGE'){
+               $fwdfwsettings{'config'}=$configinput;
+               $fwdfwsettings{'chain'} = 'INPUTFW';
+               my $maxkey=&General::findhasharraykey(\%configinputfw);
+               #check if we have an identical rule already
+               if($fwdfwsettings{'oldrulenumber'} eq $fwdfwsettings{'rulepos'}){
+                       foreach my $key (sort keys %configinputfw){
+                               if (   "$fwdfwsettings{'RULE_ACTION'},$fwdfwsettings{'ACTIVE'},$fwdfwsettings{'grp1'},$fwdfwsettings{$fwdfwsettings{'grp1'}},$fwdfwsettings{'grp2'},$fwdfwsettings{$fwdfwsettings{'grp2'}},$fwdfwsettings{'USE_SRC_PORT'},$fwdfwsettings{'PROT'},$fwdfwsettings{'ICMP_TYPES'},$fwdfwsettings{'SRC_PORT'},$fwdfwsettings{'USESRV'},$fwdfwsettings{'TGT_PROT'},$fwdfwsettings{'ICMP_TGT'},$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}},$fwdfwsettings{'LOG'},$fwdfwsettings{'TIME'},$fwdfwsettings{'TIME_MON'},$fwdfwsettings{'TIME_TUE'},$fwdfwsettings{'TIME_WED'},$fwdfwsettings{'TIME_THU'},$fwdfwsettings{'TIME_FRI'},$fwdfwsettings{'TIME_SAT'},$fwdfwsettings{'TIME_SUN'},$fwdfwsettings{'TIME_FROM'},$fwdfwsettings{'TIME_TO'},$fwdfwsettings{'USE_NAT'},$fwdfwsettings{$fwdfwsettings{'nat'}},$fwdfwsettings{'dnatport'},$fwdfwsettings{'nat'}"
+                                       eq "$configinputfw{$key}[0],$configinputfw{$key}[2],$configinputfw{$key}[3],$configinputfw{$key}[4],$configinputfw{$key}[5],$configinputfw{$key}[6],$configinputfw{$key}[7],$configinputfw{$key}[8],$configinputfw{$key}[9],$configinputfw{$key}[10],$configinputfw{$key}[11],$configinputfw{$key}[12],$configinputfw{$key}[13],$configinputfw{$key}[14],$configinputfw{$key}[15],$configinputfw{$key}[17],$configinputfw{$key}[18],$configinputfw{$key}[19],$configinputfw{$key}[20],$configinputfw{$key}[21],$configinputfw{$key}[22],$configinputfw{$key}[23],$configinputfw{$key}[24],$configinputfw{$key}[25],$configinputfw{$key}[26],$configinputfw{$key}[27],$configinputfw{$key}[28],$configinputfw{$key}[29],$configinputfw{$key}[30],$configinputfw{$key}[31]"){
+                                               $errormessage.=$Lang::tr{'fwdfw err ruleexists'};
+                                               if ($fwdfwsettings{'oldruleremark'} ne $fwdfwsettings{'ruleremark'} && $fwdfwsettings{'updatefwrule'} eq 'on'){
+                                                       $errormessage='';
+                                               }elsif($fwdfwsettings{'oldruleremark'} ne $fwdfwsettings{'ruleremark'} && $fwdfwsettings{'updatefwrule'} eq 'on' && $fwdfwsettings{'ruleremark'} ne '' && !&validremark($fwdfwsettings{'ruleremark'})){
+                                                       $errormessage=$Lang::tr{'fwdfw err remark'}."<br>";
+                                               }
+                                               if ($fwdfwsettings{'oldruleremark'} eq $fwdfwsettings{'ruleremark'}){
+                                                       $fwdfwsettings{'nosave'} = 'on';
+                                               }
+                               }       
+                       }       
+               }
+               #check Rulepos on new Rule
+               if($fwdfwsettings{'rulepos'} > 0 && !$fwdfwsettings{'oldrulenumber'}){
+                       $fwdfwsettings{'oldrulenumber'}=$maxkey;
+                       foreach my $key (sort keys %configinputfw){
+                               if (   "$fwdfwsettings{'RULE_ACTION'},$fwdfwsettings{'ACTIVE'},$fwdfwsettings{'grp1'},$fwdfwsettings{$fwdfwsettings{'grp1'}},$fwdfwsettings{'grp2'},$fwdfwsettings{$fwdfwsettings{'grp2'}},$fwdfwsettings{'USE_SRC_PORT'},$fwdfwsettings{'PROT'},$fwdfwsettings{'ICMP_TYPES'},$fwdfwsettings{'SRC_PORT'},$fwdfwsettings{'USESRV'},$fwdfwsettings{'TGT_PROT'},$fwdfwsettings{'ICMP_TGT'},$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}},$fwdfwsettings{'LOG'},$fwdfwsettings{'TIME'},$fwdfwsettings{'TIME_MON'},$fwdfwsettings{'TIME_TUE'},$fwdfwsettings{'TIME_WED'},$fwdfwsettings{'TIME_THU'},$fwdfwsettings{'TIME_FRI'},$fwdfwsettings{'TIME_SAT'},$fwdfwsettings{'TIME_SUN'},$fwdfwsettings{'TIME_FROM'},$fwdfwsettings{'TIME_TO'},$fwdfwsettings{'USE_NAT'},$fwdfwsettings{$fwdfwsettings{'nat'}},$fwdfwsettings{'dnatport'},$fwdfwsettings{'nat'}"
+                                       eq "$configinputfw{$key}[0],$configinputfw{$key}[2],$configinputfw{$key}[3],$configinputfw{$key}[4],$configinputfw{$key}[5],$configinputfw{$key}[6],$configinputfw{$key}[7],$configinputfw{$key}[8],$configinputfw{$key}[9],$configinputfw{$key}[10],$configinputfw{$key}[11],$configinputfw{$key}[12],$configinputfw{$key}[13],$configinputfw{$key}[14],$configinputfw{$key}[15],$configinputfw{$key}[17],$configinputfw{$key}[18],$configinputfw{$key}[19],$configinputfw{$key}[20],$configinputfw{$key}[21],$configinputfw{$key}[22],$configinputfw{$key}[23],$configinputfw{$key}[24],$configinputfw{$key}[25],$configinputfw{$key}[26],$configinputfw{$key}[27],$configinputfw{$key}[28],$configinputfw{$key}[29],$configinputfw{$key}[30],$configinputfw{$key}[31]"){
+                                               $errormessage.=$Lang::tr{'fwdfw err ruleexists'};
+                               }
+                       }
+               }
+               #check if we just close a rule
+               if( $fwdfwsettings{'oldgrp1a'} eq  $fwdfwsettings{'grp1'} && $fwdfwsettings{'oldgrp1b'} eq $fwdfwsettings{$fwdfwsettings{'grp1'}} && $fwdfwsettings{'oldgrp2a'} eq  $fwdfwsettings{'grp2'} && $fwdfwsettings{'oldgrp2b'} eq $fwdfwsettings{$fwdfwsettings{'grp2'}} &&  $fwdfwsettings{'oldgrp3a'} eq $fwdfwsettings{'grp3'} && $fwdfwsettings{'oldgrp3b'} eq  $fwdfwsettings{$fwdfwsettings{'grp3'}} && $fwdfwsettings{'oldusesrv'} eq $fwdfwsettings{'USESRV'} && $fwdfwsettings{'oldruleremark'} eq $fwdfwsettings{'ruleremark'} && $fwdfwsettings{'oldruletype'} eq $fwdfwsettings{'chain'}) {
+                       if($fwdfwsettings{'nosave'} eq 'on' && $fwdfwsettings{'updatefwrule'} eq 'on'){
+                               $errormessage='';
+                               $fwdfwsettings{'nosave2'} = 'on';
+                       }
+               }
+               if (!$errormessage){
+                       &checkcounter($fwdfwsettings{'oldgrp1a'},$fwdfwsettings{'oldgrp1b'},$fwdfwsettings{'grp1'},$fwdfwsettings{$fwdfwsettings{'grp1'}});
+                       if ($fwdfwsettings{'nobase'} ne 'on'){
+                               &checkcounter($fwdfwsettings{'oldgrp2a'},$fwdfwsettings{'oldgrp2b'},$fwdfwsettings{'grp2'},$fwdfwsettings{$fwdfwsettings{'grp2'}});
+                       }
+                       if($fwdfwsettings{'oldusesrv'} eq '' &&  $fwdfwsettings{'USESRV'} eq 'ON'){
+                               &checkcounter(0,0,$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}});
+                       }elsif ($fwdfwsettings{'USESRV'} eq '' && $fwdfwsettings{'oldusesrv'} eq 'ON') {
+                               &checkcounter($fwdfwsettings{'oldgrp3a'},$fwdfwsettings{'oldgrp3b'},0,0);
+                       }elsif ($fwdfwsettings{'oldusesrv'} eq $fwdfwsettings{'USESRV'} && $fwdfwsettings{'oldgrp3b'} ne $fwdfwsettings{$fwdfwsettings{'grp3'}} && $fwdfwsettings{'updatefwrule'} eq 'on'){
+                               &checkcounter($fwdfwsettings{'oldgrp3a'},$fwdfwsettings{'oldgrp3b'},$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}});
+                       }
+                       if($fwdfwsettings{'nosave2'} ne 'on'){
+                               &saverule(\%configinputfw,$configinput);
+                       }
+               }
+       }elsif($fwdfwsettings{'grp1'} eq 'ipfire_src' ){
+       # OUTGOING PART
+               $fwdfwsettings{'config'}=$configoutgoing;
+               $fwdfwsettings{'chain'} = 'OUTGOINGFW';
+               my $maxkey=&General::findhasharraykey(\%configoutgoingfw);
+               if($fwdfwsettings{'oldrulenumber'} eq $fwdfwsettings{'rulepos'}){
+                       foreach my $key (sort keys %configoutgoingfw){
+                               if (   "$fwdfwsettings{'RULE_ACTION'},$fwdfwsettings{'ACTIVE'},$fwdfwsettings{'grp1'},$fwdfwsettings{$fwdfwsettings{'grp1'}},$fwdfwsettings{'grp2'},$fwdfwsettings{$fwdfwsettings{'grp2'}},$fwdfwsettings{'USE_SRC_PORT'},$fwdfwsettings{'PROT'},$fwdfwsettings{'ICMP_TYPES'},$fwdfwsettings{'SRC_PORT'},$fwdfwsettings{'USESRV'},$fwdfwsettings{'TGT_PROT'},$fwdfwsettings{'ICMP_TGT'},$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}},$fwdfwsettings{'LOG'},$fwdfwsettings{'TIME'},$fwdfwsettings{'TIME_MON'},$fwdfwsettings{'TIME_TUE'},$fwdfwsettings{'TIME_WED'},$fwdfwsettings{'TIME_THU'},$fwdfwsettings{'TIME_FRI'},$fwdfwsettings{'TIME_SAT'},$fwdfwsettings{'TIME_SUN'},$fwdfwsettings{'TIME_FROM'},$fwdfwsettings{'TIME_TO'},$fwdfwsettings{'USE_NAT'},$fwdfwsettings{$fwdfwsettings{'nat'}},$fwdfwsettings{'dnatport'},$fwdfwsettings{'nat'}"
+                                       eq "$configoutgoingfw{$key}[0],$configoutgoingfw{$key}[2],$configoutgoingfw{$key}[3],$configoutgoingfw{$key}[4],$configoutgoingfw{$key}[5],$configoutgoingfw{$key}[6],$configoutgoingfw{$key}[7],$configoutgoingfw{$key}[8],$configoutgoingfw{$key}[9],$configoutgoingfw{$key}[10],$configoutgoingfw{$key}[11],$configoutgoingfw{$key}[12],$configoutgoingfw{$key}[13],$configoutgoingfw{$key}[14],$configoutgoingfw{$key}[15],$configoutgoingfw{$key}[17],$configoutgoingfw{$key}[18],$configoutgoingfw{$key}[19],$configoutgoingfw{$key}[20],$configoutgoingfw{$key}[21],$configoutgoingfw{$key}[22],$configoutgoingfw{$key}[23],$configoutgoingfw{$key}[24],$configoutgoingfw{$key}[25],$configoutgoingfw{$key}[26],$configoutgoingfw{$key}[27],$configoutgoingfw{$key}[28],$configoutgoingfw{$key}[29],$configoutgoingfw{$key}[30],$configoutgoingfw{$key}[31]"){
+                                               $errormessage.=$Lang::tr{'fwdfw err ruleexists'};
+                                               if ($fwdfwsettings{'oldruleremark'} ne $fwdfwsettings{'ruleremark'} && $fwdfwsettings{'updatefwrule'} eq 'on'){
+                                                       $errormessage='';
+                                               }elsif($fwdfwsettings{'oldruleremark'} ne $fwdfwsettings{'ruleremark'} && $fwdfwsettings{'updatefwrule'} eq 'on' && $fwdfwsettings{'ruleremark'} ne '' && !&validremark($fwdfwsettings{'ruleremark'})){
+                                                       $errormessage=$Lang::tr{'fwdfw err remark'}."<br>";
+                                               }
+                                               if ($fwdfwsettings{'oldruleremark'} eq $fwdfwsettings{'ruleremark'}){
+                                                       $fwdfwsettings{'nosave'} = 'on';
+                                               }
+                               }
+                       }
+               }
+               #check Rulepos on new Rule
+               if($fwdfwsettings{'rulepos'} > 0 && !$fwdfwsettings{'oldrulenumber'}){
+                       print"CHECK OUTGOING DOPPELTE REGEL<br>";
+                       $fwdfwsettings{'oldrulenumber'}=$maxkey;
+                       foreach my $key (sort keys %configoutgoingfw){
+                               if (   "$fwdfwsettings{'RULE_ACTION'},$fwdfwsettings{'ACTIVE'},$fwdfwsettings{'grp1'},$fwdfwsettings{$fwdfwsettings{'grp1'}},$fwdfwsettings{'grp2'},$fwdfwsettings{$fwdfwsettings{'grp2'}},$fwdfwsettings{'USE_SRC_PORT'},$fwdfwsettings{'PROT'},$fwdfwsettings{'ICMP_TYPES'},$fwdfwsettings{'SRC_PORT'},$fwdfwsettings{'USESRV'},$fwdfwsettings{'TGT_PROT'},$fwdfwsettings{'ICMP_TGT'},$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}},$fwdfwsettings{'LOG'},$fwdfwsettings{'TIME'},$fwdfwsettings{'TIME_MON'},$fwdfwsettings{'TIME_TUE'},$fwdfwsettings{'TIME_WED'},$fwdfwsettings{'TIME_THU'},$fwdfwsettings{'TIME_FRI'},$fwdfwsettings{'TIME_SAT'},$fwdfwsettings{'TIME_SUN'},$fwdfwsettings{'TIME_FROM'},$fwdfwsettings{'TIME_TO'},$fwdfwsettings{'USE_NAT'},$fwdfwsettings{$fwdfwsettings{'nat'}},$fwdfwsettings{'dnatport'},$fwdfwsettings{'nat'}"
+                                       eq "$configoutgoingfw{$key}[0],$configoutgoingfw{$key}[2],$configoutgoingfw{$key}[3],$configoutgoingfw{$key}[4],$configoutgoingfw{$key}[5],$configoutgoingfw{$key}[6],$configoutgoingfw{$key}[7],$configoutgoingfw{$key}[8],$configoutgoingfw{$key}[9],$configoutgoingfw{$key}[10],$configoutgoingfw{$key}[11],$configoutgoingfw{$key}[12],$configoutgoingfw{$key}[13],$configoutgoingfw{$key}[14],$configoutgoingfw{$key}[15],$configoutgoingfw{$key}[17],$configoutgoingfw{$key}[18],$configoutgoingfw{$key}[19],$configoutgoingfw{$key}[20],$configoutgoingfw{$key}[21],$configoutgoingfw{$key}[22],$configoutgoingfw{$key}[23],$configoutgoingfw{$key}[24],$configoutgoingfw{$key}[25],$configoutgoingfw{$key}[26],$configoutgoingfw{$key}[27],$configoutgoingfw{$key}[28],$configoutgoingfw{$key}[29],$configoutgoingfw{$key}[30],$configoutgoingfw{$key}[31]"){
+                                               $errormessage.=$Lang::tr{'fwdfw err ruleexists'};
+                               }
+                       }
+               }
+               #check if we just close a rule
+               if( $fwdfwsettings{'oldgrp1a'} eq  $fwdfwsettings{'grp1'} && $fwdfwsettings{'oldgrp1b'} eq $fwdfwsettings{$fwdfwsettings{'grp1'}} && $fwdfwsettings{'oldgrp2a'} eq  $fwdfwsettings{'grp2'} && $fwdfwsettings{'oldgrp2b'} eq $fwdfwsettings{$fwdfwsettings{'grp2'}} &&  $fwdfwsettings{'oldgrp3a'} eq $fwdfwsettings{'grp3'} && $fwdfwsettings{'oldgrp3b'} eq  $fwdfwsettings{$fwdfwsettings{'grp3'}} && $fwdfwsettings{'oldusesrv'} eq $fwdfwsettings{'USESRV'} && $fwdfwsettings{'oldruleremark'} eq $fwdfwsettings{'ruleremark'} && $fwdfwsettings{'oldruletype'} eq $fwdfwsettings{'chain'}) {
+                       if($fwdfwsettings{'nosave'} eq 'on' && $fwdfwsettings{'updatefwrule'} eq 'on'){
+                               $fwdfwsettings{'nosave2'} = 'on';
+                               $errormessage='';
+                       }
+               }
+               #increase counters
+               if (!$errormessage){
+                &checkcounter($fwdfwsettings{'oldgrp1a'},$fwdfwsettings{'oldgrp1b'},$fwdfwsettings{'grp1'},$fwdfwsettings{$fwdfwsettings{'grp1'}});
+                &checkcounter($fwdfwsettings{'oldgrp2a'},$fwdfwsettings{'oldgrp2b'},$fwdfwsettings{'grp2'},$fwdfwsettings{$fwdfwsettings{'grp2'}});
+                       if($fwdfwsettings{'oldusesrv'} eq '' &&  $fwdfwsettings{'USESRV'} eq 'ON'){
+                               &checkcounter(0,0,$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}});
+                       }elsif ($fwdfwsettings{'USESRV'} eq '' && $fwdfwsettings{'oldusesrv'} eq 'ON') {
+                               &checkcounter($fwdfwsettings{'oldgrp3a'},$fwdfwsettings{'oldgrp3b'},0,0);
+                       }elsif ($fwdfwsettings{'oldusesrv'} eq $fwdfwsettings{'USESRV'} && $fwdfwsettings{'oldgrp3b'} ne $fwdfwsettings{$fwdfwsettings{'grp3'}} && $fwdfwsettings{'updatefwrule'} eq 'on'){
+                               &checkcounter($fwdfwsettings{'oldgrp3a'},$fwdfwsettings{'oldgrp3b'},$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}});
+                       }
+                       if ($fwdfwsettings{'nobase'} eq 'on'){
+                               &checkcounter(0,0,$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}});
+                       }
+                       if ($fwdfwsettings{'nosave2'} ne 'on'){
+                               &saverule(\%configoutgoingfw,$configoutgoing);
+                       }
+               }
+       }else{
+               #FORWARD PART
+               $fwdfwsettings{'config'}=$configfwdfw;
+               $fwdfwsettings{'chain'} = 'FORWARDFW';
+               my $maxkey=&General::findhasharraykey(\%configfwdfw);
+               if($fwdfwsettings{'oldrulenumber'} eq $fwdfwsettings{'rulepos'}){
+                       #check if we have an identical rule already
+                       foreach my $key (sort keys %configfwdfw){
+                               if (   "$fwdfwsettings{'RULE_ACTION'},$fwdfwsettings{'ACTIVE'},$fwdfwsettings{'grp1'},$fwdfwsettings{$fwdfwsettings{'grp1'}},$fwdfwsettings{'grp2'},$fwdfwsettings{$fwdfwsettings{'grp2'}},$fwdfwsettings{'USE_SRC_PORT'},$fwdfwsettings{'PROT'},$fwdfwsettings{'ICMP_TYPES'},$fwdfwsettings{'SRC_PORT'},$fwdfwsettings{'USESRV'},$fwdfwsettings{'TGT_PROT'},$fwdfwsettings{'ICMP_TGT'},$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}},$fwdfwsettings{'TIME'},$fwdfwsettings{'TIME_MON'},$fwdfwsettings{'TIME_TUE'},$fwdfwsettings{'TIME_WED'},$fwdfwsettings{'TIME_THU'},$fwdfwsettings{'TIME_FRI'},$fwdfwsettings{'TIME_SAT'},$fwdfwsettings{'TIME_SUN'},$fwdfwsettings{'TIME_FROM'},$fwdfwsettings{'TIME_TO'},$fwdfwsettings{'USE_NAT'},$fwdfwsettings{$fwdfwsettings{'nat'}},$fwdfwsettings{'dnatport'},$fwdfwsettings{'nat'}"
+                                       eq "$configfwdfw{$key}[0],$configfwdfw{$key}[2],$configfwdfw{$key}[3],$configfwdfw{$key}[4],$configfwdfw{$key}[5],$configfwdfw{$key}[6],$configfwdfw{$key}[7],$configfwdfw{$key}[8],$configfwdfw{$key}[9],$configfwdfw{$key}[10],$configfwdfw{$key}[11],$configfwdfw{$key}[12],$configfwdfw{$key}[13],$configfwdfw{$key}[14],$configfwdfw{$key}[15],$configfwdfw{$key}[18],$configfwdfw{$key}[19],$configfwdfw{$key}[20],$configfwdfw{$key}[21],$configfwdfw{$key}[22],$configfwdfw{$key}[23],$configfwdfw{$key}[24],$configfwdfw{$key}[25],$configfwdfw{$key}[26],$configfwdfw{$key}[27],$configfwdfw{$key}[28],$configfwdfw{$key}[29],$configfwdfw{$key}[30],$configfwdfw{$key}[31]"){
+                                               $errormessage.=$Lang::tr{'fwdfw err ruleexists'};
+                                               if ($fwdfwsettings{'oldruleremark'} ne $fwdfwsettings{'ruleremark'} && $fwdfwsettings{'updatefwrule'} eq 'on' ){
+                                                       $errormessage='';
+                                               }elsif($fwdfwsettings{'oldruleremark'} ne $fwdfwsettings{'ruleremark'} && $fwdfwsettings{'updatefwrule'} eq 'on' && $fwdfwsettings{'ruleremark'} ne '' && !&validremark($fwdfwsettings{'ruleremark'})){
+                                                       $errormessage=$Lang::tr{'fwdfw err remark'}."<br>";
+                                               }
+                                               if ($fwdfwsettings{'oldruleremark'} eq $fwdfwsettings{'ruleremark'}){
+                                                       $fwdfwsettings{'nosave'} = 'on';
+                                               }
+                               }               
+                       }
+               }       
+               #check Rulepos on new Rule
+               if($fwdfwsettings{'rulepos'} > 0 && !$fwdfwsettings{'oldrulenumber'}){
+                       $fwdfwsettings{'oldrulenumber'}=$maxkey;
+                       foreach my $key (sort keys %configfwdfw){
+                               if (   "$fwdfwsettings{'RULE_ACTION'},$fwdfwsettings{'ACTIVE'},$fwdfwsettings{'grp1'},$fwdfwsettings{$fwdfwsettings{'grp1'}},$fwdfwsettings{'grp2'},$fwdfwsettings{$fwdfwsettings{'grp2'}},$fwdfwsettings{'USE_SRC_PORT'},$fwdfwsettings{'PROT'},$fwdfwsettings{'ICMP_TYPES'},$fwdfwsettings{'SRC_PORT'},$fwdfwsettings{'USESRV'},$fwdfwsettings{'TGT_PROT'},$fwdfwsettings{'ICMP_TGT'},$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}},$fwdfwsettings{'TIME'},$fwdfwsettings{'TIME_MON'},$fwdfwsettings{'TIME_TUE'},$fwdfwsettings{'TIME_WED'},$fwdfwsettings{'TIME_THU'},$fwdfwsettings{'TIME_FRI'},$fwdfwsettings{'TIME_SAT'},$fwdfwsettings{'TIME_SUN'},$fwdfwsettings{'TIME_FROM'},$fwdfwsettings{'TIME_TO'},$fwdfwsettings{'USE_NAT'},$fwdfwsettings{$fwdfwsettings{'nat'}},$fwdfwsettings{'dnatport'},$fwdfwsettings{'nat'}"
+                                       eq "$configfwdfw{$key}[0],$configfwdfw{$key}[2],$configfwdfw{$key}[3],$configfwdfw{$key}[4],$configfwdfw{$key}[5],$configfwdfw{$key}[6],$configfwdfw{$key}[7],$configfwdfw{$key}[8],$configfwdfw{$key}[9],$configfwdfw{$key}[10],$configfwdfw{$key}[11],$configfwdfw{$key}[12],$configfwdfw{$key}[13],$configfwdfw{$key}[14],$configfwdfw{$key}[15],$configfwdfw{$key}[18],$configfwdfw{$key}[19],$configfwdfw{$key}[20],$configfwdfw{$key}[21],$configfwdfw{$key}[22],$configfwdfw{$key}[23],$configfwdfw{$key}[24],$configfwdfw{$key}[25],$configfwdfw{$key}[26],$configfwdfw{$key}[27],$configfwdfw{$key}[28],$configfwdfw{$key}[29],$configfwdfw{$key}[30],$configfwdfw{$key}[31]"){
+                                               $errormessage.=$Lang::tr{'fwdfw err ruleexists'};
+                               }               
+                       }
+               }
+               #check if we just close a rule
+               if( $fwdfwsettings{'oldgrp1a'} eq  $fwdfwsettings{'grp1'} && $fwdfwsettings{'oldgrp1b'} eq $fwdfwsettings{$fwdfwsettings{'grp1'}} && $fwdfwsettings{'oldgrp2a'} eq  $fwdfwsettings{'grp2'} && $fwdfwsettings{'oldgrp2b'} eq $fwdfwsettings{$fwdfwsettings{'grp2'}} &&  $fwdfwsettings{'oldgrp3a'} eq $fwdfwsettings{'grp3'} && $fwdfwsettings{'oldgrp3b'} eq  $fwdfwsettings{$fwdfwsettings{'grp3'}} && $fwdfwsettings{'oldusesrv'} eq $fwdfwsettings{'USESRV'} && $fwdfwsettings{'oldruleremark'} eq $fwdfwsettings{'ruleremark'} && $fwdfwsettings{'oldruletype'} eq $fwdfwsettings{'chain'}) {
+                       if($fwdfwsettings{'nosave'} eq 'on' && $fwdfwsettings{'updatefwrule'} eq 'on'){
+                               $fwdfwsettings{'nosave2'} = 'on';
+                               $errormessage='';
+                       }
+               }
+               #increase counters
+               if (!$errormessage){
+                       &checkcounter($fwdfwsettings{'oldgrp1a'},$fwdfwsettings{'oldgrp1b'},$fwdfwsettings{'grp1'},$fwdfwsettings{$fwdfwsettings{'grp1'}});
+                       &checkcounter($fwdfwsettings{'oldgrp2a'},$fwdfwsettings{'oldgrp2b'},$fwdfwsettings{'grp2'},$fwdfwsettings{$fwdfwsettings{'grp2'}});
+                       if($fwdfwsettings{'oldusesrv'} eq '' &&  $fwdfwsettings{'USESRV'} eq 'ON'){
+                               &checkcounter(0,0,$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}});
+                       }elsif ($fwdfwsettings{'USESRV'} eq '' && $fwdfwsettings{'oldusesrv'} eq 'ON') {
+                               &checkcounter($fwdfwsettings{'oldgrp3a'},$fwdfwsettings{'oldgrp3b'},0,0);
+                       }elsif ($fwdfwsettings{'oldusesrv'} eq $fwdfwsettings{'USESRV'} && $fwdfwsettings{'oldgrp3b'} ne $fwdfwsettings{$fwdfwsettings{'grp3'}} && $fwdfwsettings{'updatefwrule'} eq 'on'){
+                               &checkcounter($fwdfwsettings{'oldgrp3a'},$fwdfwsettings{'oldgrp3b'},$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}});
+                       }
+                       if ($fwdfwsettings{'nobase'} eq 'on'){
+                               &checkcounter(0,0,$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}});
+                       }
+                       if ($fwdfwsettings{'nosave2'} ne 'on'){
+                               &saverule(\%configfwdfw,$configfwdfw);
+                       }
+               }
+       }
+       if ($errormessage){
+               &newrule;
+       }else{
+               if($fwdfwsettings{'nosave2'} ne 'on'){
+                       &General::firewall_config_changed();
+               }
+               &base;
+       }
+}
+if ($fwdfwsettings{'ACTION'} eq $Lang::tr{'fwdfw newrule'})
+{
+       &newrule;
+}
+if ($fwdfwsettings{'ACTION'} eq $Lang::tr{'fwdfw toggle'})
+{
+       my %togglehash=();
+       &General::readhasharray($fwdfwsettings{'config'}, \%togglehash);
+       foreach my $key (sort keys %togglehash){
+               if ($key eq $fwdfwsettings{'key'}){
+                       if ($togglehash{$key}[2] eq 'ON'){$togglehash{$key}[2]='';}else{$togglehash{$key}[2]='ON';}
+               }
+       }
+       &General::writehasharray($fwdfwsettings{'config'}, \%togglehash);
+       &General::firewall_config_changed();
+       &base;
+}
+if ($fwdfwsettings{'ACTION'} eq $Lang::tr{'fwdfw togglelog'})
+{
+       my %togglehash=();
+       &General::readhasharray($fwdfwsettings{'config'}, \%togglehash);
+       foreach my $key (sort keys %togglehash){
+               if ($key eq $fwdfwsettings{'key'}){
+                       if ($togglehash{$key}[17] eq 'ON'){$togglehash{$key}[17]='';}else{$togglehash{$key}[17]='ON';}
+               }
+       }
+       &General::writehasharray($fwdfwsettings{'config'}, \%togglehash);
+       &General::firewall_config_changed();
+       &base;
+}
+if ($fwdfwsettings{'ACTION'} eq $Lang::tr{'fwdfw reread'})
+{
+       &General::firewall_reload();
+       &base;
+}
+if ($fwdfwsettings{'ACTION'} eq 'editrule')
+{
+       $fwdfwsettings{'updatefwrule'}='on';
+       &newrule;
+}
+if ($fwdfwsettings{'ACTION'} eq 'deleterule')
+{
+       &deleterule;
+}
+if ($fwdfwsettings{'ACTION'} eq 'moveup')
+{
+       &pos_up;
+       &base;
+}
+if ($fwdfwsettings{'ACTION'} eq 'movedown')
+{
+       &pos_down;
+       &base;
+}
+if ($fwdfwsettings{'ACTION'} eq 'copyrule')
+{
+       $fwdfwsettings{'copyfwrule'}='on';
+       &newrule;
+}
+if ($fwdfwsettings{'ACTION'} eq '' or $fwdfwsettings{'ACTION'} eq 'reset')
+{
+       &base;
+}
+###  Functions  ####
+sub addrule
+{
+       &error;
+
+       &Header::openbox('100%', 'left',  $Lang::tr{'fwdfw menu'});
+       print <<END;
+               <form method="POST" action="">
+                       <table border='0' width="100%">
+                               <tr>
+                                       <td>
+                                               <input type='submit' name='ACTION' value='$Lang::tr{'fwdfw newrule'}'>
+                                       </td>
+                                       <td align="right">
+END
+
+       if (&General::firewall_needs_reload()) {
+               print <<END;
+                       <input type='submit' name='ACTION' value='$Lang::tr{'fwdfw reread'}' style='font-weight: bold; color: green;'>
+END
+       }
+
+       print <<END;
+                                       </td>
+                               </tr>
+                       </table>
+               </form>
+
+               <hr>
+END
+       &Header::closebox();
+       &viewtablerule;
+}
+sub base
+{
+       &hint;
+       &addrule;
+}
+sub changerule
+{
+       my $oldchain=shift;
+       $fwdfwsettings{'updatefwrule'}='';
+       $fwdfwsettings{'config'}=$oldchain;
+       $fwdfwsettings{'nobase'}='on';
+       &deleterule;
+       &checkcounter(0,0,$fwdfwsettings{'grp1'},$fwdfwsettings{$fwdfwsettings{'grp1'}});
+       &checkcounter(0,0,$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}});
+}
+sub checksource
+{
+       my ($ip,$subnet);
+       #check ip-address if manual
+       if ($fwdfwsettings{'src_addr'} eq $fwdfwsettings{$fwdfwsettings{'grp1'}} && $fwdfwsettings{'src_addr'} ne ''){
+               #check if ip with subnet
+               if ($fwdfwsettings{'src_addr'} =~ /^(.*?)\/(.*?)$/) {
+                       ($ip,$subnet)=split (/\//,$fwdfwsettings{'src_addr'});
+                       $subnet = &General::iporsubtocidr($subnet);
+                       $fwdfwsettings{'isip'}='on';
+               }
+               #check if only ip
+               if($fwdfwsettings{'src_addr'}=~/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/){
+                       $ip=$fwdfwsettings{'src_addr'};
+                       $subnet = '32';
+                       $fwdfwsettings{'isip'}='on';
+               }
+
+               if ($fwdfwsettings{'isip'} ne 'on'){
+                       if (&General::validmac($fwdfwsettings{'src_addr'})){
+                               $fwdfwsettings{'ismac'}='on';
+                       }
+               }
+               if ($fwdfwsettings{'isip'} eq 'on'){
+                       ##check if ip is valid
+                       if (! &General::validip($ip)){
+                               $errormessage.=$Lang::tr{'fwdfw err src_addr'}."<br>";
+                               return $errormessage;
+                       }
+                       #check and form valid IP
+                       $ip=&General::ip2dec($ip);
+                       $ip=&General::dec2ip($ip);
+                       #check if net or broadcast
+                       $fwdfwsettings{'src_addr'}="$ip/$subnet";
+                       if(!&General::validipandmask($fwdfwsettings{'src_addr'})){
+                               $errormessage.=$Lang::tr{'fwdfw err src_addr'}."<br>";
+                               return $errormessage;
+                       }
+               }
+               if ($fwdfwsettings{'isip'} ne 'on' && $fwdfwsettings{'ismac'} ne 'on'){
+                       $errormessage.=$Lang::tr{'fwdfw err src_addr'}."<br>";
+                       return $errormessage;
+               }
+       }elsif($fwdfwsettings{'src_addr'} eq $fwdfwsettings{$fwdfwsettings{'grp1'}} && $fwdfwsettings{'src_addr'} eq ''){
+               $errormessage.=$Lang::tr{'fwdfw err nosrcip'};
+               return $errormessage;
+       }
+
+       #check empty fields
+       if ($fwdfwsettings{$fwdfwsettings{'grp1'}} eq ''){ $errormessage.=$Lang::tr{'fwdfw err nosrc'}."<br>";}
+       if($fwdfwsettings{'USE_SRC_PORT'} eq 'ON' && ($fwdfwsettings{'PROT'} eq 'TCP' || $fwdfwsettings{'PROT'} eq 'UDP') && $fwdfwsettings{'SRC_PORT'} ne ''){
+               my @parts=split(",",$fwdfwsettings{'SRC_PORT'});
+               my @values=();
+               foreach (@parts){
+                       chomp($_);
+                       if ($_ =~ /^(\d+)\-(\d+)$/ || $_ =~ /^(\d+)\:(\d+)$/) {
+                               my $check;
+                               #change dashes with :
+                               $_=~ tr/-/:/;
+                               if ($_ eq "*") {
+                                       push(@values,"1:65535");
+                                       $check='on';
+                               }
+                               if ($_ =~ /^(\D)\:(\d+)$/ || $_ =~ /^(\D)\-(\d+)$/) {
+                                       push(@values,"1:$2");
+                                       $check='on';
+                               }
+                               if ($_ =~ /^(\d+)\:(\D)$/ || $_ =~ /^(\d+)\-(\D)$/ ) {
+                                       push(@values,"$1:65535");
+                                       $check='on'
+                               }
+                               $errormessage .= &General::validportrange($_, 'destination');
+                               if(!$check){
+                                       push (@values,$_);
+                               }
+                       }else{
+                               if (&General::validport($_)){
+                                       push (@values,$_);
+                               }else{
+                                       
+                               }
+                       }
+               }
+               $fwdfwsettings{'SRC_PORT'}=join("|",@values);
+       }
+       return $errormessage;
+}
+sub checktarget
+{
+       my ($ip,$subnet);
+       &General::readhasharray("$configsrv", \%customservice);
+       #check DNAT settings (has to be single Host and single Port or portrange)
+       if ($fwdfwsettings{'USE_NAT'} eq 'ON' && $fwdfwsettings{'nat'} eq 'dnat'){
+               if($fwdfwsettings{'grp2'} eq 'tgt_addr' || $fwdfwsettings{'grp2'} eq 'cust_host_tgt' || $fwdfwsettings{'grp2'} eq 'ovpn_host_tgt'){
+                       #check if manual ip is a single Host (if set)
+                       if ($fwdfwsettings{'grp2'} eq 'tgt_addr'){
+                               my @tmp= split (/\./,$fwdfwsettings{$fwdfwsettings{'grp2'}});
+                               my @tmp1= split ("/",$tmp[3]);
+                               if (($tmp1[0] eq "0") || ($tmp1[0] eq "255"))
+                               {
+                                       $errormessage=$Lang::tr{'fwdfw dnat error'}."<br>";
+                                       return $errormessage;
+                               }
+                       }
+                       #check if Port is a single Port or portrange
+                       if ($fwdfwsettings{'nat'} eq 'dnat' &&  $fwdfwsettings{'grp3'} eq 'TGT_PORT'){
+                               if(($fwdfwsettings{'PROT'} ne 'TCP'|| $fwdfwsettings{'PROT'} ne 'UDP') && $fwdfwsettings{'TGT_PORT'} eq ''){
+                                       $errormessage=$Lang::tr{'fwdfw target'}.": ".$Lang::tr{'fwdfw dnat porterr'}."<br>";
+                                       return $errormessage;
+                               }
+                               if (($fwdfwsettings{'PROT'} eq 'TCP'|| $fwdfwsettings{'PROT'} eq 'UDP') && $fwdfwsettings{'TGT_PORT'} ne '' && !&check_natport($fwdfwsettings{'TGT_PORT'})){
+                                       $errormessage=$Lang::tr{'fwdfw target'}.": ".$Lang::tr{'fwdfw dnat porterr'}."<br>";
+                                       return $errormessage;
+                               }
+                       }
+               }else{
+                       $errormessage=$Lang::tr{'fwdfw dnat error'}."<br>";
+                       return $errormessage;
+               }
+       }
+       if ($fwdfwsettings{'tgt_addr'} eq $fwdfwsettings{$fwdfwsettings{'grp2'}} && $fwdfwsettings{'tgt_addr'} ne ''){
+               #check if ip with subnet
+               if ($fwdfwsettings{'tgt_addr'} =~ /^(.*?)\/(.*?)$/) {
+                       ($ip,$subnet)=split (/\//,$fwdfwsettings{'tgt_addr'});
+                       $subnet = &General::iporsubtocidr($subnet);
+               }
+               #check if only ip
+               if($fwdfwsettings{'tgt_addr'}=~/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/){
+                       $ip=$fwdfwsettings{'tgt_addr'};
+                       $subnet='32';
+               }
+               #check if ip is valid
+               if (! &General::validip($ip)){
+                       $errormessage.=$Lang::tr{'fwdfw err tgt_addr'}."<br>";
+                       return $errormessage;
+               }
+               #check and form valid IP
+               $ip=&General::ip2dec($ip);
+               $ip=&General::dec2ip($ip);
+               $fwdfwsettings{'tgt_addr'}="$ip/$subnet";
+               if(!&General::validipandmask($fwdfwsettings{'tgt_addr'})){
+                       $errormessage.=$Lang::tr{'fwdfw err tgt_addr'}."<br>";
+                       return $errormessage;
+               }
+       }elsif($fwdfwsettings{'tgt_addr'} eq $fwdfwsettings{$fwdfwsettings{'grp2'}} && $fwdfwsettings{'tgt_addr'} eq ''){
+               $errormessage.=$Lang::tr{'fwdfw err notgtip'};
+               return $errormessage;
+       }
+       #check empty fields
+       if ($fwdfwsettings{$fwdfwsettings{'grp2'}} eq ''){ $errormessage.=$Lang::tr{'fwdfw err notgt'}."<br>";}
+       #check tgt services
+       if ($fwdfwsettings{'USESRV'} eq 'ON'){
+               if ($fwdfwsettings{'grp3'} eq 'cust_srv'){
+                       $fwdfwsettings{'TGT_PROT'}='';
+                       $fwdfwsettings{'ICMP_TGT'}='';
+                       $fwdfwsettings{'TGT_PORT'}='';
+               }
+               if ($fwdfwsettings{'grp3'} eq 'cust_srvgrp'){
+                       $fwdfwsettings{'TGT_PROT'}='';
+                       $fwdfwsettings{'ICMP_TGT'}='';
+                       $fwdfwsettings{'TGT_PORT'}='';
+                       #check target service
+                       if($fwdfwsettings{$fwdfwsettings{'grp3'}} eq ''){
+                               $errormessage.=$Lang::tr{'fwdfw err tgt_grp'};
+                       }
+               }
+               if ($fwdfwsettings{'grp3'} eq 'TGT_PORT'){
+                       if ($fwdfwsettings{'PROT'} eq 'TCP' || $fwdfwsettings{'PROT'} eq 'UDP'){
+                               if ($fwdfwsettings{'TGT_PORT'} ne ''){
+                                       if ($fwdfwsettings{'TGT_PORT'} =~ "," && $fwdfwsettings{'USE_NAT'} && $fwdfwsettings{'nat'} eq 'dnat') {
+                                               $errormessage=$Lang::tr{'fwdfw dnat porterr'}."<br>";
+                                               return $errormessage;
+                                       }
+                                       my @parts=split(",",$fwdfwsettings{'TGT_PORT'});
+                                       my @values=();
+                                       foreach (@parts){
+                                               chomp($_);
+                                               if ($_ =~ /^(\d+)\-(\d+)$/ || $_ =~ /^(\d+)\:(\d+)$/) {
+                                                       my $check;
+                                                       #change dashes with :
+                                                       $_=~ tr/-/:/;
+                                                       if ($_ eq "*") {
+                                                               push(@values,"1:65535");
+                                                               $check='on';
+                                                       }
+                                                       if ($_ =~ /^(\D)\:(\d+)$/ || $_ =~ /^(\D)\-(\d+)$/) {
+                                                               push(@values,"1:$2");
+                                                               $check='on';
+                                                       }
+                                                       if ($_ =~ /^(\d+)\:(\D)$/ || $_ =~ /^(\d+)\-(\D)$/) {
+                                                               push(@values,"$1:65535");
+                                                               $check='on'
+                                                       }
+                                                       $errormessage .= &General::validportrange($_, 'destination');
+                                                       if(!$check){
+                                                               push (@values,$_);
+                                                       }
+                                               }else{
+                                                       if (&General::validport($_)){
+                                                               push (@values,$_);
+                                                       }else{
+                                                       }
+                                               }
+                                       }
+                                       $fwdfwsettings{'TGT_PORT'}=join("|",@values);
+                               }
+                       }elsif ($fwdfwsettings{'PROT'} eq 'GRE'){
+                                       $fwdfwsettings{$fwdfwsettings{'grp3'}} = '';
+                                       $fwdfwsettings{'TGT_PORT'} = '';
+                                       $fwdfwsettings{'ICMP_TGT'} = '';
+                       }elsif ($fwdfwsettings{'PROT'} eq 'ESP'){
+                                       $fwdfwsettings{$fwdfwsettings{'grp3'}} = '';
+                                       $fwdfwsettings{'TGT_PORT'} = '';
+                                       $fwdfwsettings{'ICMP_TGT'}='';
+                       }elsif ($fwdfwsettings{'PROT'} eq 'AH'){
+                                       $fwdfwsettings{$fwdfwsettings{'grp3'}} = '';
+                                       $fwdfwsettings{'TGT_PORT'} = '';
+                                       $fwdfwsettings{'ICMP_TGT'}='';
+                       }elsif ($fwdfwsettings{'PROT'} eq 'ICMP'){
+                               $fwdfwsettings{$fwdfwsettings{'grp3'}} = '';
+                               $fwdfwsettings{'TGT_PORT'} = '';
+                       }
+               }
+       }
+       #check targetport
+       if ($fwdfwsettings{'USESRV'} ne 'ON'){
+               $fwdfwsettings{'grp3'}='';
+               $fwdfwsettings{$fwdfwsettings{'grp3'}}='';
+               $fwdfwsettings{'ICMP_TGT'}='';
+       }
+       #check timeframe
+       if($fwdfwsettings{'TIME'} eq 'ON'){
+               if($fwdfwsettings{'TIME_MON'} eq '' && $fwdfwsettings{'TIME_TUE'} eq '' && $fwdfwsettings{'TIME_WED'} eq '' && $fwdfwsettings{'TIME_THU'} eq '' && $fwdfwsettings{'TIME_FRI'} eq '' && $fwdfwsettings{'TIME_SAT'} eq '' && $fwdfwsettings{'TIME_SUN'} eq ''){
+                       $errormessage=$Lang::tr{'fwdfw err time'};
+                       return $errormessage;
+               }
+       }
+       return $errormessage;
+}
+sub check_natport
+{
+       my $val=shift;
+       if($fwdfwsettings{'USE_NAT'} eq 'ON' && $fwdfwsettings{'nat'} eq 'dnat' && $fwdfwsettings{'dnatport'} ne ''){
+               if ($fwdfwsettings{'dnatport'} =~ /^(\d+)\-(\d+)$/) {
+                       $fwdfwsettings{'dnatport'} =~ tr/-/:/;
+                       if ($fwdfwsettings{'dnatport'} eq "*") {
+                               $fwdfwsettings{'dnatport'}="1:65535";
+                       }
+                       if ($fwdfwsettings{'dnatport'} =~ /^(\D)\:(\d+)$/) {
+                               $fwdfwsettings{'dnatport'} = "1:$2";
+                       }
+                       if ($fwdfwsettings{'dnatport'} =~ /^(\d+)\:(\D)$/) {
+                               $fwdfwsettings{'dnatport'} ="$1:65535";
+                       }
+               }
+               return 1;
+       }
+       if ($val =~ "," || $val>65536 || $val<0){
+               return 0;
+       }
+       return 1;
+}
+sub checkrule
+{
+       #check valid port for NAT
+       if($fwdfwsettings{'USE_NAT'} eq 'ON'){
+               #if no port is given in nat area, take target host port
+               if($fwdfwsettings{'nat'} eq 'dnat' && $fwdfwsettings{'grp3'} eq 'TGT_PORT' && $fwdfwsettings{'dnatport'} eq ''){$fwdfwsettings{'dnatport'}=$fwdfwsettings{'TGT_PORT'};}
+               #check if port given in nat area is a single valid port or portrange
+               if($fwdfwsettings{'nat'} eq 'dnat' && $fwdfwsettings{'TGT_PORT'} ne '' && !&check_natport($fwdfwsettings{'dnatport'})){
+                       $errormessage=$Lang::tr{'fwdfw target'}.": ".$Lang::tr{'fwdfw dnat porterr'}."<br>";
+               }elsif($fwdfwsettings{'USESRV'} eq 'ON' && $fwdfwsettings{'grp3'} eq 'cust_srv'){
+                       my $custsrvport;
+                       #get servcie Protocol and Port
+                       foreach my $key (sort keys %customservice){
+                               if($fwdfwsettings{$fwdfwsettings{'grp3'}} eq $customservice{$key}[0]){
+                                       if ($customservice{$key}[2] ne 'TCP' && $customservice{$key}[2] ne 'UDP'){
+                                               $errormessage=$Lang::tr{'fwdfw target'}.": ".$Lang::tr{'fwdfw dnat porterr'}."<br>";
+                                       }
+                                       $custsrvport= $customservice{$key}[1];
+                               }
+                       }
+                       if($fwdfwsettings{'nat'} eq 'dnat' && $fwdfwsettings{'dnatport'} eq ''){$fwdfwsettings{'dnatport'}=$custsrvport;}
+               }
+               #check if DNAT port is multiple
+               if($fwdfwsettings{'nat'} eq 'dnat' && $fwdfwsettings{'dnatport'} ne ''){
+                       my @parts=split(",",$fwdfwsettings{'dnatport'});
+                                       my @values=();
+                                       foreach (@parts){
+                                               chomp($_);
+                                               if ($_ =~ /^(\d+)\-(\d+)$/ || $_ =~ /^(\d+)\:(\d+)$/) {
+                                                       my $check;
+                                                       #change dashes with :
+                                                       $_=~ tr/-/:/;
+                                                       if ($_ eq "*") {
+                                                               push(@values,"1:65535");
+                                                               $check='on';
+                                                       }
+                                                       if ($_ =~ /^(\D)\:(\d+)$/ || $_ =~ /^(\D)\-(\d+)$/) {
+                                                               push(@values,"1:$2");
+                                                               $check='on';
+                                                       }
+                                                       if ($_ =~ /^(\d+)\:(\D)$/ || $_ =~ /^(\d+)\-(\D)$/) {
+                                                               push(@values,"$1:65535");
+                                                               $check='on'
+                                                       }
+                                                       $errormessage .= &General::validportrange($_, 'destination');
+                                                       if(!$check){
+                                                               push (@values,$_);
+                                                       }
+                                               }else{
+                                                       if (&General::validport($_)){
+                                                               push (@values,$_);
+                                                       }else{
+                                                               
+                                                       }
+                                               }
+                                       }
+                                       $fwdfwsettings{'dnatport'}=join("|",@values);
+               }
+       }
+       #check valid remark
+       if ($fwdfwsettings{'ruleremark'} ne '' && !&validremark($fwdfwsettings{'ruleremark'})){
+               $errormessage.=$Lang::tr{'fwdfw err remark'}."<br>";
+       }
+       #check if source and target identical
+       if ($fwdfwsettings{$fwdfwsettings{'grp1'}} eq $fwdfwsettings{$fwdfwsettings{'grp2'}} && $fwdfwsettings{$fwdfwsettings{'grp1'}} ne 'ALL'){
+               $errormessage=$Lang::tr{'fwdfw err same'};
+               return $errormessage;
+       }
+       #get source and targetip address if possible
+       my ($sip,$scidr,$tip,$tcidr);
+       ($sip,$scidr)=&get_ip("src","grp1");
+       ($tip,$tcidr)=&get_ip("tgt","grp2");
+       #check same iprange in source and target
+       if ($sip ne '' && $scidr ne '' && $tip ne '' && $tcidr ne ''){
+               my $networkip1=&General::getnetworkip($sip,$scidr);
+               my $networkip2=&General::getnetworkip($tip,$tcidr);
+               if ($scidr gt $tcidr){
+                       if ( &General::IpInSubnet($networkip1,$tip,&General::iporsubtodec($tcidr))){
+                               $errormessage.=$Lang::tr{'fwdfw err samesub'};
+                       }
+               }elsif($scidr eq $tcidr && $scidr eq '32'){
+                       my ($sbyte1,$sbyte2,$sbyte3,$sbyte4)=split(/\./,$networkip1);
+                       my ($tbyte1,$tbyte2,$tbyte3,$tbyte4)=split(/\./,$networkip2);
+                               if ($sbyte1 eq $tbyte1 && $sbyte2 eq $tbyte2 && $sbyte3 eq $tbyte3){
+                                       $hint=$Lang::tr{'fwdfw hint ip1'}."<br>";
+                                       $hint.=$Lang::tr{'fwdfw hint ip2'}." Source: $networkip1/$scidr Target: $networkip2/$tcidr<br>";
+                               }
+               }else{
+                       if ( &General::IpInSubnet($networkip2,$sip,&General::iporsubtodec($scidr)) ){
+                       $errormessage.=$Lang::tr{'fwdfw err samesub'};
+                       }
+               }
+       }
+       #When using source- or targetport, the protocol has to be TCP or UDP
+       if (($fwdfwsettings{'USESRV'} eq 'ON' || $fwdfwsettings{'USE_SRC_PORT'} eq 'ON') && ($fwdfwsettings{'SRC_PORT'} ne '' || $fwdfwsettings{'TGT_PORT'} ne '') && ($fwdfwsettings{'PROT'} ne 'TCP' && $fwdfwsettings{'PROT'} ne 'UDP')){
+               $errormessage.=$Lang::tr{'fwdfw err prot_port1'};
+               return;
+       }
+       #when icmp selected, no targetport allowed
+       if (($fwdfwsettings{'PROT'} ne '' && $fwdfwsettings{'PROT'} ne 'TCP' && $fwdfwsettings{'PROT'} ne 'UDP' && $fwdfwsettings{'PROT'} ne 'template') && ($fwdfwsettings{'USESRV'} eq 'ON' || $fwdfwsettings{'USE_SRC_PORT'} eq 'ON')){
+               $errormessage.=$Lang::tr{'fwdfw err prot_port'};
+               return;
+       }
+       #change protocol if prot not equal dest single service
+       if ($fwdfwsettings{'grp3'} eq 'cust_srv'){
+               foreach my $key (sort keys %customservice){
+                       if($customservice{$key}[0] eq $fwdfwsettings{$fwdfwsettings{'grp3'}}){
+                               if ($customservice{$key}[2] ne $fwdfwsettings{'PROT'}){
+                                       $fwdfwsettings{'PROT'} = $customservice{$key}[2];
+                                       last;
+                               }
+                       }
+               }
+       }
+       #check source and destination protocol if source manual and dest servicegroup
+       if ($fwdfwsettings{'grp3'} eq 'cust_srvgrp'){
+               $fwdfwsettings{'PROT'} = '';
+       }
+       #ATTENTION: $fwdfwsetting{'TGT_PROT'} deprecated since 30.09.2013
+       $fwdfwsettings{'TGT_PROT'}=''; #Set field empty (deprecated)
+       #Check ICMP Types
+       if ($fwdfwsettings{'PROT'} eq 'ICMP'){
+               $fwdfwsettings{'USE_SRC_PORT'}='';
+               $fwdfwsettings{'SRC_PORT'}='';
+               #$fwdfwsettings{'USESRV'}='';
+               $fwdfwsettings{'TGT_PORT'}='';
+               &General::readhasharray("${General::swroot}/fwhosts/icmp-types", \%icmptypes);
+               foreach my $key (keys %icmptypes){
+                       if($fwdfwsettings{'ICMP_TYPES'} eq "$icmptypes{$key}[0] ($icmptypes{$key}[1])"){
+                               $fwdfwsettings{'ICMP_TYPES'}="$icmptypes{$key}[0]";
+                       }
+               }
+       }elsif($fwdfwsettings{'PROT'} eq 'GRE'){
+               $fwdfwsettings{'USE_SRC_PORT'}='';
+               $fwdfwsettings{'SRC_PORT'}='';
+               $fwdfwsettings{'ICMP_TYPES'}='';
+               $fwdfwsettings{'USESRV'}='';
+               $fwdfwsettings{'TGT_PORT'}='';
+       }elsif($fwdfwsettings{'PROT'} eq 'ESP'){
+               $fwdfwsettings{'USE_SRC_PORT'}='';
+               $fwdfwsettings{'SRC_PORT'}='';
+               $fwdfwsettings{'ICMP_TYPES'}='';
+               $fwdfwsettings{'USESRV'}='';
+               $fwdfwsettings{'TGT_PORT'}='';
+       }elsif($fwdfwsettings{'PROT'} eq 'AH'){
+               $fwdfwsettings{'USE_SRC_PORT'}='';
+               $fwdfwsettings{'SRC_PORT'}='';
+               $fwdfwsettings{'ICMP_TYPES'}='';
+               $fwdfwsettings{'USESRV'}='';
+               $fwdfwsettings{'TGT_PORT'}='';
+       }elsif($fwdfwsettings{'PROT'} eq 'IGMP'){
+               $fwdfwsettings{'USE_SRC_PORT'}='';
+               $fwdfwsettings{'SRC_PORT'}='';
+               $fwdfwsettings{'ICMP_TYPES'}='';
+               $fwdfwsettings{'USESRV'}='';
+               $fwdfwsettings{'TGT_PORT'}='';
+       }elsif($fwdfwsettings{'PROT'} eq 'IPv6'){
+               $fwdfwsettings{'USE_SRC_PORT'}='';
+               $fwdfwsettings{'SRC_PORT'}='';
+               $fwdfwsettings{'ICMP_TYPES'}='';
+               $fwdfwsettings{'USESRV'}='';
+               $fwdfwsettings{'TGT_PORT'}='';
+       }elsif($fwdfwsettings{'PROT'} eq 'IPIP'){
+               $fwdfwsettings{'USE_SRC_PORT'}='';
+               $fwdfwsettings{'SRC_PORT'}='';
+               $fwdfwsettings{'ICMP_TYPES'}='';
+               $fwdfwsettings{'USESRV'}='';
+               $fwdfwsettings{'TGT_PORT'}='';
+       }elsif($fwdfwsettings{'PROT'} ne 'TCP' && $fwdfwsettings{'PROT'} ne 'UDP' && $fwdfwsettings{'PROT'} ne 'ICMP'){
+               $fwdfwsettings{'ICMP_TYPES'}='';
+               $fwdfwsettings{'PROT'} = '';
+       }elsif($fwdfwsettings{'PROT'} ne 'ICMP'){
+               $fwdfwsettings{'ICMP_TYPES'}='';
+       }
+}
+sub checkcounter
+{
+       my ($base1,$val1,$base2,$val2) = @_;
+               
+       if($base1 eq 'cust_net_src' || $base1 eq 'cust_net_tgt'){
+               &dec_counter($confignet,\%customnetwork,$val1);
+       }elsif($base1 eq 'cust_host_src' || $base1 eq 'cust_host_tgt'){
+               &dec_counter($confighost,\%customhost,$val1);
+       }elsif($base1 eq 'cust_grp_src' || $base1 eq 'cust_grp_tgt'){
+               &dec_counter($configgrp,\%customgrp,$val1);
+       }elsif($base1 eq 'cust_srv'){
+               &dec_counter($configsrv,\%customservice,$val1);
+       }elsif($base1 eq 'cust_srvgrp'){
+               &dec_counter($configsrvgrp,\%customservicegrp,$val1);   
+       }
+
+       if($base2 eq 'cust_net_src' || $base2 eq 'cust_net_tgt'){
+               &inc_counter($confignet,\%customnetwork,$val2);
+       }elsif($base2 eq 'cust_host_src' || $base2 eq 'cust_host_tgt'){
+               &inc_counter($confighost,\%customhost,$val2);
+       }elsif($base2 eq 'cust_grp_src' || $base2 eq 'cust_grp_tgt'){
+               &inc_counter($configgrp,\%customgrp,$val2);
+       }elsif($base2 eq 'cust_srv'){
+               &inc_counter($configsrv,\%customservice,$val2);
+       }elsif($base2 eq 'cust_srvgrp'){
+               &inc_counter($configsrvgrp,\%customservicegrp,$val2);   
+       }
+}
+sub checkvpn
+{
+       my $ip=shift;
+       #Test if manual IP is part of static OpenVPN networks
+       &General::readhasharray("$configccdnet", \%ccdnet);
+       foreach my $key (sort keys %ccdnet){
+               my ($vpnip,$vpnsubnet) = split ("/",$ccdnet{$key}[1]);
+               my $sub=&General::iporsubtodec($vpnsubnet);
+               if (&General::IpInSubnet($ip,$vpnip,$sub)){
+                       return 0;
+               }
+       }
+       # A Test if manual ip is part of dynamic openvpn subnet is made in getcolor
+       # because if one creates a custom host with the ip, we need to check the color there!
+       # It does not make sense to check this here
+       
+       # Test if manual IP is part of an OpenVPN N2N subnet does also not make sense here
+       # Is also checked in getcolor
+       
+       # Test if manual ip is part of an IPsec Network is also checked in getcolor
+       return 1;
+}
+sub checkvpncolor
+{
+       
+}
+sub deleterule
+{
+       my %delhash=();
+       &General::readhasharray($fwdfwsettings{'config'}, \%delhash);
+       foreach my $key (sort {$a <=> $b} keys %delhash){
+               if ($key == $fwdfwsettings{'key'}){
+                       #check hosts/net and groups
+                       &checkcounter($delhash{$key}[3],$delhash{$key}[4],,);
+                       &checkcounter($delhash{$key}[5],$delhash{$key}[6],,);
+                       #check services and groups
+                       if ($delhash{$key}[11] eq 'ON'){
+                               &checkcounter($delhash{$key}[14],$delhash{$key}[15],,);
+                       }
+               }
+               if ($key >= $fwdfwsettings{'key'}) {
+                       my $next = $key + 1;
+                       if (exists $delhash{$next}) {
+                               foreach my $i (0 .. $#{$delhash{$next}}) {
+                                       $delhash{$key}[$i] = $delhash{$next}[$i];
+                               }
+                       }
+               }
+       }
+       # Remove the very last entry.
+       my $last_key = (sort {$a <=> $b} keys %delhash)[-1];
+       delete $delhash{$last_key};
+
+       &General::writehasharray($fwdfwsettings{'config'}, \%delhash);
+       &General::firewall_config_changed();
+
+       if($fwdfwsettings{'nobase'} ne 'on'){
+               &base;
+       }
+}
+sub disable_rule
+{
+       my $key1=shift;
+       &General::readhasharray("$configfwdfw", \%configfwdfw);
+       foreach my $key (sort keys %configfwdfw){
+                       if ($key eq $key1 ){
+                       if ($configfwdfw{$key}[2] eq 'ON'){$configfwdfw{$key}[2]='';}
+               }
+       }
+       &General::writehasharray("$configfwdfw", \%configfwdfw);
+       &General::firewall_config_changed();
+}
+sub dec_counter
+{
+       my $config=shift;
+       my %hash=%{(shift)};
+       my $val=shift;
+       my $pos;
+       &General::readhasharray($config, \%hash);
+       foreach my $key (sort { uc($hash{$a}[0]) cmp uc($hash{$b}[0]) }  keys %hash){
+               if($hash{$key}[0] eq $val){
+                       $pos=$#{$hash{$key}};
+                       $hash{$key}[$pos] = $hash{$key}[$pos]-1;
+               }
+       }
+       &General::writehasharray($config, \%hash);
+}
+sub error
+{
+       if ($errormessage) {
+               &Header::openbox('100%', 'left', $Lang::tr{'error messages'});
+               print "<class name='base'>$errormessage\n";
+               print "&nbsp;</class>\n";
+               &Header::closebox();
+               print"<hr>";
+       }
+}
+sub fillselect
+{
+       my %hash=%{(shift)};
+       my $val=shift;
+       my $key;
+       foreach my $key (sort { ncmp($hash{$a}[0],$hash{$b}[0]) }  keys %hash){
+               if($hash{$key}[0] eq $val){
+                       print"<option value='$hash{$key}[0]' selected>$hash{$key}[0]</option>";
+               }else{
+                       print"<option value='$hash{$key}[0]'>$hash{$key}[0]</option>";
+               }
+       }
+}
+sub gen_dd_block
+{
+       my $srctgt = shift;
+       my $grp=shift;
+       my $helper='';
+       my $show='';
+       $checked{'grp1'}{$fwdfwsettings{'grp1'}}                                = 'CHECKED';
+       $checked{'grp2'}{$fwdfwsettings{'grp2'}}                                = 'CHECKED';
+       $checked{'grp3'}{$fwdfwsettings{'grp3'}}                                = 'CHECKED';
+       $checked{'USE_SRC_PORT'}{$fwdfwsettings{'USE_SRC_PORT'}} = 'CHECKED';
+       $checked{'USESRV'}{$fwdfwsettings{'USESRV'}}                    = 'CHECKED';
+       $checked{'ACTIVE'}{$fwdfwsettings{'ACTIVE'}}                    = 'CHECKED';
+       $checked{'LOG'}{$fwdfwsettings{'LOG'}}                                  = 'CHECKED';
+       $checked{'TIME'}{$fwdfwsettings{'TIME'}}                                = 'CHECKED';
+       $checked{'TIME_MON'}{$fwdfwsettings{'TIME_MON'}}                = 'CHECKED';
+       $checked{'TIME_TUE'}{$fwdfwsettings{'TIME_TUE'}}                = 'CHECKED';
+       $checked{'TIME_WED'}{$fwdfwsettings{'TIME_WED'}}                = 'CHECKED';
+       $checked{'TIME_THU'}{$fwdfwsettings{'TIME_THU'}}                = 'CHECKED';
+       $checked{'TIME_FRI'}{$fwdfwsettings{'TIME_FRI'}}                = 'CHECKED';
+       $checked{'TIME_SAT'}{$fwdfwsettings{'TIME_SAT'}}                = 'CHECKED';
+       $checked{'TIME_SUN'}{$fwdfwsettings{'TIME_SUN'}}                = 'CHECKED';
+       $selected{'TIME_FROM'}{$fwdfwsettings{'TIME_FROM'}}             = 'selected';
+       $selected{'TIME_TO'}{$fwdfwsettings{'TIME_TO'}}                 = 'selected';
+       $selected{'ipfire'}{$fwdfwsettings{$fwdfwsettings{'grp1'}}} ='selected';
+       $selected{'ipfire'}{$fwdfwsettings{$fwdfwsettings{'grp2'}}} ='selected';
+print<<END;
+               <table width='100%' border='0'>
+               <tr><td width='50%' valign='top'>
+               <table width='100%' border='0'>
+               <tr><td width='1%'><input type='radio' name='$grp' id='std_net_$srctgt' value='std_net_$srctgt' $checked{$grp}{'std_net_'.$srctgt}></td><td>$Lang::tr{'fwhost stdnet'}</td><td align='right'><select name='std_net_$srctgt' style='width:200px;'>
+END
+       foreach my $network (sort keys %defaultNetworks)
+               {
+                       next if($defaultNetworks{$network}{'NAME'} eq "RED" && $srctgt eq 'src');
+                       next if($defaultNetworks{$network}{'NAME'} eq "IPFire");
+                       print "<option value='$defaultNetworks{$network}{'NAME'}'";
+                       print " selected='selected'" if ($fwdfwsettings{$fwdfwsettings{$grp}} eq $defaultNetworks{$network}{'NAME'});
+                       my $defnet="$defaultNetworks{$network}{'NAME'}_NETADDRESS";
+                       my $defsub="$defaultNetworks{$network}{'NAME'}_NETMASK";
+                       my $defsub1=&General::subtocidr($ifaces{$defsub});
+                       $ifaces{$defnet}='' if ($defaultNetworks{$network}{'NAME'} eq 'RED');
+                       if ($ifaces{$defnet}){
+                               print ">$network ($ifaces{$defnet}/$defsub1)</option>";
+                       }else{
+                               print ">$network</option>";
+                       }
+               }
+       print"</select></td></tr>";
+       #custom networks
+       if (! -z $confignet || $optionsfw{'SHOWDROPDOWN'} eq 'on'){
+               print"<tr><td><input type='radio' name='$grp' id='cust_net_$srctgt' value='cust_net_$srctgt' $checked{$grp}{'cust_net_'.$srctgt}></td><td>$Lang::tr{'fwhost cust net'}</td><td align='right'><select name='cust_net_$srctgt' style='width:200px;'>";
+               &fillselect(\%customnetwork,$fwdfwsettings{$fwdfwsettings{$grp}});
+               print"</select></td>";
+       }
+       #custom hosts
+       if (! -z $confighost || $optionsfw{'SHOWDROPDOWN'} eq 'on'){
+               print"<tr><td><input type='radio' name='$grp' id='cust_host_$srctgt' value='cust_host_$srctgt' $checked{$grp}{'cust_host_'.$srctgt}></td><td>$Lang::tr{'fwhost cust addr'}</td><td align='right'><select name='cust_host_$srctgt' style='width:200px;'>";
+               &fillselect(\%customhost,$fwdfwsettings{$fwdfwsettings{$grp}});
+               print"</select></td>";
+       }
+       #custom groups
+       if (! -z $configgrp || $optionsfw{'SHOWDROPDOWN'} eq 'on'){
+               print"<tr><td valign='top'><input type='radio' name='$grp' id='cust_grp_$srctgt' value='cust_grp_$srctgt' $checked{$grp}{'cust_grp_'.$srctgt}></td><td >$Lang::tr{'fwhost cust grp'}</td><td align='right'><select name='cust_grp_$srctgt' style='width:200px;'>";
+               foreach my $key (sort { ncmp($customgrp{$a}[0],$customgrp{$b}[0]) } keys %customgrp) {
+                       if($helper ne $customgrp{$key}[0]){
+                               print"<option ";
+                               print "selected='selected' " if ($fwdfwsettings{$fwdfwsettings{$grp}} eq $customgrp{$key}[0]);
+                               print ">$customgrp{$key}[0]</option>";
+                       }
+                       $helper=$customgrp{$key}[0];
+               }
+               print"</select></td>";
+       }
+       #End left table. start right table (vpn)
+       print"</tr></table></td><td valign='top'><table width='100%' border='0'><tr>";
+       # CCD networks
+       if( ! -z $configccdnet || $optionsfw{'SHOWDROPDOWN'} eq 'on'){
+               print"<td width='1%'><input type='radio' name='$grp' id='ovpn_net_$srctgt' value='ovpn_net_$srctgt'  $checked{$grp}{'ovpn_net_'.$srctgt}></td><td nowrap='nowrap' width='16%'>$Lang::tr{'fwhost ccdnet'}</td><td nowrap='nowrap' width='1%' align='right'><select name='ovpn_net_$srctgt' style='width:200px;'>";
+               &fillselect(\%ccdnet,$fwdfwsettings{$fwdfwsettings{$grp}});
+               print"</select></td></tr>";
+       }
+       #OVPN CCD Hosts
+       foreach my $key (sort { ncmp($ccdhost{$a}[0],$ccdhost{$b}[0]) } keys %ccdhost){
+               if ($ccdhost{$key}[33] ne '' ){
+                       print"<tr><td width='1%'><input type='radio' name='$grp' id='ovpn_host_$srctgt' value='ovpn_host_$srctgt' $checked{$grp}{'ovpn_host_'.$srctgt}></td><td nowrap='nowrap' width='16%'>$Lang::tr{'fwhost ccdhost'}</td><td nowrap='nowrap' width='1%' align='right'><select name='ovpn_host_$srctgt' style='width:200px;'>" if ($show eq '');
+                       $show='1';
+                       print "<option value='$ccdhost{$key}[1]'";
+                       print "selected='selected'" if ($fwdfwsettings{$fwdfwsettings{$grp}} eq $ccdhost{$key}[1]);
+                       print ">$ccdhost{$key}[1]</option>";
+               }
+       }
+       if($optionsfw{'SHOWDROPDOWN'} eq 'on' && $show eq ''){
+               print"<tr><td width='1%'><input type='radio' name='$grp' id='ovpn_host_$srctgt' value='ovpn_host_$srctgt' $checked{$grp}{'ovpn_host_'.$srctgt}></td><td nowrap='nowrap' width='16%'>$Lang::tr{'fwhost ccdhost'}</td><td nowrap='nowrap' width='1%' align='right'><select name='ovpn_host_$srctgt' style='width:200px;'></select></td></tr>" ;
+       }
+       if ($show eq '1'){$show='';print"</select></td></tr>";}
+       #OVPN N2N
+       foreach my $key (sort { ncmp($ccdhost{$a}[1],$ccdhost{$b}[1]) } keys %ccdhost){
+               if ($ccdhost{$key}[3] eq 'net'){
+                       print"<tr><td width='1%'><input type='radio' name='$grp' id='ovpn_n2n_$srctgt' value='ovpn_n2n_$srctgt' $checked{$grp}{'ovpn_n2n_'.$srctgt}></td><td nowrap='nowrap' width='16%'>$Lang::tr{'fwhost ovpn_n2n'}:</td><td nowrap='nowrap' width='1%' align='right'><select name='ovpn_n2n_$srctgt' style='width:200px;'>" if ($show eq '');
+                       $show='1';
+                       print "<option value='$ccdhost{$key}[1]'";
+                       print "selected='selected'" if ($fwdfwsettings{$fwdfwsettings{$grp}} eq $ccdhost{$key}[1]);
+                       print ">$ccdhost{$key}[1]</option>";
+               }
+       }
+       if($optionsfw{'SHOWDROPDOWN'} eq 'on' && $show eq ''){
+               print"<tr><td width='1%'><input type='radio' name='$grp' id='ovpn_n2n_$srctgt' value='ovpn_n2n_$srctgt' $checked{$grp}{'ovpn_n2n_'.$srctgt}></td><td nowrap='nowrap' width='16%'>$Lang::tr{'fwhost ovpn_n2n'}</td><td nowrap='nowrap' width='1%' align='right'><select name='ovpn_n2n_$srctgt' style='width:200px;'></select></td></tr>" ;
+       }
+       if ($show eq '1'){$show='';print"</select></td></tr>";}
+       #IPsec netze
+       foreach my $key (sort { ncmp($ipsecconf{$a}[1],$ipsecconf{$b}[1]) } keys %ipsecconf) {
+               if ($ipsecconf{$key}[3] eq 'net' || $optionsfw{'SHOWDROPDOWN'} eq 'on'){
+                       print"<tr><td valign='top'><input type='radio' name='$grp' value='ipsec_net_$srctgt' $checked{$grp}{'ipsec_net_'.$srctgt}></td><td >$Lang::tr{'fwhost ipsec net'}</td><td align='right'><select name='ipsec_net_$srctgt' style='width:200px;'>" if ($show eq '');
+                       $show='1';
+                       print "<option ";
+                       print "selected='selected'" if ($fwdfwsettings{$fwdfwsettings{$grp}} eq $ipsecconf{$key}[1]);
+                       print ">$ipsecconf{$key}[1]</option>";
+               }
+       }
+       if($optionsfw{'SHOWDROPDOWN'} eq 'on' && $show eq ''){
+               print"<tr><td valign='top'><input type='radio' name='$grp' id='ipsec_net_$srctgt' value='ipsec_net_$srctgt' $checked{$grp}{'ipsec_net_'.$srctgt}></td><td >$Lang::tr{'fwhost ipsec net'}</td><td align='right'><select name='ipsec_net_$srctgt' style='width:200px;'><select></td></tr>";
+       }
+       if ($show eq '1'){$show='';print"</select></td></tr>";}
+       
+       print"</table>";
+       print"</td></tr></table><br>";
+}
+sub get_ip
+{
+       my $val=shift;
+       my $grp =shift;
+       my $a;
+       my $b;
+       &General::readhash("/var/ipfire/ethernet/settings", \%netsettings);
+       if ($fwdfwsettings{$grp} ne $Lang::tr{'fwhost any'}){
+               if ($fwdfwsettings{$grp} eq $val.'_addr'){
+                       ($a,$b)   = split (/\//, $fwdfwsettings{$fwdfwsettings{$grp}});
+               }elsif($fwdfwsettings{$grp} eq 'std_net_'.$val){
+                       if ($fwdfwsettings{$fwdfwsettings{$grp}} =~ /Gr/i){
+                               $a=$netsettings{'GREEN_NETADDRESS'};
+                               $b=&General::iporsubtocidr($netsettings{'GREEN_NETMASK'});
+                       }elsif($fwdfwsettings{$fwdfwsettings{$grp}} =~ /Ora/i){
+                               $a=$netsettings{'ORANGE_NETADDRESS'};
+                               $b=&General::iporsubtocidr($netsettings{'ORANGE_NETMASK'});
+                       }elsif($fwdfwsettings{$fwdfwsettings{$grp}} =~ /Bl/i){
+                               $a=$netsettings{'BLUE_NETADDRESS'};
+                               $b=&General::iporsubtocidr($netsettings{'BLUE_NETMASK'});
+                       }elsif($fwdfwsettings{$fwdfwsettings{$grp}} =~ /OpenVPN/i){
+                               &General::readhash("$configovpn",\%ovpnsettings);
+                               ($a,$b)   = split (/\//, $ovpnsettings{'DOVPN_SUBNET'});
+                               $b=&General::iporsubtocidr($b);
+                       }
+               }elsif($fwdfwsettings{$grp} eq 'cust_net_'.$val){
+                       &General::readhasharray("$confignet", \%customnetwork);
+                       foreach my $key (keys %customnetwork){
+                               if($customnetwork{$key}[0] eq $fwdfwsettings{$fwdfwsettings{$grp}}){
+                                       $a=$customnetwork{$key}[1];
+                                       $b=&General::iporsubtocidr($customnetwork{$key}[2]);
+                               }
+                       }
+               }elsif($fwdfwsettings{$grp} eq 'cust_host_'.$val){
+                       &General::readhasharray("$confighost", \%customhost);
+                       foreach my $key (keys %customhost){
+                               if($customhost{$key}[0] eq $fwdfwsettings{$fwdfwsettings{$grp}}){
+                                       if ($customhost{$key}[1] eq 'ip'){
+                                               ($a,$b)=split (/\//,$customhost{$key}[2]);
+                                               $b=&General::iporsubtocidr($b);
+                                       }else{
+                                               if ($grp eq 'grp2'){
+                                                       $errormessage=$Lang::tr{'fwdfw err tgt_mac'};
+                                               }
+                                       }
+                               }
+                       }
+               }
+       }
+       return $a,$b;
+}
+sub get_name
+{
+       my $val=shift;
+       &General::setup_default_networks(\%defaultNetworks);
+       foreach my $network (sort keys %defaultNetworks)
+       {
+               return "$network" if ($val eq $defaultNetworks{$network}{'NAME'});
+       }
+}
+sub getsrcport
+{
+       my %hash=%{(shift)};
+       my $key=shift;
+       if($hash{$key}[7] eq 'ON' && $hash{$key}[10]){
+               $hash{$key}[10]=~ s/\|/,/g;
+               print": $hash{$key}[10]";
+       }elsif($hash{$key}[7] eq 'ON' && $hash{$key}[8] eq 'ICMP'){
+               print": <br>$hash{$key}[9] ";
+       }
+}
+sub gettgtport
+{
+       my %hash=%{(shift)};
+       my $key=shift;
+       my $service;
+       my $prot;
+       if($hash{$key}[11] eq 'ON' && $hash{$key}[12] ne 'ICMP'){
+               if($hash{$key}[14] eq 'cust_srv'){
+                       &General::readhasharray("$configsrv", \%customservice);
+                       foreach my $i (sort keys %customservice){
+                               if($customservice{$i}[0] eq $hash{$key}[15]){
+                                       $service = $customservice{$i}[0];
+                               }
+                       }
+               }elsif($hash{$key}[14] eq 'cust_srvgrp'){
+                       $service=$hash{$key}[15];
+               }elsif($hash{$key}[14] eq 'TGT_PORT'){
+                       $hash{$key}[15]=~ s/\|/,/g;
+                       $service=$hash{$key}[15];
+               }
+               if($service){
+                       print": $service";
+               }
+       }
+}
+sub get_serviceports
+{
+       my $type=shift;
+       my $name=shift;
+       &General::readhasharray("$configsrv", \%customservice);
+       &General::readhasharray("$configsrvgrp", \%customservicegrp);
+       my $tcp;
+       my $udp;
+       my $icmp;
+       @protocols=();
+       if($type eq 'service'){
+               foreach my $key (sort { ncmp($customservice{$a}[0],$customservice{$b}[0]) } keys %customservice){
+                       if ($customservice{$key}[0] eq $name){
+                               push (@protocols,$customservice{$key}[2]);
+                       }
+               }
+       }elsif($type eq 'group'){
+               foreach my $key (sort { ncmp($customservicegrp{$a}[0],$customservicegrp{$b}[0]) } keys %customservicegrp){
+                       if ($customservicegrp{$key}[0] eq $name){
+                               foreach my $key1 (sort { ncmp($customservice{$a}[0],$customservice{$b}[0]) } keys %customservice){
+                                       if ($customservice{$key1}[0] eq $customservicegrp{$key}[2]){
+                                               if($customservice{$key1}[2] eq 'TCP'){
+                                                       $tcp='TCP';
+                                               }elsif($customservice{$key1}[2] eq 'ICMP'){
+                                                       $icmp='ICMP';
+                                               }elsif($customservice{$key1}[2] eq 'UDP'){
+                                                       $udp='UDP';
+                                               }
+                                       }
+                               }
+                       }
+               }
+       }
+       if($tcp && $udp && $icmp){
+               push (@protocols,"TCP,UDP, <br>ICMP");
+               return @protocols;
+       }
+       if($tcp){
+               push (@protocols,"TCP");
+       }
+       if($udp){
+               push (@protocols,"UDP");
+       }
+       if($icmp){
+               push (@protocols,"ICMP");
+       }
+       return @protocols;
+}
+sub getcolor
+{
+       my $nettype=shift;
+       my $val=shift;
+       my $hash=shift;
+       if($optionsfw{'SHOWCOLORS'} eq 'on'){
+               #custom Hosts
+               if ($nettype eq 'cust_host_src' || $nettype eq 'cust_host_tgt'){
+                       foreach my $key (sort keys %$hash){
+                               if ($$hash{$key}[0] eq $val){
+                                       $val=$$hash{$key}[2];
+                               }
+                       }
+               }
+               #standard networks
+               if ($val eq 'GREEN'){
+                       $tdcolor="style='background-color: $Header::colourgreen;color:white;'";
+                       return;
+               }elsif ($val eq 'ORANGE'){
+                       $tdcolor="style='background-color:  $Header::colourorange;color:white;'";
+                       return;
+               }elsif ($val eq 'BLUE'){
+                       $tdcolor="style='background-color: $Header::colourblue;color:white;'";
+                       return;
+               }elsif ($val eq 'RED' ||$val eq 'RED1' ){
+                       $tdcolor="style='background-color: $Header::colourred;color:white;'";
+                       return;
+               }elsif ($val eq 'IPFire' ){
+                       $tdcolor="style='background-color: $Header::colourred;color:white;'";
+                       return;
+               }elsif($val =~ /^(.*?)\/(.*?)$/){
+                       my ($sip,$scidr) = split ("/",$val);
+                       if ( &General::IpInSubnet($sip,$netsettings{'ORANGE_ADDRESS'},$netsettings{'ORANGE_NETMASK'})){
+                               $tdcolor="style='background-color: $Header::colourorange;color:white;'";
+                               return;
+                       }
+                       if ( &General::IpInSubnet($sip,$netsettings{'GREEN_ADDRESS'},$netsettings{'GREEN_NETMASK'})){
+                               $tdcolor="style='background-color: $Header::colourgreen;color:white;'";
+                               return;
+                       }
+                       if ( &General::IpInSubnet($sip,$netsettings{'BLUE_ADDRESS'},$netsettings{'BLUE_NETMASK'})){
+                               $tdcolor="style='background-color: $Header::colourblue;color:white;'";
+                               return;
+                       }
+               }elsif ($val eq 'Default IP'){
+                       $tdcolor="style='background-color: $Header::colourred;color:white;'";
+                       return;
+               }
+               #Check if a manual IP or custom host is part of a VPN
+               if ($nettype eq 'src_addr' || $nettype eq 'tgt_addr' || $nettype eq 'cust_host_src' || $nettype eq 'cust_host_tgt'){
+                       #Check if IP is part of OpenVPN dynamic subnet
+                       my ($a,$b) = split("/",$ovpnsettings{'DOVPN_SUBNET'});
+                       my ($c,$d) = split("/",$val);
+                       if (&General::IpInSubnet($c,$a,$b)){
+                               $tdcolor="style='background-color: $Header::colourovpn;color:white;'";
+                               return;
+                       }
+                       #Check if IP is part of OpenVPN static subnet
+                       foreach my $key (sort keys %ccdnet){
+                               my ($a,$b) = split("/",$ccdnet{$key}[1]);
+                               $b =&General::iporsubtodec($b);
+                               if (&General::IpInSubnet($c,$a,$b)){
+                                       $tdcolor="style='background-color: $Header::colourovpn;color:white;'";
+                                       return;
+                               }
+                       }
+                       #Check if IP is part of OpenVPN N2N subnet
+                       foreach my $key (sort keys %ccdhost){
+                               if ($ccdhost{$key}[3] eq 'net'){
+                                       my ($a,$b) = split("/",$ccdhost{$key}[11]);
+                                       if (&General::IpInSubnet($c,$a,$b)){
+                                               $tdcolor="style='background-color: $Header::colourovpn;color:white;'";
+                                               return;
+                                       }
+                               }
+                       }
+                       #Check if IP is part of IPsec RW network
+                       if ($ipsecsettings{'RW_NET'} ne ''){
+                               my ($a,$b) = split("/",$ipsecsettings{'RW_NET'});
+                               $b=&General::iporsubtodec($b);
+                               if (&General::IpInSubnet($c,$a,$b)){
+                                       $tdcolor="style='background-color: $Header::colourvpn;color:white;'";
+                                       return;
+                               }
+                       }
+                       #Check if IP is part of a IPsec N2N network
+                       foreach my $key (sort keys %ipsecconf){
+                               my ($a,$b) = split("/",$ipsecconf{$key}[11]);
+                               if (&General::IpInSubnet($c,$a,$b)){
+                                       $tdcolor="style='background-color: $Header::colourvpn;color:white;'";
+                                       return;
+                               }
+                       }
+               }
+               #VPN networks
+               if ($nettype eq 'ovpn_n2n_src' || $nettype eq 'ovpn_n2n_tgt' || $nettype eq 'ovpn_net_src' || $nettype eq 'ovpn_net_tgt'|| $nettype eq 'ovpn_host_src' || $nettype eq 'ovpn_host_tgt'){
+                       $tdcolor="style='background-color: $Header::colourovpn;color:white;'";
+                       return;
+               }
+               if ($nettype eq 'ipsec_net_src' || $nettype eq 'ipsec_net_tgt'){
+                       $tdcolor="style='background-color: $Header::colourvpn;color:white;'";
+                       return;
+               }
+               #ALIASE
+               foreach my $alias (sort keys %aliases)
+               {
+                       if ($val eq $alias){
+                               $tdcolor="style='background-color:$Header::colourred;color:white;'";
+                               return;
+                       }
+               }
+       }
+       $tdcolor='';
+       return;
+}
+sub hint
+{
+       if ($hint) {
+               &Header::openbox('100%', 'left', $Lang::tr{'fwhost hint'});
+               print "<class name='base'>$hint\n";
+               print "&nbsp;</class>\n";
+               &Header::closebox();
+               print"<hr>";
+       }
+}
+sub inc_counter
+{
+       my $config=shift;
+       my %hash=%{(shift)};
+       my $val=shift;
+       my $pos;
+
+       &General::readhasharray($config, \%hash);
+       foreach my $key (sort { uc($hash{$a}[0]) cmp uc($hash{$b}[0]) }  keys %hash){
+               if($hash{$key}[0] eq $val){
+                       $pos=$#{$hash{$key}};
+                       $hash{$key}[$pos] = $hash{$key}[$pos]+1;
+               }
+       }
+       &General::writehasharray($config, \%hash);
+}
+sub newrule
+{
+       &error;
+       &General::setup_default_networks(\%defaultNetworks);
+       &General::readhash("/var/ipfire/ethernet/settings", \%netsettings);
+       #read all configfiles
+       &General::readhasharray("$configccdnet", \%ccdnet);
+       &General::readhasharray("$confignet", \%customnetwork);
+       &General::readhasharray("$configccdhost", \%ccdhost);
+       &General::readhasharray("$confighost", \%customhost);
+       &General::readhasharray("$configccdhost", \%ccdhost);
+       &General::readhasharray("$configgrp", \%customgrp);
+       &General::readhasharray("$configipsec", \%ipsecconf);
+       &General::get_aliases(\%aliases);
+       my %checked=();
+       my $helper;
+       my $sum=0;
+       if($fwdfwsettings{'config'} eq ''){$fwdfwsettings{'config'}=$configfwdfw;}
+       my $config=$fwdfwsettings{'config'};
+       my %hash=();
+       #Get Red IP-ADDRESS
+       open (CONN1,"/var/ipfire/red/local-ipaddress");
+       my $redip = <CONN1>;
+       close(CONN1);
+       $checked{'grp1'}{$fwdfwsettings{'grp1'}}                                = 'CHECKED';
+       $checked{'grp2'}{$fwdfwsettings{'grp2'}}                                = 'CHECKED';
+       $checked{'grp3'}{$fwdfwsettings{'grp3'}}                                = 'CHECKED';
+       $checked{'USE_SRC_PORT'}{$fwdfwsettings{'USE_SRC_PORT'}} = 'CHECKED';
+       $checked{'USESRV'}{$fwdfwsettings{'USESRV'}}                    = 'CHECKED';
+       $checked{'ACTIVE'}{$fwdfwsettings{'ACTIVE'}}                    = 'CHECKED';
+       $checked{'LOG'}{$fwdfwsettings{'LOG'}}                                  = 'CHECKED';
+       $checked{'TIME'}{$fwdfwsettings{'TIME'}}                                = 'CHECKED';
+       $checked{'TIME_MON'}{$fwdfwsettings{'TIME_MON'}}                = 'CHECKED';
+       $checked{'TIME_TUE'}{$fwdfwsettings{'TIME_TUE'}}                = 'CHECKED';
+       $checked{'TIME_WED'}{$fwdfwsettings{'TIME_WED'}}                = 'CHECKED';
+       $checked{'TIME_THU'}{$fwdfwsettings{'TIME_THU'}}                = 'CHECKED';
+       $checked{'TIME_FRI'}{$fwdfwsettings{'TIME_FRI'}}                = 'CHECKED';
+       $checked{'TIME_SAT'}{$fwdfwsettings{'TIME_SAT'}}                = 'CHECKED';
+       $checked{'TIME_SUN'}{$fwdfwsettings{'TIME_SUN'}}                = 'CHECKED';
+       $checked{'USE_NAT'}{$fwdfwsettings{'USE_NAT'}}                  = 'CHECKED';
+       $selected{'TIME_FROM'}{$fwdfwsettings{'TIME_FROM'}}             = 'selected';
+       $selected{'TIME_TO'}{$fwdfwsettings{'TIME_TO'}}                 = 'selected';
+       $selected{'ipfire'}{$fwdfwsettings{$fwdfwsettings{'grp2'}}} ='selected';
+       $selected{'ipfire_src'}{$fwdfwsettings{$fwdfwsettings{'grp1'}}} ='selected';
+       #check if update and get values
+       if($fwdfwsettings{'updatefwrule'} eq 'on' || $fwdfwsettings{'copyfwrule'} eq 'on' && !$errormessage){
+               &General::readhasharray("$config", \%hash);
+               foreach my $key (sort keys %hash){
+                       $sum++;
+                       if ($key eq $fwdfwsettings{'key'}){
+                               $fwdfwsettings{'oldrulenumber'}                 = $fwdfwsettings{'key'};
+                               $fwdfwsettings{'RULE_ACTION'}                   = $hash{$key}[0];
+                               $fwdfwsettings{'chain'}                                 = $hash{$key}[1];
+                               $fwdfwsettings{'ACTIVE'}                                = $hash{$key}[2];
+                               $fwdfwsettings{'grp1'}                                  = $hash{$key}[3];   
+                               $fwdfwsettings{$fwdfwsettings{'grp1'}}  = $hash{$key}[4];   
+                               $fwdfwsettings{'grp2'}                                  = $hash{$key}[5];   
+                               $fwdfwsettings{$fwdfwsettings{'grp2'}}  = $hash{$key}[6];   
+                               $fwdfwsettings{'USE_SRC_PORT'}                  = $hash{$key}[7];
+                               $fwdfwsettings{'PROT'}                                  = $hash{$key}[8];
+                           $fwdfwsettings{'ICMP_TYPES'}                        = $hash{$key}[9];
+                           $fwdfwsettings{'SRC_PORT'}                          = $hash{$key}[10];
+                           $fwdfwsettings{'USESRV'}                            = $hash{$key}[11];
+                           $fwdfwsettings{'TGT_PROT'}                          = $hash{$key}[12];
+                           $fwdfwsettings{'ICMP_TGT'}                          = $hash{$key}[13];
+                           $fwdfwsettings{'grp3'}                                      = $hash{$key}[14];
+                           $fwdfwsettings{$fwdfwsettings{'grp3'}}      = $hash{$key}[15];
+                           $fwdfwsettings{'ruleremark'}                        = $hash{$key}[16];
+                           $fwdfwsettings{'LOG'}                                       = $hash{$key}[17];
+                           $fwdfwsettings{'TIME'}                                      = $hash{$key}[18];
+                               $fwdfwsettings{'TIME_MON'}                              = $hash{$key}[19];
+                               $fwdfwsettings{'TIME_TUE'}                              = $hash{$key}[20];
+                               $fwdfwsettings{'TIME_WED'}                              = $hash{$key}[21];
+                               $fwdfwsettings{'TIME_THU'}                              = $hash{$key}[22];
+                               $fwdfwsettings{'TIME_FRI'}                              = $hash{$key}[23];
+                               $fwdfwsettings{'TIME_SAT'}                              = $hash{$key}[24];
+                               $fwdfwsettings{'TIME_SUN'}                              = $hash{$key}[25];
+                               $fwdfwsettings{'TIME_FROM'}                             = $hash{$key}[26];
+                               $fwdfwsettings{'TIME_TO'}                               = $hash{$key}[27];
+                               $fwdfwsettings{'USE_NAT'}                               = $hash{$key}[28];
+                               $fwdfwsettings{'nat'}                                   = $hash{$key}[31]; #changed order
+                               $fwdfwsettings{$fwdfwsettings{'nat'}}   = $hash{$key}[29];
+                               $fwdfwsettings{'dnatport'}                              = $hash{$key}[30];
+                               $checked{'grp1'}{$fwdfwsettings{'grp1'}}                                = 'CHECKED';
+                               $checked{'grp2'}{$fwdfwsettings{'grp2'}}                                = 'CHECKED';
+                               $checked{'grp3'}{$fwdfwsettings{'grp3'}}                                = 'CHECKED';
+                               $checked{'USE_SRC_PORT'}{$fwdfwsettings{'USE_SRC_PORT'}} = 'CHECKED';
+                               $checked{'USESRV'}{$fwdfwsettings{'USESRV'}}                    = 'CHECKED';
+                               $checked{'ACTIVE'}{$fwdfwsettings{'ACTIVE'}}                    = 'CHECKED';
+                               $checked{'LOG'}{$fwdfwsettings{'LOG'}}                                  = 'CHECKED';
+                               $checked{'TIME'}{$fwdfwsettings{'TIME'}}                                = 'CHECKED';
+                               $checked{'TIME_MON'}{$fwdfwsettings{'TIME_MON'}}                = 'CHECKED';
+                               $checked{'TIME_TUE'}{$fwdfwsettings{'TIME_TUE'}}                = 'CHECKED';
+                               $checked{'TIME_WED'}{$fwdfwsettings{'TIME_WED'}}                = 'CHECKED';
+                               $checked{'TIME_THU'}{$fwdfwsettings{'TIME_THU'}}                = 'CHECKED';
+                               $checked{'TIME_FRI'}{$fwdfwsettings{'TIME_FRI'}}                = 'CHECKED';
+                               $checked{'TIME_SAT'}{$fwdfwsettings{'TIME_SAT'}}                = 'CHECKED';
+                               $checked{'TIME_SUN'}{$fwdfwsettings{'TIME_SUN'}}                = 'CHECKED';
+                               $checked{'USE_NAT'}{$fwdfwsettings{'USE_NAT'}}                  = 'CHECKED';
+                               $checked{'nat'}{$fwdfwsettings{'nat'}}                                  = 'CHECKED';
+                               $selected{'TIME_FROM'}{$fwdfwsettings{'TIME_FROM'}}             = 'selected';
+                               $selected{'TIME_TO'}{$fwdfwsettings{'TIME_TO'}}                 = 'selected';
+                               $selected{'ipfire'}{$fwdfwsettings{$fwdfwsettings{'grp2'}}} ='selected';
+                               $selected{'ipfire_src'}{$fwdfwsettings{$fwdfwsettings{'grp1'}}} ='selected';
+                               $selected{'dnat'}{$fwdfwsettings{$fwdfwsettings{'nat'}}} ='selected';
+                               $selected{'snat'}{$fwdfwsettings{$fwdfwsettings{'nat'}}} ='selected';
+                       }
+               }
+               $fwdfwsettings{'oldgrp1a'}=$fwdfwsettings{'grp1'};
+               $fwdfwsettings{'oldgrp1b'}=$fwdfwsettings{$fwdfwsettings{'grp1'}};
+               $fwdfwsettings{'oldgrp2a'}=$fwdfwsettings{'grp2'};
+               $fwdfwsettings{'oldgrp2b'}=$fwdfwsettings{$fwdfwsettings{'grp2'}};
+               $fwdfwsettings{'oldgrp3a'}=$fwdfwsettings{'grp3'};
+               $fwdfwsettings{'oldgrp3b'}=$fwdfwsettings{$fwdfwsettings{'grp3'}};
+               $fwdfwsettings{'oldusesrv'}=$fwdfwsettings{'USESRV'};
+               $fwdfwsettings{'oldruleremark'}=$fwdfwsettings{'ruleremark'};
+               $fwdfwsettings{'oldnat'}=$fwdfwsettings{'USE_NAT'};
+               $fwdfwsettings{'oldruletype'}=$fwdfwsettings{'chain'};
+               #check if manual ip (source) is orange network
+               if ($fwdfwsettings{'grp1'} eq 'src_addr'){
+                       my ($sip,$scidr) = split("/",$fwdfwsettings{$fwdfwsettings{'grp1'}});
+                       if ( &General::IpInSubnet($sip,$netsettings{'ORANGE_ADDRESS'},$netsettings{'ORANGE_NETMASK'})){
+                               $fwdfwsettings{'oldorange'} ='on';
+                       }
+               }
+       }else{
+               $fwdfwsettings{'ACTIVE'}='ON';
+               $checked{'ACTIVE'}{$fwdfwsettings{'ACTIVE'}} = 'CHECKED';
+               $fwdfwsettings{'oldgrp1a'}=$fwdfwsettings{'grp1'};
+               $fwdfwsettings{'oldgrp1b'}=$fwdfwsettings{$fwdfwsettings{'grp1'}};
+               $fwdfwsettings{'oldgrp2a'}=$fwdfwsettings{'grp2'};
+               $fwdfwsettings{'oldgrp2b'}=$fwdfwsettings{$fwdfwsettings{'grp2'}};
+               $fwdfwsettings{'oldgrp3a'}=$fwdfwsettings{'grp3'};
+               $fwdfwsettings{'oldgrp3b'}=$fwdfwsettings{$fwdfwsettings{'grp3'}};
+               $fwdfwsettings{'oldusesrv'}=$fwdfwsettings{'USESRV'};
+               $fwdfwsettings{'oldruleremark'}=$fwdfwsettings{'ruleremark'};
+               $fwdfwsettings{'oldnat'}=$fwdfwsettings{'USE_NAT'};
+               #check if manual ip (source) is orange network
+               if ($fwdfwsettings{'grp1'} eq 'src_addr'){
+                       my ($sip,$scidr) = split("/",$fwdfwsettings{$fwdfwsettings{'grp1'}});
+                       if ( &General::IpInSubnet($sip,$netsettings{'ORANGE_ADDRESS'},$netsettings{'ORANGE_NETMASK'})){
+                               $fwdfwsettings{'oldorange'} ='on';
+                       }
+               }       
+       }
+       &Header::openbox('100%', 'left', $Lang::tr{'fwdfw addrule'});
+       &Header::closebox();
+       &Header::openbox('100%', 'left', $Lang::tr{'fwdfw source'});
+       #------SOURCE-------------------------------------------------------
+       print "<form method='post'>";
+       print<<END;
+               <table width='100%' border='0'>
+               <tr><td width='1%'><input type='radio' name='grp1' value='src_addr'  checked></td><td width='60%'>$Lang::tr{'fwdfw sourceip'}<input type='TEXT' name='src_addr' value='$fwdfwsettings{'src_addr'}' size='16' maxlength='18' ></td><td width='1%'><input type='radio' name='grp1' id='ipfire_src' value='ipfire_src'  $checked{'grp1'}{'ipfire_src'}></td><td><b>Firewall</b></td>
+END
+               print"<td align='right'><select name='ipfire_src' style='width:200px;'>";
+               print "<option value='ALL' $selected{'ipfire_src'}{'ALL'}>$Lang::tr{'all'}</option>";
+               print "<option value='GREEN' $selected{'ipfire_src'}{'GREEN'}>$Lang::tr{'green'} ($ifaces{'GREEN_ADDRESS'})</option>" if $ifaces{'GREEN_ADDRESS'};
+               print "<option value='ORANGE' $selected{'ipfire_src'}{'ORANGE'}>$Lang::tr{'orange'} ($ifaces{'ORANGE_ADDRESS'})</option>" if (&Header::orange_used());
+               print "<option value='BLUE' $selected{'ipfire_src'}{'BLUE'}>$Lang::tr{'blue'} ($ifaces{'BLUE_ADDRESS'})</option>" if (&Header::blue_used());
+               print "<option value='RED1' $selected{'ipfire_src'}{'RED1'}>$Lang::tr{'red1'} ($redip)" if ($redip);
+               if (! -z "${General::swroot}/ethernet/aliases"){
+                       foreach my $alias (sort keys %aliases)
+                       {
+                               print "<option value='$alias' $selected{'ipfire'}{$alias}>$alias</option>";
+                       }
+               }
+               print<<END;
+               </select></td></tr>
+               <tr><td colspan='8'><hr style='border:dotted #BFBFBF; border-width:1px 0 0 0 ; ' /></td></tr></table>
+END
+               &gen_dd_block('src','grp1');
+               print"<hr>";
+               &Header::closebox();
+               #---SNAT / DNAT ------------------------------------------------
+               &Header::openbox('100%', 'left', 'NAT');
+               print<<END;
+                       <label>
+                               <input type='checkbox' name='USE_NAT' id='USE_NAT' value="ON" $checked{'USE_NAT'}{'ON'}>
+                               $Lang::tr{'fwdfw use nat'}
+                       </label>
+                       <div class="NAT">
+                               <table width='100%' border='0'>
+                                       <tr>
+                                               <td colspan='2'></td>
+                                               <td width='1%'>
+                                                       <input type='radio' name='nat' id='dnat' value='dnat' checked>
+                                               </td>
+                                               <td width='50%'>$Lang::tr{'fwdfw dnat'}</td>
+END
+               print"<td width='8%'>Firewall: </td><td width='20%' align='right'><select name='dnat' style='width:140px;'>";
+               print "<option value='ALL' $selected{'dnat'}{$Lang::tr{'all'}}>$Lang::tr{'all'}</option>";
+               print "<option value='Default IP' $selected{'dnat'}{'Default IP'}>Default IP</option>";
+               foreach my $alias (sort keys %aliases)
+               {
+                       print "<option value='$alias' $selected{'dnat'}{$alias}>$alias</option>";
+               }
+               print"</select></td></tr>";
+               #SNAT
+               print"<tr><td colspan='2'></td><td width='1%'><input type='radio' name='nat' id='snat' value='snat'  $checked{'nat'}{'snat'}></td><td width='20%'>$Lang::tr{'fwdfw snat'}</td>";
+               print"<td width='8%'>Firewall: </td><td width='20%' align='right'><select name='snat' style='width:140px;'>";
+               foreach my $alias (sort keys %aliases)
+                       {
+                               print "<option value='$alias' $selected{'snat'}{$alias}>$alias</option>";
+                       }
+               foreach my $network (sort keys %defaultNetworks)
+               {
+                       next if($defaultNetworks{$network}{'NAME'} eq "IPFire");
+                       next if($defaultNetworks{$network}{'NAME'} eq "ALL");
+                       next if($defaultNetworks{$network}{'NAME'} =~ /OpenVPN/i);
+                       print "<option value='$defaultNetworks{$network}{'NAME'}'";
+                       print " selected='selected'" if ($fwdfwsettings{$fwdfwsettings{'nat'}} eq $defaultNetworks{$network}{'NAME'});
+                       print ">$network</option>";
+               }
+               print"</select></td></tr></table>";
+               print"</div>";
+               &Header::closebox();
+               #---TARGET------------------------------------------------------
+               &Header::openbox('100%', 'left', $Lang::tr{'fwdfw target'});
+               print<<END;
+               <table width='100%' border='0'> 
+               <tr><td width='1%'><input type='radio' name='grp2' value='tgt_addr'  checked></td><td width='60%' nowrap='nowrap'>$Lang::tr{'fwdfw targetip'}<input type='TEXT' name='tgt_addr' value='$fwdfwsettings{'tgt_addr'}' size='16' maxlength='18'><td width='1%'><input type='radio' name='grp2' id='ipfire' value='ipfire'  $checked{'grp2'}{'ipfire'}></td><td><b>Firewall</b></td>
+END
+               print"<td align='right'><select name='ipfire' style='width:200px;'>";
+               print "<option value='ALL' $selected{'ipfire'}{'ALL'}>$Lang::tr{'all'}</option>";
+               print "<option value='GREEN' $selected{'ipfire'}{'GREEN'}>$Lang::tr{'green'} ($ifaces{'GREEN_ADDRESS'})</option>" if $ifaces{'GREEN_ADDRESS'};
+               print "<option value='ORANGE' $selected{'ipfire'}{'ORANGE'}>$Lang::tr{'orange'} ($ifaces{'ORANGE_ADDRESS'})</option>" if (&Header::orange_used());
+               print "<option value='BLUE' $selected{'ipfire'}{'BLUE'}>$Lang::tr{'blue'} ($ifaces{'BLUE_ADDRESS'})</option>"if (&Header::blue_used());
+               print "<option value='RED1' $selected{'ipfire'}{'RED1'}>$Lang::tr{'red1'} ($redip)" if ($redip);
+               if (! -z "${General::swroot}/ethernet/aliases"){
+                       foreach my $alias (sort keys %aliases)
+                       {
+                               print "<option value='$alias' $selected{'ipfire'}{$alias}>$alias</option>";
+                       }
+               }
+               print<<END;
+               </select></td></tr>
+               <tr><td colspan='7'><hr style='border:dotted #BFBFBF; border-width:1px 0 0 0 ; ' /></td></tr></table>
+END
+               &gen_dd_block('tgt','grp2');
+               print"<hr>";
+               &Header::closebox;
+               #---PROTOCOL------------------------------------------------------
+               $fwdfwsettings{'SRC_PORT'} =~ s/\|/,/g;
+               $fwdfwsettings{'TGT_PORT'} =~ s/\|/,/g;
+               $fwdfwsettings{'dnatport'} =~ tr/|/,/;
+
+               # The dnatport may be empty, if it matches TGT_PORT
+               if ($fwdfwsettings{'dnatport'} eq $fwdfwsettings{'TGT_PORT'}) {
+                       $fwdfwsettings{'dnatport'} = "";
+               }
+
+               &Header::openbox('100%', 'left', $Lang::tr{'fwhost prot'});
+               #Fix Protocol for JQuery
+               if ($fwdfwsettings{'grp3'} eq 'cust_srv' || $fwdfwsettings{'grp3'} eq 'cust_srvgrp'){
+                       $fwdfwsettings{'PROT'} = 'template';
+               }
+               print<<END;
+                       <table width='100%' border='0'>
+                               <tr>
+                                       <td width="25%">
+                                               <select name='PROT' id='protocol' style="width: 95px;">
+END
+               print "<option value=\"\"";
+               if ($fwdfwsettings{'PROT'} eq '') {
+                       print " selected=\"selected\"";
+               }
+               print ">$Lang::tr{'all'}</option>";
+
+               print "<option value=\"template\"";
+               print " selected=\"selected\"" if ($fwdfwsettings{'grp3'} eq 'cust_srv' || $fwdfwsettings{'grp3'} eq 'cust_srvgrp');
+               print ">- $Lang::tr{'template'} -</option>";
+
+               foreach (@PROTOCOLS) {
+                       print"<option value=\"$_\"";
+                       if ($_ eq $fwdfwsettings{'PROT'}) {
+                               print " selected=\"selected\"";
+                       }
+                       if($_ eq "IPv6"){
+                               print ">$Lang::tr{'fwdfw prot41'}</option>";
+                       }else{
+                               print ">$_</option>";
+                       }
+               }
+
+               print<<END;
+                                               </select>
+                                       </td>
+                                       <td width="75%">
+                                               <table width='100%' border='0' id="PROTOCOL_ICMP_TYPES">
+                                                       <tr>
+                                                               <td width='20%'>$Lang::tr{'fwhost icmptype'}</td>
+                                                               <td colspan='2'>
+                                                                       <select name='ICMP_TYPES' style='min-width:230px;'>
+END
+               &General::readhasharray("${General::swroot}/fwhosts/icmp-types", \%icmptypes);
+               print"<option value='All ICMP-Types'>$Lang::tr{'fwdfw all icmp'}</option>";
+               foreach my $key (sort { ncmp($icmptypes{$a}[0],$icmptypes{$b}[0]) }keys %icmptypes){
+                       if($fwdfwsettings{'ICMP_TYPES'} eq "$icmptypes{$key}[0]"){
+                               print"<option selected>$icmptypes{$key}[0] ($icmptypes{$key}[1])</option>";
+                       }else{
+                               print"<option>$icmptypes{$key}[0] ($icmptypes{$key}[1])</option>";
+                       }
+               }
+
+               print <<END;
+                                                                       </select>
+                                                               </td>
+                                                       </tr>
+                                               </table>
+
+                                               <table width="100%" border="0" id="PROTOCOL_PORTS">
+                                                       <tr>
+                                                               <!-- #SOURCEPORT -->
+                                                               <td>
+                                                                       $Lang::tr{'fwdfw use srcport'}
+                                                               </td>
+                                                               <td>
+                                                                       <input type='text' name='SRC_PORT' value='$fwdfwsettings{'SRC_PORT'}' maxlength='20' size='18'>
+                                                               </td>
+                                                               <td width='10%'>
+                                                               </td>
+
+                                                               <!-- #TARGETPORT -->
+                                                               <td>
+                                                                       $Lang::tr{'fwdfw use srv'}
+                                                               </td>
+
+                                                               <td>
+                                                                       <input type='text' name='TGT_PORT' value='$fwdfwsettings{'TGT_PORT'}' maxlength='20' size='18'>
+                                                               </td>
+                                                       </tr>
+                                                       <tr class="NAT">
+                                                               <td colspan='3'></td>
+                                                               <td>$Lang::tr{'fwdfw external port nat'}:</td>
+                                                               <td>
+                                                                       <input type='text' name='dnatport' value=\"$fwdfwsettings{'dnatport'}\" maxlength='20' size='18'>
+                                                               </td>
+                                                       </tr>
+                                               </table>
+
+                                               <table width="100%" border="0" id="PROTOCOL_TEMPLATE">
+                                                       <tr>
+                                                               <td>
+                                                                       <input type='radio' name='grp3' id='cust_srv' value='cust_srv' checked>
+                                                                       $Lang::tr{'fwhost cust service'}
+                                                               </td>
+                                                               <td>
+                                                                       <select name='cust_srv' style='min-width: 230px;'>
+END
+
+               &General::readhasharray("$configsrv", \%customservice);
+               foreach my $key (sort { ncmp($customservice{$a}[0],$customservice{$b}[0]) } keys %customservice){
+                       print"<option ";
+                       print"selected='selected'" if ($fwdfwsettings{$fwdfwsettings{'grp3'}} eq $customservice{$key}[0]);
+                       print"value='$customservice{$key}[0]'>$customservice{$key}[0]</option>";
+               }
+
+               print <<END;
+                                                                       </select>
+                                                               </td>
+                                                       </tr>
+                                                       <tr>
+                                                               <td>
+                                                                       <input type='radio' name='grp3' id='cust_srvgrp' value='cust_srvgrp' $checked{'grp3'}{'cust_srvgrp'}>
+                                                                       $Lang::tr{'fwhost cust srvgrp'}
+                                                               </td>
+                                                               <td>
+                                                                       <select name='cust_srvgrp' style='min-width:230px;'>
+END
+
+               &General::readhasharray("$configsrvgrp", \%customservicegrp);
+               my $helper;
+               foreach my $key (sort { ncmp($customservicegrp{$a}[0],$customservicegrp{$b}[0]) } keys %customservicegrp){
+                       if ($helper ne $customservicegrp{$key}[0]){
+                               print"<option ";
+                               print"selected='selected'" if ($fwdfwsettings{$fwdfwsettings{'grp3'}} eq $customservicegrp{$key}[0]);
+                               print">$customservicegrp{$key}[0]</option>";
+                       }
+                       $helper=$customservicegrp{$key}[0];
+               }
+
+               print<<END;
+                                                                       </select>
+                                                               </td>
+                                                       </tr>
+                                               </table>
+                                       </td>
+                               </tr>
+                       </table>
+END
+
+               &Header::closebox;
+
+               $checked{"RULE_ACTION"} = ();
+               foreach ("ACCEPT", "DROP", "REJECT") {
+                       $checked{"RULE_ACTION"}{$_} = "";
+               }
+
+               if($fwdfwsettings{'updatefwrule'} eq 'on') {
+                       $checked{"RULE_ACTION"}{$fwdfwsettings{'RULE_ACTION'}} = "checked";
+               } elsif ($fwdfwsettings{'POLICY'} eq 'MODE1') {
+                       $checked{"RULE_ACTION"}{"ACCEPT"} = "checked";
+               } elsif ($fwdfwsettings{'POLICY'} eq 'MODE2') {
+                       $checked{"RULE_ACTION"}{"DROP"} = "checked";
+               }
+
+               print <<END;
+                       <hr><br>
+
+                       <center>
+                               <table width="80%" border="0">
+                                       <tr>
+                                               <td width="33%" align="center" bgcolor="$color{'color17'}">
+                                                       &nbsp;<br>&nbsp;
+                                               </td>
+                                               <td width="33%" align="center" bgcolor="$color{'color25'}">
+                                                       &nbsp;<br>&nbsp;
+                                               </td>
+                                               <td width="33%" align="center" bgcolor="$color{'color16'}">
+                                                       &nbsp;<br>&nbsp;
+                                               </td>
+                                       </tr>
+                                       <tr>
+                                               <td width="33%" align="center">
+                                                       <label>
+                                                               <input type="radio" name="RULE_ACTION" value="ACCEPT" $checked{"RULE_ACTION"}{"ACCEPT"}>
+                                                               <strong>$Lang::tr{'fwdfw ACCEPT'}</strong>
+                                                       </label>
+                                               </td>
+                                               <td width="33%" align="center">
+                                                       <label>
+                                                               <input type="radio" name="RULE_ACTION" value="DROP" $checked{"RULE_ACTION"}{"DROP"}>
+                                                               <strong>$Lang::tr{'fwdfw DROP'}</strong>
+                                                       </label>
+                                               </td>
+                                               <td width="33%" align="center">
+                                                       <label>
+                                                               <input type="radio" name="RULE_ACTION" value="REJECT" $checked{"RULE_ACTION"}{"REJECT"}>
+                                                               <strong>$Lang::tr{'fwdfw REJECT'}</strong>
+                                                       </label>
+                                               </td>
+                                       </tr>
+                               </table>
+                       </center>
+
+                       <br>
+END
+
+               #---Activate/logging/remark-------------------------------------
+               &Header::openbox('100%', 'left', $Lang::tr{'fwdfw additional'});
+               print<<END;
+               <table width='100%' border='0'>
+END
+               print"<tr><td width='12%'>$Lang::tr{'remark'}:</td><td width='88%' align='left'><input type='text' name='ruleremark' maxlength='255' value='$fwdfwsettings{'ruleremark'}' style='width:99%;'></td></tr>";
+               if($fwdfwsettings{'updatefwrule'} eq 'on' || $fwdfwsettings{'copyfwrule'} eq 'on'){
+                       print "<tr><td width='12%'>$Lang::tr{'fwdfw rulepos'}:</td><td><select name='rulepos' >";
+                       for (my $count =1; $count <= $sum; $count++){ 
+                               print"<option value='$count' ";
+                               print"selected='selected'" if($fwdfwsettings{'oldrulenumber'} eq $count);
+                               print">$count</option>";
+                       }
+                       print"</select></td></tr>";
+               }else{
+                       print "<tr><td width='12%'>$Lang::tr{'fwdfw rulepos'}:</td><td><input type='text' name='rulepos' size='2'></td></tr>";
+               }
+
+               print<<END;
+               </table>
+               <table width='100%'>
+                       <tr>
+END
+
+               if ($fwdfwsettings{'updatefwrule'} eq 'on') {
+                       print <<END;
+                               <td>
+                                       <input type='checkbox' name='ACTIVE' value="ON" $checked{'ACTIVE'}{'ON'}>
+                               </td>
+                               <td>$Lang::tr{'fwdfw rule activate'}</td>
+END
+               } else {
+                       print <<END;
+                               <td colspan="2">
+                                       <input type="hidden" name="ACTIVE" value="ON">
+                               </td>
+END
+               }
+
+               print <<END;
+                       </tr>
+                       <tr>
+                               <td>
+                                       <input type='checkbox' name='LOG' value='ON' $checked{'LOG'}{'ON'}>
+                               </td>
+                               <td>$Lang::tr{'fwdfw log rule'}</td>
+                       </tr>
+                       <tr>
+                               <td width='1%'>
+                                       <input type='checkbox' name='TIME' id="USE_TIME_CONSTRAINTS" value='ON' $checked{'TIME'}{'ON'}>
+                               </td>
+                               <td>$Lang::tr{'fwdfw timeframe'}</td>
+                       </tr>
+                       <tr id="TIME_CONSTRAINTS">
+                               <td colspan="2">
+                                       <table width="66%" border="0">
+                                               <tr>
+                                                       <td width="8em">&nbsp;</td>
+                                                       <td align="center">$Lang::tr{'advproxy monday'}</td>
+                                                       <td align="center">$Lang::tr{'advproxy tuesday'}</td>
+                                                       <td align="center">$Lang::tr{'advproxy wednesday'}</td>
+                                                       <td align="center">$Lang::tr{'advproxy thursday'}</td>
+                                                       <td align="center">$Lang::tr{'advproxy friday'}</td>
+                                                       <td align="center">$Lang::tr{'advproxy saturday'}</td>
+                                                       <td align="center">$Lang::tr{'advproxy sunday'}</td>
+                                                       <td>&nbsp;</td>
+                                               </tr>
+                                               <tr>
+                                                       <td width="8em">&nbsp;</td>
+                                                       <td align="center"><input type='checkbox' name='TIME_MON' value='on' $checked{'TIME_MON'}{'on'} ></td>
+                                                       <td align="center"><input type='checkbox' name='TIME_TUE' value='on' $checked{'TIME_TUE'}{'on'} ></td>
+                                                       <td align="center"><input type='checkbox' name='TIME_WED' value='on' $checked{'TIME_WED'}{'on'} ></td>
+                                                       <td align="center"><input type='checkbox' name='TIME_THU' value='on' $checked{'TIME_THU'}{'on'} ></td>
+                                                       <td align="center"><input type='checkbox' name='TIME_FRI' value='on' $checked{'TIME_FRI'}{'on'} ></td>
+                                                       <td align="center"><input type='checkbox' name='TIME_SAT' value='on' $checked{'TIME_SAT'}{'on'} ></td>
+                                                       <td align="center"><input type='checkbox' name='TIME_SUN' value='on' $checked{'TIME_SUN'}{'on'} ></td>
+                                                       <td>
+                                                               <select name='TIME_FROM'>
+END
+               for (my $i=0;$i<=23;$i++) {
+                       $i = sprintf("%02s",$i);
+                       for (my $j=0;$j<=45;$j+=15) {
+                               $j = sprintf("%02s",$j);
+                               my $time = $i.":".$j;
+                               print "<option $selected{'TIME_FROM'}{$time}>$i:$j</option>\n";
+                       }
+               }
+               print<<END;     
+                                                               </select> &dash;
+                                                               <select name='TIME_TO'>
+END
+               for (my $i=0;$i<=23;$i++) {
+                       $i = sprintf("%02s",$i);
+                       for (my $j=0;$j<=45;$j+=15) {
+                               $j = sprintf("%02s",$j);
+                               my $time = $i.":".$j;
+                               print "<option $selected{'TIME_TO'}{$time}>$i:$j</option>\n";
+                       }
+               }
+               print<<END;
+                                                               </select>
+                                                       </td>
+                                               </tr>
+                                       </table>
+                               </td>
+                       </tr>
+               </table>
+               <br><hr>
+END
+
+               #---ACTION------------------------------------------------------
+               if($fwdfwsettings{'updatefwrule'} ne 'on'){
+                       print<<END;
+                       <table border='0' width='100%'>
+                       <tr><td align='right'><input type='submit' value='$Lang::tr{'add'}' style='min-width:100px;' />
+                       <input type='hidden' name='config' value='$config' >
+                       <input type='hidden' name='ACTION' value='saverule' ></form>
+                       <form method='post' style='display:inline;'><input type='submit' value='$Lang::tr{'fwhost back'}' style='min-width:100px;'><input type='hidden' name='ACTION' value='reset'></form></td></tr>
+                       </table>
+                       <br>
+END
+               }else{
+                       print<<END;
+                       <table border='0' width='100%'>
+                       <tr><td align='right'><input type='submit' value='$Lang::tr{'fwdfw change'}' style='min-width:100px;' /><input type='hidden' name='updatefwrule' value='$fwdfwsettings{'updatefwrule'}'><input type='hidden' name='key' value='$fwdfwsettings{'key'}'>
+                       <input type='hidden' name='oldgrp1a' value='$fwdfwsettings{'oldgrp1a'}' />
+                       <input type='hidden' name='oldgrp1b' value='$fwdfwsettings{'oldgrp1b'}' />
+                       <input type='hidden' name='oldgrp2a' value='$fwdfwsettings{'oldgrp2a'}' />
+                       <input type='hidden' name='oldgrp2b' value='$fwdfwsettings{'oldgrp2b'}' />
+                       <input type='hidden' name='oldgrp3a' value='$fwdfwsettings{'oldgrp3a'}' />
+                       <input type='hidden' name='oldgrp3b' value='$fwdfwsettings{'oldgrp3b'}' />
+                       <input type='hidden' name='oldusesrv' value='$fwdfwsettings{'oldusesrv'}' />
+                       <input type='hidden' name='oldrulenumber' value='$fwdfwsettings{'oldrulenumber'}' />
+                       <input type='hidden' name='rulenumber' value='$fwdfwsettings{'rulepos'}' />
+                       <input type='hidden' name='oldruleremark' value='$fwdfwsettings{'oldruleremark'}' />
+                       <input type='hidden' name='oldorange' value='$fwdfwsettings{'oldorange'}' />
+                       <input type='hidden' name='oldnat' value='$fwdfwsettings{'oldnat'}' />
+                       <input type='hidden' name='oldruletype' value='$fwdfwsettings{'oldruletype'}' />
+                       <input type='hidden' name='ACTION' value='saverule' ></form><form method='post' style='display:inline'><input type='submit' value='$Lang::tr{'fwhost back'}' style='min-width:100px;'><input type='hidden' name='ACTION' value'reset'></td></td>
+                       </table></form>
+END
+               }
+               &Header::closebox();
+}
+sub pos_up
+{
+       my %uphash=();
+       my %tmp=();
+       &General::readhasharray($fwdfwsettings{'config'}, \%uphash);
+       foreach my $key (sort keys %uphash){
+               if ($key eq $fwdfwsettings{'key'}) {
+                       my $last = $key -1;
+                       if (exists $uphash{$last}){
+                               #save rule last
+                               foreach my $y (0 .. $#{$uphash{$last}}) {
+                                               $tmp{0}[$y] = $uphash{$last}[$y];
+                               }
+                               #copy active rule to last
+                               foreach my $i (0 .. $#{$uphash{$last}}) {
+                                       $uphash{$last}[$i] = $uphash{$key}[$i];
+                               }
+                               #copy saved rule to actual position
+                               foreach my $x (0 .. $#{$tmp{0}}) {
+                                               $uphash{$key}[$x] = $tmp{0}[$x];
+                               }
+                       }
+               }
+       }
+       &General::writehasharray($fwdfwsettings{'config'}, \%uphash);
+       &General::firewall_config_changed();
+}
+sub pos_down
+{
+       my %downhash=();
+       my %tmp=();
+       &General::readhasharray($fwdfwsettings{'config'}, \%downhash);
+       foreach my $key (sort keys %downhash){
+               if ($key eq $fwdfwsettings{'key'}) {
+                       my $next = $key + 1;
+                       if (exists $downhash{$next}){
+                               #save rule next
+                               foreach my $y (0 .. $#{$downhash{$next}}) {
+                                               $tmp{0}[$y] = $downhash{$next}[$y];
+                               }
+                               #copy active rule to next
+                               foreach my $i (0 .. $#{$downhash{$next}}) {
+                                       $downhash{$next}[$i] = $downhash{$key}[$i];
+                               }
+                               #copy saved rule to actual position
+                               foreach my $x (0 .. $#{$tmp{0}}) {
+                                               $downhash{$key}[$x] = $tmp{0}[$x];
+                               }
+                       }
+               }
+       }
+       &General::writehasharray($fwdfwsettings{'config'}, \%downhash);
+       &General::firewall_config_changed();
+}
+sub saverule
+{
+       my $hash=shift;
+       my $config=shift;
+       &General::readhasharray("$config", $hash);
+       if (!$errormessage){
+               ################################################################
+               #check if we change an INPUT rule to a OUTGOING
+               if($fwdfwsettings{'oldruletype'} eq 'INPUTFW'  && $fwdfwsettings{'chain'} eq 'OUTGOINGFW'  ){
+                       &changerule($configinput);
+                       #print"1";
+               }
+               #check if we change an INPUT rule to a FORWARD
+               elsif($fwdfwsettings{'oldruletype'} eq 'INPUTFW'  && $fwdfwsettings{'chain'} eq 'FORWARDFW'  ){
+                       &changerule($configinput);
+                       #print"2";
+               }
+               ################################################################
+               #check if we change an OUTGOING rule to an INPUT
+               elsif($fwdfwsettings{'oldruletype'} eq 'OUTGOINGFW'  && $fwdfwsettings{'chain'} eq 'INPUTFW'  ){
+                       &changerule($configoutgoing);
+                       #print"3";
+               }
+               #check if we change an OUTGOING rule to a FORWARD
+               elsif($fwdfwsettings{'oldruletype'} eq 'OUTGOINGFW'  && $fwdfwsettings{'chain'} eq 'FORWARDFW'  ){
+                       &changerule($configoutgoing);
+                       #print"4";
+               }
+               ################################################################
+               #check if we change a FORWARD rule to an INPUT
+               elsif($fwdfwsettings{'oldruletype'} eq 'FORWARDFW'  && $fwdfwsettings{'chain'} eq 'INPUTFW'){
+                       &changerule($configfwdfw);
+                       #print"5";
+               }
+               #check if we change a FORWARD rule to an OUTGOING
+               elsif($fwdfwsettings{'oldruletype'} eq 'FORWARDFW'  && $fwdfwsettings{'chain'} eq 'OUTGOINGFW'){
+                       &changerule($configfwdfw);
+                       #print"6";
+               }
+               if ($fwdfwsettings{'updatefwrule'} ne 'on'){
+                       my $key = &General::findhasharraykey ($hash);
+                       $$hash{$key}[0]  = $fwdfwsettings{'RULE_ACTION'};
+                       $$hash{$key}[1]  = $fwdfwsettings{'chain'};
+                       $$hash{$key}[2]  = $fwdfwsettings{'ACTIVE'};
+                       $$hash{$key}[3]  = $fwdfwsettings{'grp1'};
+                       $$hash{$key}[4]  = $fwdfwsettings{$fwdfwsettings{'grp1'}};
+                       $$hash{$key}[5]  = $fwdfwsettings{'grp2'};
+                       $$hash{$key}[6]  = $fwdfwsettings{$fwdfwsettings{'grp2'}};
+                       $$hash{$key}[7]  = $fwdfwsettings{'USE_SRC_PORT'};
+                       $$hash{$key}[8]  = $fwdfwsettings{'PROT'};
+                       $$hash{$key}[9]  = $fwdfwsettings{'ICMP_TYPES'};
+                       $$hash{$key}[10] = $fwdfwsettings{'SRC_PORT'};
+                       $$hash{$key}[11] = $fwdfwsettings{'USESRV'};
+                       $$hash{$key}[12] = $fwdfwsettings{'TGT_PROT'};
+                       $$hash{$key}[13] = $fwdfwsettings{'ICMP_TGT'};
+                       $$hash{$key}[14] = $fwdfwsettings{'grp3'};
+                       $$hash{$key}[15] = $fwdfwsettings{$fwdfwsettings{'grp3'}};
+                       $$hash{$key}[16] = $fwdfwsettings{'ruleremark'};
+                       $$hash{$key}[17] = $fwdfwsettings{'LOG'};
+                       $$hash{$key}[18] = $fwdfwsettings{'TIME'};
+                       $$hash{$key}[19] = $fwdfwsettings{'TIME_MON'};
+                       $$hash{$key}[20] = $fwdfwsettings{'TIME_TUE'};
+                       $$hash{$key}[21] = $fwdfwsettings{'TIME_WED'};
+                       $$hash{$key}[22] = $fwdfwsettings{'TIME_THU'};
+                       $$hash{$key}[23] = $fwdfwsettings{'TIME_FRI'};
+                       $$hash{$key}[24] = $fwdfwsettings{'TIME_SAT'};
+                       $$hash{$key}[25] = $fwdfwsettings{'TIME_SUN'};
+                       $$hash{$key}[26] = $fwdfwsettings{'TIME_FROM'};
+                       $$hash{$key}[27] = $fwdfwsettings{'TIME_TO'};
+                       $$hash{$key}[28] = $fwdfwsettings{'USE_NAT'};
+                       $$hash{$key}[29] = $fwdfwsettings{$fwdfwsettings{'nat'}};
+                       $$hash{$key}[30] = $fwdfwsettings{'dnatport'};
+                       $$hash{$key}[31] = $fwdfwsettings{'nat'};
+                       &General::writehasharray("$config", $hash);
+               }else{
+                       foreach my $key (sort {$a <=> $b} keys %$hash){
+                               if($key eq $fwdfwsettings{'key'}){
+                                       $$hash{$key}[0]  = $fwdfwsettings{'RULE_ACTION'};
+                                       $$hash{$key}[1]  = $fwdfwsettings{'chain'};
+                                       $$hash{$key}[2]  = $fwdfwsettings{'ACTIVE'};
+                                       $$hash{$key}[3]  = $fwdfwsettings{'grp1'};
+                                       $$hash{$key}[4]  = $fwdfwsettings{$fwdfwsettings{'grp1'}};
+                                       $$hash{$key}[5]  = $fwdfwsettings{'grp2'};
+                                       $$hash{$key}[6]  = $fwdfwsettings{$fwdfwsettings{'grp2'}};
+                                       $$hash{$key}[7]  = $fwdfwsettings{'USE_SRC_PORT'};
+                                       $$hash{$key}[8]  = $fwdfwsettings{'PROT'};
+                                       $$hash{$key}[9]  = $fwdfwsettings{'ICMP_TYPES'};
+                                       $$hash{$key}[10] = $fwdfwsettings{'SRC_PORT'};
+                                       $$hash{$key}[11] = $fwdfwsettings{'USESRV'};
+                                       $$hash{$key}[12] = $fwdfwsettings{'TGT_PROT'};
+                                       $$hash{$key}[13] = $fwdfwsettings{'ICMP_TGT'};
+                                       $$hash{$key}[14] = $fwdfwsettings{'grp3'};
+                                       $$hash{$key}[15] = $fwdfwsettings{$fwdfwsettings{'grp3'}};
+                                       $$hash{$key}[16] = $fwdfwsettings{'ruleremark'};
+                                       $$hash{$key}[17] = $fwdfwsettings{'LOG'};
+                                       $$hash{$key}[18] = $fwdfwsettings{'TIME'};
+                                       $$hash{$key}[19] = $fwdfwsettings{'TIME_MON'};
+                                       $$hash{$key}[20] = $fwdfwsettings{'TIME_TUE'};
+                                       $$hash{$key}[21] = $fwdfwsettings{'TIME_WED'};
+                                       $$hash{$key}[22] = $fwdfwsettings{'TIME_THU'};
+                                       $$hash{$key}[23] = $fwdfwsettings{'TIME_FRI'};
+                                       $$hash{$key}[24] = $fwdfwsettings{'TIME_SAT'};
+                                       $$hash{$key}[25] = $fwdfwsettings{'TIME_SUN'};
+                                       $$hash{$key}[26] = $fwdfwsettings{'TIME_FROM'};
+                                       $$hash{$key}[27] = $fwdfwsettings{'TIME_TO'};
+                                       $$hash{$key}[28] = $fwdfwsettings{'USE_NAT'};
+                                       $$hash{$key}[29] = $fwdfwsettings{$fwdfwsettings{'nat'}};
+                                       $$hash{$key}[30] = $fwdfwsettings{'dnatport'};
+                                       $$hash{$key}[31] = $fwdfwsettings{'nat'};
+                                       last;
+                               }
+                       }
+               }
+               &General::writehasharray("$config", $hash);
+               if($fwdfwsettings{'oldrulenumber'} > $fwdfwsettings{'rulepos'}){
+                       my %tmp=();
+                       my $val=$fwdfwsettings{'oldrulenumber'}-$fwdfwsettings{'rulepos'};
+                       for (my $z=0;$z<$val;$z++){
+                               foreach my $key (sort {$a <=> $b} keys %$hash){
+                                       if ($key eq $fwdfwsettings{'oldrulenumber'}) {
+                                               my $last = $key -1;
+                                               if (exists $$hash{$last}){
+                                                       #save rule last
+                                                       foreach my $y (0 .. $#{$$hash{$last}}) {
+                                                               $tmp{0}[$y] = $$hash{$last}[$y];
+                                                       }
+                                                       #copy active rule to last
+                                                       foreach my $i (0 .. $#{$$hash{$last}}) {
+                                                               $$hash{$last}[$i] = $$hash{$key}[$i];
+                                                       }
+                                                       #copy saved rule to actual position
+                                                       foreach my $x (0 .. $#{$tmp{0}}) {
+                                                               $$hash{$key}[$x] = $tmp{0}[$x];
+                                                       }
+                                               }
+                                       }
+                               }
+                               $fwdfwsettings{'oldrulenumber'}--;
+                       }
+                       &General::writehasharray("$config", $hash);
+                       &General::firewall_config_changed();
+               }elsif($fwdfwsettings{'rulepos'} > $fwdfwsettings{'oldrulenumber'}){
+                       my %tmp=();
+                       my $val=$fwdfwsettings{'rulepos'}-$fwdfwsettings{'oldrulenumber'};
+                               for (my $z=0;$z<$val;$z++){
+                                       foreach my $key (sort {$a <=> $b} keys %$hash){
+                                       if ($key eq $fwdfwsettings{'oldrulenumber'}) {
+                                               my $next = $key + 1;
+                                               if (exists $$hash{$next}){
+                                                       #save rule next
+                                                       foreach my $y (0 .. $#{$$hash{$next}}) {
+                                                               $tmp{0}[$y] = $$hash{$next}[$y];
+                                                       }
+                                                       #copy active rule to next
+                                                       foreach my $i (0 .. $#{$$hash{$next}}) {
+                                                               $$hash{$next}[$i] = $$hash{$key}[$i];
+                                                       }
+                                                       #copy saved rule to actual position
+                                                       foreach my $x (0 .. $#{$tmp{0}}) {
+                                                               $$hash{$key}[$x] = $tmp{0}[$x];
+                                                       }
+                                               }
+                                       }
+                               }
+                               $fwdfwsettings{'oldrulenumber'}++;
+                       }
+                       &General::writehasharray("$config", $hash);
+                       &General::firewall_config_changed();
+               }
+       }
+}
+sub validremark
+{
+       # Checks a hostname against RFC1035
+        my $remark = $_[0];
+
+       # Each part should be at least two characters in length
+       # but no more than 63 characters
+       if (length ($remark) < 1 || length ($remark) > 255) {
+               return 0;}
+       # Only valid characters are a-z, A-Z, 0-9 and -
+       if ($remark !~ /^[a-zäöüA-ZÖÄÜ0-9-.:;\|_()\/\s]*$/) {
+               return 0;}
+       # First character can only be a letter or a digit
+       if (substr ($remark, 0, 1) !~ /^[a-zäöüA-ZÖÄÜ0-9]*$/) {
+               return 0;}
+       # Last character can only be a letter or a digit
+       if (substr ($remark, -1, 1) !~ /^[a-zöäüA-ZÖÄÜ0-9.:;_)]*$/) {
+               return 0;}
+       return 1;
+}
+sub viewtablerule
+{
+       &General::readhash("/var/ipfire/ethernet/settings", \%netsettings);
+       &viewtablenew(\%configfwdfw,$configfwdfw,"","Forward" );
+       &viewtablenew(\%configinputfw,$configinput,"",$Lang::tr{'fwdfw xt access'} );
+       &viewtablenew(\%configoutgoingfw,$configoutgoing,"","Outgoing" );
+}
+sub viewtablenew
+{
+       my $hash=shift;
+       my $config=shift;
+       my $title=shift;
+       my $title1=shift;
+       my $go='';
+       &General::get_aliases(\%aliases);
+       &General::readhasharray("$confighost", \%customhost);
+       &General::readhasharray("$config", $hash);
+       &General::readhasharray("$configccdnet", \%ccdnet);
+       &General::readhasharray("$configccdhost", \%ccdhost);
+       if( ! -z $config){
+               &Header::openbox('100%', 'left',$title);
+               my $count=0;
+               my ($gif,$log);
+               my $ruletype;
+               my $rulecolor;
+               my $tooltip;
+               my @tmpsrc=();
+               my $coloryellow='';
+               print <<END;
+                       <b>$title1</b>
+                       <br>
+
+                       <table width='100%' cellspacing='0' border='0'>
+                               <tr>
+                                       <th align='right' width='3%'>
+                                               #
+                                       </th>
+                                       <th width='2%'></th>
+                                       <th align='center'>
+                                               <b>$Lang::tr{'protocol'}</b>
+                                       </th>
+                                       <th align='center' width='30%'>
+                                               <b>$Lang::tr{'fwdfw source'}</b>
+                                       </th>
+                                       <th align='center'>
+                                               Log <!-- XXX UNTRANSLATED STRING -->
+                                       </th>
+                                       <th align='center' width='30%'>
+                                               <b>$Lang::tr{'fwdfw target'}</b>
+                                       </th>
+                                       <th align='center' colspan='6' width='18%'>
+                                               <b>$Lang::tr{'fwdfw action'}</b>
+                                       </th>
+                               </tr>
+END
+
+               foreach my $key (sort  {$a <=> $b} keys %$hash){
+                       $tdcolor='';
+                       @tmpsrc=();
+                       #check if vpn hosts/nets have been deleted
+                       if($$hash{$key}[3] =~ /ipsec/i || $$hash{$key}[3] =~ /ovpn/i){
+                               push (@tmpsrc,$$hash{$key}[4]);
+                       }
+                       if($$hash{$key}[5] =~ /ipsec/i || $$hash{$key}[5] =~ /ovpn/i){
+                               push (@tmpsrc,$$hash{$key}[6]);
+                       }
+                       foreach my $host (@tmpsrc){
+                               if($$hash{$key}[3] eq  'ipsec_net_src' || $$hash{$key}[5] eq 'ipsec_net_tgt'){
+                                       if(&fwlib::get_ipsec_net_ip($host,11) eq ''){
+                                               $coloryellow='on';
+                                               &disable_rule($key);
+                                               $$hash{$key}[2]='';
+                                       }
+                               }elsif($$hash{$key}[3] eq  'ovpn_net_src' || $$hash{$key}[5] eq 'ovpn_net_tgt'){
+                                       if(&fwlib::get_ovpn_net_ip($host,1) eq ''){
+                                               $coloryellow='on';
+                                               &disable_rule($key);
+                                               $$hash{$key}[2]='';
+                                       }
+                               }elsif($$hash{$key}[3] eq  'ovpn_n2n_src' || $$hash{$key}[5] eq 'ovpn_n2n_tgt'){
+                                       if(&fwlib::get_ovpn_n2n_ip($host,27) eq ''){
+                                               $coloryellow='on';
+                                               &disable_rule($key);
+                                               $$hash{$key}[2]='';
+                                       }
+                               }elsif($$hash{$key}[3] eq  'ovpn_host_src' || $$hash{$key}[5] eq 'ovpn_host_tgt'){
+                                       if(&fwlib::get_ovpn_host_ip($host,33) eq ''){
+                                               $coloryellow='on';
+                                               &disable_rule($key);
+                                               $$hash{$key}[2]='';
+                                       }
+                               }
+                       }
+                       $$hash{'ACTIVE'}=$$hash{$key}[2];
+                       $count++;
+                       if($coloryellow eq 'on'){
+                               print"<tr bgcolor='$color{'color14'}' >";
+                               $coloryellow='';
+                       }elsif($coloryellow eq ''){
+                               if ($count % 2){ 
+                                       $color="$color{'color22'}";
+                               }
+                               else{
+                                       $color="$color{'color20'}";
+                               }
+                       }
+                       print<<END;
+                               <tr bgcolor='$color'>
+                                       <td align='right' width='3%'>
+                                               <b>$key&nbsp;</b>
+                                       </td>
+END
+
+                       #RULETYPE (A,R,D)
+                       if ($$hash{$key}[0] eq 'ACCEPT'){
+                               $ruletype='A';
+                               $tooltip='ACCEPT';
+                               $rulecolor=$color{'color17'};
+                       }elsif($$hash{$key}[0] eq 'DROP'){
+                               $ruletype='D';
+                               $tooltip='DROP';
+                               $rulecolor=$color{'color25'};
+                       }elsif($$hash{$key}[0] eq 'REJECT'){
+                               $ruletype='R';
+                               $tooltip='REJECT';
+                               $rulecolor=$color{'color16'};
+                       }
+
+                       print <<END;
+                                       <td bgcolor='$rulecolor' align='center' width='2%'>
+                                               <span title='$tooltip'>&nbsp;&nbsp;</span>
+                                       </td>
+END
+
+                       #Get Protocol
+                       my $prot;
+                       if ($$hash{$key}[8]){
+                               if ($$hash{$key}[8] eq "IPv6"){
+                                       push (@protocols,$Lang::tr{'fwdfw prot41 short'})
+                               }else{
+                                       push (@protocols,$$hash{$key}[8]);
+                               }
+                       }elsif($$hash{$key}[14] eq 'cust_srv'){
+                               &get_serviceports("service",$$hash{$key}[15]);
+                       }elsif($$hash{$key}[14] eq 'cust_srvgrp'){
+                               &get_serviceports("group",$$hash{$key}[15]);
+                       }else{
+                               push (@protocols,$Lang::tr{'all'});
+                       }
+
+                       my $protz=join(",",@protocols);
+                       if($protz eq 'ICMP' && $$hash{$key}[9] ne 'All ICMP-Types' && $$hash{$key}[14] ne 'cust_srvgrp'){
+                               &General::readhasharray("${General::swroot}/fwhosts/icmp-types", \%icmptypes);
+                               foreach my $keyicmp (sort { ncmp($icmptypes{$a}[0],$icmptypes{$b}[0]) }keys %icmptypes){
+                                       if($$hash{$key}[9] eq "$icmptypes{$keyicmp}[0]"){
+                                               print "<td align='center'><span title='$icmptypes{$keyicmp}[0]'><b>$protz ($icmptypes{$keyicmp}[1])</b></span></td>";
+                                               last;
+                                       }
+                               }
+                       }else{
+                               print"<td align='center'>$protz</td>";
+                       }
+                       @protocols=();
+                       #SOURCE
+                       my $ipfireiface;
+                       &getcolor($$hash{$key}[3],$$hash{$key}[4],\%customhost);
+                       print"<td align='center' width='160' $tdcolor>";
+                       if ($$hash{$key}[3] eq 'ipfire_src'){
+                               $ipfireiface='Interface ';
+                       }
+                       if ($$hash{$key}[3] eq 'std_net_src'){
+                               print &get_name($$hash{$key}[4]);
+                       }elsif ($$hash{$key}[3] eq 'src_addr'){
+                               my ($split1,$split2) = split("/",$$hash{$key}[4]);
+                               if ($split2 eq '32'){
+                                       print $split1;
+                               }else{
+                                       print $$hash{$key}[4];
+                               }
+                       }elsif ($$hash{$key}[4] eq 'RED1'){
+                               print "$ipfireiface $Lang::tr{'fwdfw red'}";
+                       }else{
+                               print "$$hash{$key}[4]";
+                       }
+                       $tdcolor='';
+                       #SOURCEPORT
+                       &getsrcport(\%$hash,$key);
+                       #Is this a SNAT rule?
+                       if ($$hash{$key}[31] eq 'snat' && $$hash{$key}[28] eq 'ON'){
+                               my $net=&get_name($$hash{$key}[29]);
+                               if ( ! $net){ $net=$$hash{$key}[29];}
+                                       print"<br>->$net";
+                               if ($$hash{$key}[30] ne ''){
+                                       print": $$hash{$key}[30]";
+                               }
+                       }
+                       if ($$hash{$key}[17] eq 'ON'){
+                               $log="/images/on.gif";
+                       }else{
+                               $log="/images/off.gif";
+                       }
+                       #LOGGING
+                       print<<END;
+                                       </td>
+                                       <td align='center'>
+                                               <form method='POST' action=''>
+                                                       <input type='image' img src='$log' alt='$Lang::tr{'click to disable'}' title='$Lang::tr{'fwdfw togglelog'}' style='padding-top: 0px; padding-left: 0px; padding-bottom: 0px ;padding-right: 0px ;'/>
+                                                       <input type='hidden' name='key' value='$key' />
+                                                       <input type='hidden' name='config' value='$config' />
+                                                       <input type='hidden' name='ACTION' value='$Lang::tr{'fwdfw togglelog'}' />
+                                               </form>
+                                       </td>
+END
+                       #TARGET
+                       &getcolor($$hash{$key}[5],$$hash{$key}[6],\%customhost);
+                       print<<END;
+                                       <td align='center' $tdcolor>
+END
+                       #Is this a DNAT rule?
+                       if ($$hash{$key}[31] eq 'dnat' && $$hash{$key}[28] eq 'ON'){
+                               print "Firewall ($$hash{$key}[29])";
+                               if($$hash{$key}[30] ne ''){
+                                       $$hash{$key}[30]=~ tr/|/,/;
+                                       print": $$hash{$key}[30]";
+                               }
+                               print"<br>-&gt;";
+                       }
+                       if ($$hash{$key}[5] eq 'ipfire'){
+                               $ipfireiface='Interface';
+                       }
+                       if ($$hash{$key}[5] eq 'std_net_tgt' || $$hash{$key}[5] eq 'ipfire'  || $$hash{$key}[6] eq 'RED1' || $$hash{$key}[6] eq 'GREEN' || $$hash{$key}[6] eq 'ORANGE' || $$hash{$key}[6] eq 'BLUE' ){
+                               if ($$hash{$key}[6] eq 'RED1'){
+                                       print "$ipfireiface $Lang::tr{'red1'}";
+                               }elsif ($$hash{$key}[6] eq 'GREEN' || $$hash{$key}[6] eq 'ORANGE' || $$hash{$key}[6] eq 'BLUE'|| $$hash{$key}[6] eq 'ALL')
+                               {
+                                       print "$ipfireiface ".&get_name($$hash{$key}[6]);
+                               }else{
+                                       print $$hash{$key}[6];
+                               }
+                       }elsif ($$hash{$key}[5] eq 'tgt_addr'){
+                               my ($split1,$split2) = split("/",$$hash{$key}[6]);
+                               if ($split2 eq '32'){
+                                       print $split1;
+                               }else{
+                                       print $$hash{$key}[6];
+                               }
+                       }else{
+                               print "$$hash{$key}[6]";
+                       }
+                       $tdcolor='';
+                       #TARGETPORT
+                       &gettgtport(\%$hash,$key);
+                       print"</td>";
+                       #RULE ACTIVE
+                       if($$hash{$key}[2] eq 'ON'){
+                               $gif="/images/on.gif"
+                               
+                       }else{
+                               $gif="/images/off.gif"
+                       }
+                       print<<END;
+                               <td width='3%' align='center'>
+                                       <form method='POST' action=''>
+                                               <input type='image' img src='$gif' alt='$Lang::tr{'click to disable'}' title='$Lang::tr{'fwdfw toggle'}' style='padding-top: 0px; padding-left: 0px; padding-bottom: 0px ;padding-right: 0px ;display: block;' />
+                                               <input type='hidden' name='key' value='$key' />
+                                               <input type='hidden' name='config' value='$config' />
+                                               <input type='hidden' name='ACTION' value='$Lang::tr{'fwdfw toggle'}' />
+                                       </form>
+                               </td>
+                               <td width='3%' align='center'>
+                                       <form method='POST' action=''>
+                                               <input type='image' img src='/images/edit.gif' alt='$Lang::tr{'edit'}' title='$Lang::tr{'fwdfw edit'}' style='padding-top: 0px; padding-left: 0px; padding-bottom: 0px ;padding-right: 0px ;display: block;'  />
+                                               <input type='hidden' name='key' value='$key' />
+                                               <input type='hidden' name='config' value='$config' />
+                                               <input type='hidden' name='ACTION' value='editrule' />
+                                       </form>
+                               </td>
+                               <td width='3%' align='center'>
+                                       <form method='POST' action=''>
+                                               <input type='image' img src='/images/addblue.gif' alt='$Lang::tr{'fwdfw copy'}' title='$Lang::tr{'fwdfw copy'}' style='padding-top: 0px; padding-left: 0px; padding-bottom: 0px ;padding-right: 0px ;display: block;' />
+                                               <input type='hidden' name='key' value='$key' />
+                                               <input type='hidden' name='config' value='$config' />
+                                               <input type='hidden' name='ACTION' value='copyrule' />
+                                       </form>
+                               </td>
+                               <td width='3%' align='center'>
+                                       <form method='POST' action=''>
+                                               <input type='image' img src='/images/delete.gif' alt='$Lang::tr{'delete'}' title='$Lang::tr{'fwdfw delete'}' style='padding-top: 0px; padding-left: 0px; padding-bottom: 0px ;padding-right: 0px ;display: block;'   />
+                                               <input type='hidden' name='key' value='$key' />
+                                               <input type='hidden' name='config' value='$config' />
+                                               <input type='hidden' name='ACTION' value='deleterule' />
+                                       </form>
+                               </td>
+END
+                       if (exists $$hash{$key-1}){
+                               print<<END;
+                                       <td width='3%' align='center'>
+                                               <form method='POST' action=''>
+                                                       <input type='image' img src='/images/up.gif' alt='$Lang::tr{'fwdfw moveup'}' title='$Lang::tr{'fwdfw moveup'}'  style='padding-top: 0px; padding-left: 0px; padding-bottom: 0px ;padding-right: 0px ;display: block;'  />
+                                                       <input type='hidden' name='key' value='$key' />
+                                                       <input type='hidden' name='config' value='$config' />
+                                                       <input type='hidden' name='ACTION' value='moveup' />
+                                               </form>
+                                       </td>
+END
+                       }else{
+                               print"<td width='3%'></td>";
+                       }
+
+                       if (exists $$hash{$key+1}){
+                               print<<END;
+                                       <td width='3%' align='center'>
+                                               <form method='POST' action=''>
+                                                       <input type='image' img src='/images/down.gif' alt='$Lang::tr{'fwdfw movedown'}' title='$Lang::tr{'fwdfw movedown'}' style='padding-top: 0px; padding-left: 0px; padding-bottom: 0px ;padding-right: 0px ;display: block;'  />
+                                                       <input type='hidden' name='key' value='$key' />
+                                                       <input type='hidden' name='config' value='$config' />
+                                                       <input type='hidden' name='ACTION' value='movedown' />
+                                               </form>
+                                       </td>
+                               </tr>
+END
+                       }else{
+                               print"<td width='3%'></td></tr>";
+                       }
+                       #REMARK
+                       if ($optionsfw{'SHOWREMARK'} eq 'on' && $$hash{$key}[16] ne ''){
+                               print <<END;
+                                       <tr bgcolor='$color'>
+                                               <td>&nbsp;</td>
+                                               <td bgcolor='$rulecolor'></td>
+                                               <td colspan='10'>
+                                                       &nbsp; <em>$$hash{$key}[16]</em>
+                                               </td>
+                                       </tr>
+END
+                       }
+
+                       if ($$hash{$key}[18] eq 'ON'){
+                               #TIMEFRAME
+                               if ($$hash{$key}[18] eq 'ON'){
+                                       my @days=();
+                                       if($$hash{$key}[19] ne ''){push (@days,$Lang::tr{'fwdfw wd_mon'});}
+                                       if($$hash{$key}[20] ne ''){push (@days,$Lang::tr{'fwdfw wd_tue'});}
+                                       if($$hash{$key}[21] ne ''){push (@days,$Lang::tr{'fwdfw wd_wed'});}
+                                       if($$hash{$key}[22] ne ''){push (@days,$Lang::tr{'fwdfw wd_thu'});}
+                                       if($$hash{$key}[23] ne ''){push (@days,$Lang::tr{'fwdfw wd_fri'});}
+                                       if($$hash{$key}[24] ne ''){push (@days,$Lang::tr{'fwdfw wd_sat'});}
+                                       if($$hash{$key}[25] ne ''){push (@days,$Lang::tr{'fwdfw wd_sun'});}
+                                       my $weekdays=join(",",@days);
+                                       if (@days){
+                                               print"<tr bgcolor='$color'>";
+                                               print"<td>&nbsp;</td><td bgcolor='$rulecolor'></td><td align='left' colspan='10'>&nbsp; $weekdays &nbsp; $$hash{$key}[26] - $$hash{$key}[27]</td></tr>";
+                                       }
+                               }
+                       }
+                       print"<tr bgcolor='FFFFFF'><td colspan='13' height='1'></td></tr>";
+               }
+               print"</table>";
+               #SHOW FINAL RULE
+               print "<table width='100%'rules='cols' border='1'>";
+               my $col;
+               if ($config eq '/var/ipfire/firewall/config'){
+                       my $pol='fwdfw '.$fwdfwsettings{'POLICY'};
+                       if ($fwdfwsettings{'POLICY'} eq 'MODE1'){
+                               $col="bgcolor='darkred'";
+                       }else{
+                               $col="bgcolor='green'";
+                       }
+                       &show_defaultrules($col,$pol);
+               }elsif ($config eq '/var/ipfire/firewall/outgoing'){
+                       if ($fwdfwsettings{'POLICY1'} eq 'MODE1'){
+                               $col="bgcolor='darkred'";
+                               print"<tr><td $col width='20%' align='center'><font color='#FFFFFF'>$Lang::tr{'fwdfw final_rule'}</td><td $col align='center'><font color='#FFFFFF' >$Lang::tr{'fwdfw pol block'}</font></td></tr>";
+                       }else{
+                               $col="bgcolor='green'";
+                               print"<tr><td $col width='20%' align='center'><font color='#FFFFFF'>$Lang::tr{'fwdfw final_rule'}</td><td $col align='center'><font color='#FFFFFF' >$Lang::tr{'fwdfw pol allow'}</font></td></tr>";
+                       }
+               }else{
+                       print"<tr><td bgcolor='darkred' width='20%' align='center'><font color='#FFFFFF'>$Lang::tr{'fwdfw final_rule'}</td><td bgcolor='darkred' align='center'><font color='#FFFFFF'>$Lang::tr{'fwdfw pol block'}</font></td></tr>";
+               }
+               print"</table>";
+               print "<hr>";
+               print "<br><br>";
+               &Header::closebox();
+       }else{
+               if ($optionsfw{'SHOWTABLES'} eq 'on'){
+                       print "<b>$title1</b><br>";
+                       print"<table width='100%' border='0' rules='none'><tr><td height='30' bgcolor=$color{'color22'} align='center'>$Lang::tr{'fwhost empty'}</td></tr></table>";
+                       my $col;
+                       if ($config eq '/var/ipfire/firewall/config'){
+                               my $pol='fwdfw '.$fwdfwsettings{'POLICY'};
+                               if ($fwdfwsettings{'POLICY'} eq 'MODE1'){
+                                       $col="bgcolor='darkred'";
+                               }else{
+                                       $col="bgcolor='green'";
+                               }
+                               &show_defaultrules($col,$pol);
+                       }elsif ($config eq '/var/ipfire/firewall/outgoing'){
+                               print "<table width='100%' rules='cols' border='1'>";
+                               my $pol='fwdfw '.$fwdfwsettings{'POLICY1'};
+                               if ($fwdfwsettings{'POLICY1'} eq 'MODE1'){
+                                       $col="bgcolor='darkred'";
+                                       print"<tr><td $col align='center' width='20%'><font color='#FFFFFF'>$Lang::tr{'fwdfw final_rule'}</td><td $col align='center'><font color='#FFFFFF'>$Lang::tr{'fwdfw pol block'}</font></td></tr>";
+                               }else{
+                                       $col="bgcolor='green'";
+                                       print"<tr><td $col align='center' width='20%'><font color='#FFFFFF'>$Lang::tr{'fwdfw final_rule'}</td><td $col align='center'><font color='#FFFFFF'>$Lang::tr{'fwdfw pol allow'}</font></td></tr>";
+                               }
+                       }else{
+                               print "<table width='100%' rules='cols' border='1'>";
+                               print"<tr><td bgcolor='darkred' align='center' width='20%'><font color='#FFFFFF'>$Lang::tr{'fwdfw final_rule'}</td><td align='center' bgcolor='darkred'><font color='#FFFFFF'>$Lang::tr{'fwdfw pol block'}</font></td></tr>";
+                       }
+                       print"</table><br><br>";
+               }
+       }
+}
+&Header::closebigbox();
+&Header::closepage();
+
+sub show_defaultrules
+{
+       my $col=shift;
+       my $pol=shift;
+       #STANDARD RULES (From WIKI)
+       print"</table>";
+       if ($col eq "bgcolor='green'"){
+               print "<br><table width='100%' rules='cols' border='1' >";
+               my $blue   = "<font color=$Header::colourblue>    $Lang::tr{'blue'}</font> ($Lang::tr{'fwdfw pol block'})" if (&Header::blue_used());
+               my $orange = "<font color=$Header::colourorange>  $Lang::tr{'orange'}</font> ($Lang::tr{'fwdfw pol block'})" if (&Header::orange_used());
+               my $blue1   = "<font color=$Header::colourblue>    $Lang::tr{'blue'}</font> ($Lang::tr{'fwdfw pol allow'})" if (&Header::blue_used());
+               my $orange1 = "<font color=$Header::colourorange>  $Lang::tr{'orange'}</font> ($Lang::tr{'fwdfw pol allow'})" if (&Header::orange_used());
+               print"<tr><td align='center'><font color='#000000'>$Lang::tr{'green'}</td><td align='center'> <font color=$Header::colourred>  $Lang::tr{'red'}</font> ($Lang::tr{'fwdfw pol allow'})</td>";
+               print"<td align='center'>$orange1</td>" if (&Header::orange_used());
+               print"<td align='center'>$blue1</td>" if (&Header::blue_used());
+               print"</tr>";
+               if (&Header::orange_used()){
+                       print"<tr><td align='center' width='20%'><font color='#000000'>$Lang::tr{'orange'}</td><td align='center'> <font color=$Header::colourred>  $Lang::tr{'red'}</font> ($Lang::tr{'fwdfw pol allow'})</td><td align='center'><font color=$Header::colourgreen>  $Lang::tr{'green'}</font> ($Lang::tr{'fwdfw pol block'})</td>";
+                       print"<td align='center'>$blue</td>" if (&Header::blue_used());
+                       print"</tr>";
+               }
+               if (&Header::blue_used()){
+                       print"<tr><td align='center'><font color='#000000'>$Lang::tr{'blue'}</td><td align='center'> <font color=$Header::colourred>  $Lang::tr{'red'}</font> ($Lang::tr{'fwdfw pol allow'})</td>";
+                       print"<td align='center'>$orange</td>" if (&Header::orange_used());
+                       print"<td align='center'><font color=$Header::colourgreen>  $Lang::tr{'green'}</font> ($Lang::tr{'fwdfw pol block'})</td>";
+                       print"</tr>";
+               }
+               print"<tr><td $col align='center'><font color='#FFFFFF'>$Lang::tr{'fwdfw final_rule'} </font></td><td $col colspan='3' align='center'><font color='#FFFFFF'>$Lang::tr{'fwdfw pol allow'}</font></td></tr>";
+       }elsif($col eq "bgcolor='darkred'"){
+               print "<table width='100%' rules='cols' border='1' >";
+               print"<tr><td $col width='20%' align='center'><font color='#FFFFFF'>$Lang::tr{'fwdfw final_rule'}</td><td $col align='center'><font color='#FFFFFF'>$Lang::tr{'fwdfw pol block'}</font></td></tr>";
+       }
+}
diff --git a/html/cgi-bin/fwhosts.cgi b/html/cgi-bin/fwhosts.cgi
new file mode 100755 (executable)
index 0000000..fd66a49
--- /dev/null
@@ -0,0 +1,2201 @@
+#!/usr/bin/perl
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2013 Alexander Marx <amarx@ipfire.org>                        #
+#                                                                             #
+# This program is free software: you can redistribute it and/or modify        #
+# it under the terms of the GNU General Public License as published by        #
+# the Free Software Foundation, either version 3 of the License, or           #
+# (at your option) any later version.                                         #
+#                                                                             #
+# This program is distributed in the hope that it will be useful,             #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
+# GNU General Public License for more details.                                #
+#                                                                             #
+# You should have received a copy of the GNU General Public License           #
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+use strict;
+
+# enable only the following on debugging purpose
+use warnings;
+use Sort::Naturally;
+use CGI::Carp 'fatalsToBrowser';
+no warnings 'uninitialized';
+require '/var/ipfire/general-functions.pl';
+require "${General::swroot}/lang.pl";
+require "${General::swroot}/header.pl";
+
+my %fwhostsettings=();
+my %customnetwork=();
+my %customhost=();
+my %customgrp=();
+my %customservice=();
+my %customservicegrp=();
+my %ccdnet=();
+my %ccdhost=();
+my %ipsecconf=();
+my %icmptypes=();
+my %color=();
+my %defaultNetworks=();
+my %mainsettings=();
+my %ownnet=();
+my %ipsecsettings=();
+my %fwfwd=();
+my %fwinp=();
+my %ovpnsettings=();
+
+
+my $errormessage;
+my $hint;
+my $update=0;
+my $confignet          = "${General::swroot}/fwhosts/customnetworks";
+my $confighost         = "${General::swroot}/fwhosts/customhosts";
+my $configgrp          = "${General::swroot}/fwhosts/customgroups";
+my $configccdnet       = "${General::swroot}/ovpn/ccd.conf";
+my $configccdhost      = "${General::swroot}/ovpn/ovpnconfig";
+my $configipsec                = "${General::swroot}/vpn/config";
+my $configsrv          = "${General::swroot}/fwhosts/customservices";
+my $configsrvgrp       = "${General::swroot}/fwhosts/customservicegrp";
+my $fwconfigfwd                = "${General::swroot}/firewall/config";
+my $fwconfiginp                = "${General::swroot}/firewall/input";
+my $configovpn         = "${General::swroot}/ovpn/settings";
+my $tdcolor='';
+my $configipsecrw      = "${General::swroot}/vpn/settings";
+
+unless (-e $confignet)    { system("touch $confignet"); }
+unless (-e $confighost)   { system("touch $confighost"); }
+unless (-e $configgrp)    { system("touch $configgrp"); }
+unless (-e $configsrv)    { system("touch $configsrv"); }
+unless (-e $configsrvgrp) { system("touch $configsrvgrp"); }
+
+&General::readhash("${General::swroot}/main/settings", \%mainsettings);
+&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("${General::swroot}/ethernet/settings", \%ownnet);
+&General::readhash("$configovpn", \%ovpnsettings);
+&General::readhasharray("$configipsec", \%ipsecconf);
+&General::readhash("$configipsecrw", \%ipsecsettings);
+
+&Header::getcgihash(\%fwhostsettings);
+
+&Header::showhttpheaders();
+&Header::openpage($Lang::tr{'fwhost hosts'}, 1, '');
+&Header::openbigbox('100%', 'center');
+
+#### JAVA SCRIPT ####
+print<<END;
+<script>
+       var PROTOCOLS_WITH_PORTS = ["TCP", "UDP"];
+       var update_protocol = function() {
+               var protocol = \$("#protocol").val();
+
+               if (protocol === undefined)
+                       return;
+
+               // Check if we are dealing with a protocol, that knows ports.
+               if (\$.inArray(protocol, PROTOCOLS_WITH_PORTS) >= 0) {
+                       \$("#PORT").show();
+                       \$("#PROTOKOLL").hide();
+               } else {
+                       \$("#PORT").hide();
+                       \$("#PROTOKOLL").show();
+               }
+       };
+
+       \$(document).ready(function() {
+               var protocol = \$("#protocol").val();
+               \$("#protocol").change(update_protocol);
+               update_protocol();
+       });
+</script>
+END
+
+## ACTION ####
+# Update
+if ($fwhostsettings{'ACTION'} eq 'updatenet' )
+{
+       &General::readhasharray("$confignet", \%customnetwork);
+       foreach my $key (keys %customnetwork)
+       {
+               if($customnetwork{$key}[0] eq $fwhostsettings{'orgname'})
+               {
+                       $fwhostsettings{'orgname'}              = $customnetwork{$key}[0];
+                       $fwhostsettings{'orgip'}                = $customnetwork{$key}[1];
+                       $fwhostsettings{'orgsub'}               = $customnetwork{$key}[2];
+                       $fwhostsettings{'netremark'}    = $customnetwork{$key}[3];
+                       $fwhostsettings{'count'}                = $customnetwork{$key}[4];
+                       delete $customnetwork{$key};
+                       
+               }
+       }
+       &General::writehasharray("$confignet", \%customnetwork);
+       $fwhostsettings{'actualize'} = 'on';
+       $fwhostsettings{'ACTION'} = 'savenet';
+}
+if ($fwhostsettings{'ACTION'} eq 'updatehost')
+{
+       my ($ip,$subnet);
+       &General::readhasharray("$confighost", \%customhost);
+       foreach my $key (keys %customhost)
+       {
+               if($customhost{$key}[0] eq $fwhostsettings{'orgname'})
+               {
+                       if ($customhost{$key}[1] eq 'ip'){
+                               ($ip,$subnet) = split (/\//,$customhost{$key}[2]);
+                       }else{
+                               $ip = $customhost{$key}[2];
+                       }
+                       $fwhostsettings{'orgip'} = $ip;
+                       $fwhostsettings{'count'} = $customhost{$key}[4];
+                       delete $customhost{$key};
+                       &General::writehasharray("$confighost", \%customhost);
+               }
+       }
+       $fwhostsettings{'actualize'} = 'on';
+       if($fwhostsettings{'orgip'}){
+       $fwhostsettings{'ACTION'} = 'savehost';
+       }else{
+               $fwhostsettings{'ACTION'} = $Lang::tr{'fwhost newhost'};
+       }
+}
+if ($fwhostsettings{'ACTION'} eq 'updateservice')
+{
+       my $count=0;
+       my $needrules=0;
+       $errormessage=&checkports(\%customservice);
+       if (!$errormessage){
+               &General::readhasharray("$configsrv", \%customservice);
+               foreach my $key (keys %customservice)
+               {
+                       if ($customservice{$key}[0] eq $fwhostsettings{'oldsrvname'})
+                       {
+                               $count=$customservice{$key}[4];
+                               delete $customservice{$key};
+                               &General::writehasharray("$configsrv", \%customservice);
+                               last;
+                       }
+               }
+               if ($fwhostsettings{'PROT'} ne 'ICMP'){
+                       $fwhostsettings{'ICMP_TYPES'}='BLANK';
+               }
+               my $key1 = &General::findhasharraykey(\%customservice);
+               #find out short ICMP-TYPE
+               &General::readhasharray("${General::swroot}/fwhosts/icmp-types", \%icmptypes);
+               foreach my $key (keys %icmptypes){
+                       if ("$icmptypes{$key}[0] ($icmptypes{$key}[1])" eq $fwhostsettings{'ICMP_TYPES'}){
+                                       $fwhostsettings{'ICMP_TYPES'}=$icmptypes{$key}[0];
+                       }
+               }
+               foreach my $i (0 .. 4) { $customservice{$key1}[$i] = "";}
+               $customservice{$key1}[0] = $fwhostsettings{'SRV_NAME'};
+               $customservice{$key1}[1] = $fwhostsettings{'SRV_PORT'};
+               $customservice{$key1}[2] = $fwhostsettings{'PROT'};
+               $customservice{$key1}[3] = $fwhostsettings{'ICMP_TYPES'};
+               $customservice{$key1}[4] = $count;
+               &General::writehasharray("$configsrv", \%customservice);
+               #check if we need to update firewallrules
+               if ($fwhostsettings{'SRV_NAME'} ne $fwhostsettings{'oldsrvname'}){
+                       if ( ! -z $fwconfigfwd ){
+                               &General::readhasharray("$fwconfigfwd", \%fwfwd);
+                               foreach my $key (sort keys %fwfwd){
+                                       if ($fwfwd{$key}[15] eq $fwhostsettings{'oldsrvname'}){
+                                               $fwfwd{$key}[15] = $fwhostsettings{'SRV_NAME'};
+                                       }
+                               }
+                               &General::writehasharray("$fwconfigfwd", \%fwfwd);
+                       }
+                       if ( ! -z $fwconfiginp ){
+                               &General::readhasharray("$fwconfiginp", \%fwinp);
+                               foreach my $line (sort keys %fwinp){
+                                       if ($fwfwd{$line}[15] eq $fwhostsettings{'oldsrvname'}){
+                                               $fwfwd{$line}[15] = $fwhostsettings{'SRV_NAME'};
+                                       }
+                               }
+                               &General::writehasharray("$fwconfiginp", \%fwinp);
+                       }
+                       #check if we need to update groups
+                       &General::readhasharray("$configsrvgrp", \%customservicegrp);
+                       foreach my $key (sort keys %customservicegrp){
+                               if($customservicegrp{$key}[2] eq $fwhostsettings{'oldsrvname'}){
+                                       $customservicegrp{$key}[2] = $fwhostsettings{'SRV_NAME'};
+                               }
+                       }
+                       &General::writehasharray("$configsrvgrp", \%customservicegrp);
+                       $needrules='on';
+               }
+               if($count gt 0 && $fwhostsettings{'oldsrvport'} ne $fwhostsettings{'SRV_PORT'} ){
+                       $needrules='on';
+               }
+               if($count gt 0 && $fwhostsettings{'oldsrvprot'} ne $fwhostsettings{'PROT'} ){
+                       $needrules='on';
+               }
+               if($count gt 0 && $fwhostsettings{'oldsrvicmp'} ne $fwhostsettings{'ICMP'} ){
+                       $needrules='on';
+               }
+               $fwhostsettings{'SRV_NAME'}     = '';
+               $fwhostsettings{'SRV_PORT'}     = '';
+               $fwhostsettings{'PROT'}         = '';
+               $fwhostsettings{'ICMP'}         = '';
+               $fwhostsettings{'oldsrvicmp'} = '';
+       }else{
+               $fwhostsettings{'SRV_NAME'}     = $fwhostsettings{'oldsrvname'};
+               $fwhostsettings{'SRV_PORT'}     = $fwhostsettings{'oldsrvport'};
+               $fwhostsettings{'PROT'}         = $fwhostsettings{'oldsrvprot'};
+               $fwhostsettings{'ICMP'}         = $fwhostsettings{'oldsrvicmp'};
+               $fwhostsettings{'updatesrv'}= 'on';
+       }
+       $fwhostsettings{'updatesrv'} = '';
+       if($needrules eq 'on'){
+               &General::firewall_config_changed();
+       }
+       &addservice;
+}
+# save
+if ($fwhostsettings{'ACTION'} eq 'savenet' )
+{
+       my $count=0;
+       my $needrules=0;
+       if ($fwhostsettings{'orgname'} eq ''){$fwhostsettings{'orgname'}=$fwhostsettings{'HOSTNAME'};}
+       #check if all fields are set
+       if ($fwhostsettings{'HOSTNAME'} eq '' || $fwhostsettings{'IP'} eq '' || $fwhostsettings{'SUBNET'} eq '')
+       {
+               $errormessage=$errormessage.$Lang::tr{'fwhost err empty'};
+               &addnet;
+               &viewtablenet;
+       }else{
+               #check valid ip 
+               if (!&General::validipandmask($fwhostsettings{'IP'}."/".$fwhostsettings{'SUBNET'}))
+               {
+                       $errormessage=$errormessage.$Lang::tr{'fwhost err addr'};
+                       $fwhostsettings{'BLK_HOST'}     ='readonly';
+                       $fwhostsettings{'NOCHECK'}      ='false';
+                       $fwhostsettings{'error'}        ='on';
+               }
+               #check remark
+               if ($fwhostsettings{'NETREMARK'} ne '' && !&validremark($fwhostsettings{'NETREMARK'})){
+                       $errormessage=$Lang::tr{'fwhost err remark'};
+                       $fwhostsettings{'error'}        ='on';
+               }
+               #check if subnet is sigle host
+               if(&General::iporsubtocidr($fwhostsettings{'SUBNET'}) eq '32')
+               {
+                       $errormessage=$errormessage.$Lang::tr{'fwhost err sub32'};
+               }
+               if($fwhostsettings{'error'} ne 'on'){
+                       #check if we use one of ipfire's networks (green,orange,blue)
+                       if (($ownnet{'GREEN_NETADDRESS'}        ne '' && $ownnet{'GREEN_NETADDRESS'}    ne '0.0.0.0') && &General::IpInSubnet($fwhostsettings{'IP'},$ownnet{'GREEN_NETADDRESS'},$ownnet{'GREEN_NETMASK'}))
+                       { 
+                               $errormessage=$errormessage.$Lang::tr{'ccd err green'}."<br>";
+                               $fwhostsettings{'HOSTNAME'} = $fwhostsettings{'orgname'};
+                               if ($fwhostsettings{'update'} eq 'on'){$fwhostsettings{'ACTION'}='editnet';}
+                       }
+                       if (($ownnet{'ORANGE_NETADDRESS'}       ne '' && $ownnet{'ORANGE_NETADDRESS'}   ne '0.0.0.0') && &General::IpInSubnet($fwhostsettings{'IP'},$ownnet{'ORANGE_NETADDRESS'},$ownnet{'ORANGE_NETMASK'}))
+                       { 
+                               $errormessage=$errormessage.$Lang::tr{'ccd err orange'}."<br>";
+                               $fwhostsettings{'HOSTNAME'} = $fwhostsettings{'orgname'};
+                               if ($fwhostsettings{'update'} eq 'on'){$fwhostsettings{'ACTION'}='editnet';}
+                       }
+                       if (($ownnet{'BLUE_NETADDRESS'}         ne '' && $ownnet{'BLUE_NETADDRESS'}     ne '0.0.0.0') && &General::IpInSubnet($fwhostsettings{'IP'},$ownnet{'BLUE_NETADDRESS'},$ownnet{'BLUE_NETMASK'}))
+                       { 
+                               $errormessage=$errormessage.$Lang::tr{'ccd err blue'}."<br>";
+                               $fwhostsettings{'HOSTNAME'} = $fwhostsettings{'orgname'};
+                               if ($fwhostsettings{'update'} eq 'on'){$fwhostsettings{'ACTION'}='editnet';}
+                       }
+                       if (($ownnet{'RED_NETADDRESS'}  ne '' && $ownnet{'RED_NETADDRESS'}              ne '0.0.0.0') && &General::IpInSubnet($fwhostsettings{'IP'},$ownnet{'RED_NETADDRESS'},$ownnet{'RED_NETMASK'}))
+                       { 
+                               $errormessage=$errormessage.$Lang::tr{'ccd err red'}."<br>";
+                               $fwhostsettings{'HOSTNAME'} = $fwhostsettings{'orgname'};
+                               if ($fwhostsettings{'update'} eq 'on'){$fwhostsettings{'ACTION'}='editnet';}
+                       }
+               }
+               #only check plausi when no error till now
+               if (!$errormessage){
+                       &plausicheck("editnet");
+               }
+               #check if network ip is part of an already used one 
+               if(&checksubnet(\%customnetwork))
+               {
+                       $errormessage=$errormessage.$Lang::tr{'fwhost err partofnet'};
+                       $fwhostsettings{'HOSTNAME'} = $fwhostsettings{'orgname'};
+               }                               
+               if($fwhostsettings{'actualize'} eq 'on' && $fwhostsettings{'newnet'} ne 'on' && $errormessage)
+               {
+                       $fwhostsettings{'actualize'} = '';
+                       my $key = &General::findhasharraykey (\%customnetwork);
+                       foreach my $i (0 .. 3) { $customnetwork{$key}[$i] = "";}
+                       $customnetwork{$key}[0] = $fwhostsettings{'orgname'} ;
+                       $customnetwork{$key}[1] = $fwhostsettings{'orgip'} ;
+                       $customnetwork{$key}[2] = $fwhostsettings{'orgsub'};
+                       $customnetwork{$key}[3] = $fwhostsettings{'orgnetremark'};
+                       $customnetwork{$key}[4] = $fwhostsettings{'count'};
+                       &General::writehasharray("$confignet", \%customnetwork);
+                       undef %customnetwork;
+               }                       
+               if (!$errormessage){
+                       
+                       &General::readhasharray("$confignet", \%customnetwork);
+                       if ($fwhostsettings{'ACTION'} eq 'updatenet'){
+                               if ($fwhostsettings{'update'} == '0'){
+                                       foreach my $key (keys %customnetwork) {
+                                               if($customnetwork{$key}[0] eq $fwhostsettings{'orgname'}){
+                                                       $count=$customnetwork{$key}[4];
+                                                       delete $customnetwork{$key};
+                                                       last;
+                                               }
+                                       }
+                               }
+                       }
+                       #get count if actualize is 'on'
+                       if($fwhostsettings{'actualize'} eq 'on'){
+                               $fwhostsettings{'actualize'} = '';
+                               $count=$fwhostsettings{'count'};
+                               #check if we need to reload rules
+                               if($fwhostsettings{'orgip'}  ne $fwhostsettings{'IP'}  && $count gt '0'){
+                                       $needrules='on';
+                               }
+                               if ($fwhostsettings{'orgname'} ne $fwhostsettings{'HOSTNAME'}){
+                                       #check if we need to update groups
+                                       &General::readhasharray("$configgrp", \%customgrp);
+                                       foreach my $key (sort keys %customgrp){
+                                               if($customgrp{$key}[2] eq $fwhostsettings{'orgname'}){
+                                                       $customgrp{$key}[2]=$fwhostsettings{'HOSTNAME'};
+                                                       last;
+                                               }
+                                       }
+                                       &General::writehasharray("$configgrp", \%customgrp);
+                                       #check if we need to update firewallrules
+                                       if ( ! -z $fwconfigfwd ){
+                                               &General::readhasharray("$fwconfigfwd", \%fwfwd);
+                                               foreach my $line (sort keys %fwfwd){
+                                                       if ($fwfwd{$line}[4] eq $fwhostsettings{'orgname'}){
+                                                               $fwfwd{$line}[4] = $fwhostsettings{'HOSTNAME'};
+                                                       }
+                                                       if ($fwfwd{$line}[6] eq $fwhostsettings{'orgname'}){
+                                                               $fwfwd{$line}[6] = $fwhostsettings{'HOSTNAME'};
+                                                       }
+                                               }
+                                               &General::writehasharray("$fwconfigfwd", \%fwfwd);
+                                       }
+                                       if ( ! -z $fwconfiginp ){
+                                               &General::readhasharray("$fwconfiginp", \%fwinp);
+                                               foreach my $line (sort keys %fwinp){
+                                                       if ($fwfwd{$line}[4] eq $fwhostsettings{'orgname'}){
+                                                               $fwfwd{$line}[4] = $fwhostsettings{'HOSTNAME'};
+                                                       }
+                                               }
+                                               &General::writehasharray("$fwconfiginp", \%fwinp);
+                                       }
+                               }
+                       }                                       
+                       my $key = &General::findhasharraykey (\%customnetwork);
+                       foreach my $i (0 .. 4) { $customnetwork{$key}[$i] = "";}
+                       $fwhostsettings{'SUBNET'}       = &General::iporsubtocidr($fwhostsettings{'SUBNET'});
+                       $customnetwork{$key}[0]         = $fwhostsettings{'HOSTNAME'};
+                       #convert ip when leading '0' in byte
+                       $fwhostsettings{'IP'}           =&General::ip2dec($fwhostsettings{'IP'});
+                       $fwhostsettings{'IP'}           =&General::dec2ip($fwhostsettings{'IP'});
+                       $customnetwork{$key}[1]         = &General::getnetworkip($fwhostsettings{'IP'},$fwhostsettings{'SUBNET'}) ;
+                       $customnetwork{$key}[2]         = &General::iporsubtodec($fwhostsettings{'SUBNET'}) ;
+                       if($fwhostsettings{'newnet'} eq 'on'){$count=0;}
+                       $customnetwork{$key}[3]         = $fwhostsettings{'NETREMARK'};
+                       $customnetwork{$key}[4]         = $count;
+                       &General::writehasharray("$confignet", \%customnetwork);
+                       $fwhostsettings{'IP'}=$fwhostsettings{'IP'}."/".&General::iporsubtodec($fwhostsettings{'SUBNET'});
+                       undef %customnetwork;
+                       $fwhostsettings{'HOSTNAME'}='';
+                       $fwhostsettings{'IP'}='';
+                       $fwhostsettings{'SUBNET'}='';
+                       $fwhostsettings{'NETREMARK'}='';
+                       #check if an edited net affected groups and need to reload rules
+                       if ($needrules eq 'on'){
+                               &General::firewall_config_changed();
+                       }
+                       &addnet;
+                       &viewtablenet;
+               }else           {
+                       &addnet;
+                       &viewtablenet;
+               }
+       }
+}
+if ($fwhostsettings{'ACTION'} eq 'savehost')
+{
+       my $count=0;
+       my $needrules=0;
+       if ($fwhostsettings{'orgname'} eq ''){$fwhostsettings{'orgname'}=$fwhostsettings{'HOSTNAME'};}
+       $fwhostsettings{'SUBNET'}='32';
+       #check if all fields are set
+       if ($fwhostsettings{'HOSTNAME'} eq '' || $fwhostsettings{'IP'} eq '' || $fwhostsettings{'SUBNET'} eq '')
+       {
+               $errormessage=$errormessage.$Lang::tr{'fwhost err empty'};
+               $fwhostsettings{'ACTION'} = 'edithost';
+       }else{
+               if($fwhostsettings{'IP'}=~/^([0-9a-fA-F]{1,2}:){5}[0-9a-fA-F]{1,2}$/){
+                       $fwhostsettings{'type'} = 'mac';
+               }elsif($fwhostsettings{'IP'}=~/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/){
+                       $fwhostsettings{'type'} = 'ip';
+               }else{
+                       $fwhostsettings{'type'} = '';
+                       $errormessage=$Lang::tr{'fwhost err ipmac'};
+               }
+               #check remark
+               if ($fwhostsettings{'HOSTREMARK'} ne '' && !&validremark($fwhostsettings{'HOSTREMARK'})){
+                       $errormessage=$Lang::tr{'fwhost err remark'};
+               }
+               #CHECK IP-PART
+               if ($fwhostsettings{'type'} eq 'ip'){
+                       #check for subnet
+                       if (rindex($fwhostsettings{'IP'},'/') eq '-1' ){
+                               if($fwhostsettings{'type'} eq 'ip' && !&General::validipandmask($fwhostsettings{'IP'}."/32"))
+                                       {
+                                               $errormessage.=$errormessage.$Lang::tr{'fwhost err ip'};
+                                               $fwhostsettings{'error'}='on';
+                                       }
+                       }elsif(rindex($fwhostsettings{'IP'},'/') ne '-1' ){
+                               $errormessage=$errormessage.$Lang::tr{'fwhost err ipwithsub'};
+                               $fwhostsettings{'error'}='on';
+                       }
+                       #check if net or broadcast
+                       my @tmp= split (/\./,$fwhostsettings{'IP'});
+                       if (($tmp[3] eq "0") || ($tmp[3] eq "255")){
+                               $errormessage=$Lang::tr{'fwhost err hostip'};
+                       }
+               }
+               #only check plausi when no error till now
+               if (!$errormessage){    
+                       &plausicheck("edithost");
+               }
+               if($fwhostsettings{'actualize'} eq 'on' && $fwhostsettings{'newhost'} ne 'on' && $errormessage){
+                       $fwhostsettings{'actualize'} = '';
+                       my $key = &General::findhasharraykey (\%customhost);
+                       foreach my $i (0 .. 4) { $customhost{$key}[$i] = "";}
+                       $customhost{$key}[0] = $fwhostsettings{'orgname'} ;
+                       $customhost{$key}[1] = $fwhostsettings{'type'} ;
+                       if($customhost{$key}[1] eq 'ip'){
+                               $customhost{$key}[2] = $fwhostsettings{'orgip'}."/".&General::iporsubtodec($fwhostsettings{'SUBNET'});
+                       }else{
+                               $customhost{$key}[2] = $fwhostsettings{'orgip'};
+                       }
+                       $customhost{$key}[3] = $fwhostsettings{'orgremark'};
+                       $customhost{$key}[4] = $fwhostsettings{'count'};
+                       &General::writehasharray("$confighost", \%customhost);
+                       undef %customhost;
+               } 
+               if (!$errormessage){
+                       #get count if host was edited
+                       if($fwhostsettings{'actualize'} eq 'on'){
+                               $count=$fwhostsettings{'count'};
+                               if($fwhostsettings{'orgip'} ne $fwhostsettings{'IP'} && $count gt '0' ){
+                                       $needrules='on';
+                               }
+                               if($fwhostsettings{'orgname'} ne $fwhostsettings{'HOSTNAME'}){
+                                       #check if we need to update groups
+                                       &General::readhasharray("$configgrp", \%customgrp);
+                                       foreach my $key (sort keys %customgrp){
+                                               if($customgrp{$key}[2] eq $fwhostsettings{'orgname'}){
+                                                       $customgrp{$key}[2]=$fwhostsettings{'HOSTNAME'};
+                                               }
+                                       }
+                                       &General::writehasharray("$configgrp", \%customgrp);
+                                       #check if we need to update firewallrules
+                                       if ( ! -z $fwconfigfwd ){
+                                               &General::readhasharray("$fwconfigfwd", \%fwfwd);
+                                               foreach my $line (sort keys %fwfwd){
+                                                       if ($fwfwd{$line}[4] eq $fwhostsettings{'orgname'}){
+                                                               $fwfwd{$line}[4] = $fwhostsettings{'HOSTNAME'};
+                                                       }
+                                                       if ($fwfwd{$line}[6] eq $fwhostsettings{'orgname'}){
+                                                               $fwfwd{$line}[6] = $fwhostsettings{'HOSTNAME'};
+                                                       }
+                                               }
+                                               &General::writehasharray("$fwconfigfwd", \%fwfwd);
+                                       }
+                                       if ( ! -z $fwconfiginp ){
+                                               &General::readhasharray("$fwconfiginp", \%fwinp);
+                                               foreach my $line (sort keys %fwinp){
+                                                       if ($fwfwd{$line}[4] eq $fwhostsettings{'orgname'}){
+                                                               $fwfwd{$line}[4] = $fwhostsettings{'HOSTNAME'};
+                                                       }
+                                               }
+                                               &General::writehasharray("$fwconfiginp", \%fwinp);
+                                       }
+                               }
+                       }
+                       my $key = &General::findhasharraykey (\%customhost);
+                       foreach my $i (0 .. 4) { $customhost{$key}[$i] = "";}
+                       $customhost{$key}[0] = $fwhostsettings{'HOSTNAME'} ;
+                       $customhost{$key}[1] = $fwhostsettings{'type'} ;
+                       if ($fwhostsettings{'type'} eq 'ip'){
+                               #convert ip when leading '0' in byte
+                               $fwhostsettings{'IP'}=&General::ip2dec($fwhostsettings{'IP'});
+                               $fwhostsettings{'IP'}=&General::dec2ip($fwhostsettings{'IP'});
+                               $customhost{$key}[2] = $fwhostsettings{'IP'}."/".&General::iporsubtodec($fwhostsettings{'SUBNET'});
+                       }else{
+                               $customhost{$key}[2] = $fwhostsettings{'IP'};
+                       }
+                       if($fwhostsettings{'newhost'} eq 'on'){$count=0;}
+                       $customhost{$key}[3] = $fwhostsettings{'HOSTREMARK'};
+                       $customhost{$key}[4] =$count;
+                       &General::writehasharray("$confighost", \%customhost);
+                       undef %customhost;
+                       $fwhostsettings{'HOSTNAME'}='';
+                       $fwhostsettings{'IP'}='';
+                       $fwhostsettings{'type'}='';
+                        $fwhostsettings{'HOSTREMARK'}='';
+                       #check if we need to update rules while host was edited
+                       if($needrules eq 'on'){
+                               &General::firewall_config_changed();
+                       }
+                       &addhost;
+                       &viewtablehost;
+               }else{
+                       &addhost;
+                       &viewtablehost;
+               }
+       }
+}
+if ($fwhostsettings{'ACTION'} eq 'savegrp')
+{
+       my $grp=$fwhostsettings{'grp_name'};;
+       my $rem=$fwhostsettings{'remark'};
+       my $count;
+       my $type;
+       my $updcounter='off';
+       my @target;
+       my @newgrp;
+       &General::readhasharray("$configgrp", \%customgrp);
+       &General::readhasharray("$confignet", \%customnetwork);
+       &General::readhasharray("$confighost", \%customhost);
+       #check name
+       if (!&validhostname($grp)){$errormessage.=$Lang::tr{'fwhost err name'};}
+       #check existing name
+       if (!checkgroup(\%customgrp,$grp) && $fwhostsettings{'update'} ne 'on'){$errormessage.=$Lang::tr{'fwhost err grpexist'};}
+       #check remark
+       if ($rem ne '' && !&validremark($rem) && $fwhostsettings{'update'} ne 'on'){
+               $errormessage.=$Lang::tr{'fwhost err remark'};
+       }
+       if ($fwhostsettings{'update'} eq 'on'){
+               #check standard networks
+               if ($fwhostsettings{'grp2'} eq 'std_net'){
+                       @target=$fwhostsettings{'DEFAULT_SRC_ADR'};
+                       $type='Standard Network';       
+               }
+               #check custom networks
+               if ($fwhostsettings{'grp2'} eq 'cust_net' && $fwhostsettings{'CUST_SRC_NET'} ne ''){
+                       @target=$fwhostsettings{'CUST_SRC_NET'};
+                       $updcounter='net';
+                       $type='Custom Network';
+               }elsif($fwhostsettings{'grp2'} eq 'cust_net' && $fwhostsettings{'CUST_SRC_NET'} eq ''){
+                       $errormessage=$Lang::tr{'fwhost err groupempty'}."<br>";
+                       $fwhostsettings{'grp_name'}='';
+                       $fwhostsettings{'remark'}='';
+               }
+               #check custom addresses
+               if ($fwhostsettings{'grp2'} eq 'cust_host' && $fwhostsettings{'CUST_SRC_HOST'} ne ''){
+                       @target=$fwhostsettings{'CUST_SRC_HOST'};
+                       $updcounter='host';
+                       $type='Custom Host';
+               }elsif($fwhostsettings{'grp2'} eq 'cust_host' && $fwhostsettings{'CUST_SRC_HOST'} eq ''){
+                       $errormessage=$Lang::tr{'fwhost err groupempty'}."<br>";
+                       $fwhostsettings{'grp_name'}='';
+                       $fwhostsettings{'remark'}='';
+               }
+               #get address from  ovpn ccd static net
+               if ($fwhostsettings{'grp2'} eq 'ovpn_net' && $fwhostsettings{'OVPN_CCD_NET'} ne ''){
+                       @target=$fwhostsettings{'OVPN_CCD_NET'};
+                       $type='OpenVPN static network';
+               }elsif($fwhostsettings{'grp2'} eq 'ovpn_net' && $fwhostsettings{'OVPN_CCD_NET'} eq ''){
+                       $errormessage=$Lang::tr{'fwhost err groupempty'};
+                       $fwhostsettings{'grp_name'}='';
+                       $fwhostsettings{'remark'}='';
+               }
+               #get address from ovpn ccd static host
+               if ($fwhostsettings{'grp2'} eq 'ovpn_host' && $fwhostsettings{'OVPN_CCD_HOST'} ne ''){
+                       @target=$fwhostsettings{'OVPN_CCD_HOST'};
+                       $type='OpenVPN static host';
+               }elsif ($fwhostsettings{'grp2'} eq 'ovpn_host' && $fwhostsettings{'OVPN_CCD_HOST'} eq ''){
+                       $errormessage=$Lang::tr{'fwhost err groupempty'};
+               }
+               #get address from ovpn ccd Net-2-Net
+               if ($fwhostsettings{'grp2'} eq 'ovpn_n2n' && $fwhostsettings{'OVPN_N2N'} ne ''){
+                       @target=$fwhostsettings{'OVPN_N2N'};
+                       $type='OpenVPN N-2-N';
+               }elsif ($fwhostsettings{'grp2'} eq 'ovpn_n2n' && $fwhostsettings{'OVPN_N2N'} eq ''){
+                       $errormessage=$Lang::tr{'fwhost err groupempty'};
+                       $fwhostsettings{'grp_name'}='';
+                       $fwhostsettings{'remark'}='';
+               }
+               #get address from IPSEC HOST
+               if ($fwhostsettings{'grp2'} eq 'ipsec_host' && $fwhostsettings{'IPSEC_HOST'} ne ''){
+                       @target=$fwhostsettings{'IPSEC_HOST'};
+                       $type='IpSec Host';
+               }elsif ($fwhostsettings{'grp2'} eq 'ipsec_host' && $fwhostsettings{'IPSEC_HOST'} eq ''){
+                       $errormessage=$Lang::tr{'fwhost err groupempty'};
+                       $fwhostsettings{'grp_name'}='';
+                       $fwhostsettings{'remark'}='';
+               }
+               #get address from IPSEC NETWORK
+               if ($fwhostsettings{'grp2'} eq 'ipsec_net' && $fwhostsettings{'IPSEC_NET'} ne ''){
+                       @target=$fwhostsettings{'IPSEC_NET'};
+                       $type='IpSec Network';
+               }elsif ($fwhostsettings{'grp2'} eq 'ipsec_net' && $fwhostsettings{'IPSEC_NET'} eq ''){
+                       $errormessage=$Lang::tr{'fwhost err groupempty'};
+                       $fwhostsettings{'grp_name'}='';
+                       $fwhostsettings{'remark'}='';
+               }
+               #check if host/net exists in grp
+               
+               my $test="$grp,$fwhostsettings{'oldremark'},@target";
+               foreach my $key (keys %customgrp) {
+                       my $test1="$customgrp{$key}[0],$customgrp{$key}[1],$customgrp{$key}[2]";
+                       if ($test1 eq $test){
+                               $errormessage=$Lang::tr{'fwhost err isingrp'};
+                               $fwhostsettings{'update'} = 'on';
+                       }
+               }
+       }
+       
+       if (!$errormessage){
+               #on first save, we have an empty @target, so fill it with nothing
+               my $targetvalues=@target;
+               if ($targetvalues == '0'){
+                       @target="none";
+               }
+               #on update, we have to delete the dummy entry
+               foreach my $key (keys %customgrp){
+                       if ($customgrp{$key}[0] eq $grp && $customgrp{$key}[2] eq "none"){
+                               delete $customgrp{$key};
+                               last;
+                       }
+               }
+               &General::writehasharray("$configgrp", \%customgrp);
+               &General::readhasharray("$configgrp", \%customgrp);
+               #get count used
+               foreach my $key (keys %customgrp)
+               {
+                       if($customgrp{$key}[0] eq $grp)
+                       {
+                               $count=$customgrp{$key}[4];
+                               last;
+                       }
+               }
+               if ($count eq '' ){$count='0';}
+               
+               #create array with new lines
+               foreach my $line (@target){
+                       push (@newgrp,"$grp,$rem,$line");
+               }
+               #append new entries
+               my $key = &General::findhasharraykey (\%customgrp);
+               foreach my $line (@newgrp){
+                       foreach my $i (0 .. 4) { $customgrp{$key}[$i] = "";}
+                       my ($a,$b,$c,$d) = split (",",$line);
+                       $customgrp{$key}[0] = $a;
+                       $customgrp{$key}[1] = $b;
+                       $customgrp{$key}[2] = $c;
+                       $customgrp{$key}[3] = $type;
+                       $customgrp{$key}[4] = $count;
+               }
+               &General::writehasharray("$configgrp", \%customgrp);
+               #update counter in Host/Net
+               if($updcounter eq 'net'){
+                       foreach my $key (keys %customnetwork) {
+                               if($customnetwork{$key}[0] eq $fwhostsettings{'CUST_SRC_NET'}){
+                                       $customnetwork{$key}[4] = $customnetwork{$key}[4]+1;
+                                       last;
+                               }
+                       }
+                       &General::writehasharray("$confignet", \%customnetwork);
+               }elsif($updcounter eq 'host'){
+                       foreach my $key (keys %customhost) {
+                               if ($customhost{$key}[0] eq $fwhostsettings{'CUST_SRC_HOST'}){
+                                       $customhost{$key}[4]=$customhost{$key}[4]+1;
+                               }
+                       }
+                       &General::writehasharray("$confighost", \%customhost);
+               }
+               $fwhostsettings{'update'}='on';
+       }
+               #check if ruleupdate is needed
+               if($count > 0 )
+               {
+                       &General::firewall_config_changed();
+               }
+               &addgrp;
+               &viewtablegrp;
+}
+if ($fwhostsettings{'ACTION'} eq 'saveservice')
+{
+       my $ICMP;
+       &General::readhasharray("$configsrv", \%customservice );
+       $errormessage=&checkports(\%customservice);
+       if ($fwhostsettings{'PROT'} eq 'ICMP'){
+               &General::readhasharray("${General::swroot}/fwhosts/icmp-types", \%icmptypes);
+               foreach my $key (keys %icmptypes){
+                       if ("$icmptypes{$key}[0] ($icmptypes{$key}[1])" eq $fwhostsettings{'ICMP_TYPES'}){
+                                       $ICMP=$icmptypes{$key}[0];
+                       }
+               }
+       }
+       if($ICMP eq ''){$ICMP=$fwhostsettings{'ICMP_TYPES'};}
+       if (!$errormessage){
+               my $key = &General::findhasharraykey (\%customservice);
+               foreach my $i (0 .. 4) { $customservice{$key}[$i] = "";}
+               $customservice{$key}[0] = $fwhostsettings{'SRV_NAME'};
+               $customservice{$key}[1] = $fwhostsettings{'SRV_PORT'};
+               $customservice{$key}[2] = $fwhostsettings{'PROT'};
+               $customservice{$key}[3] = $ICMP;
+               $customservice{$key}[4] = 0;
+               &General::writehasharray("$configsrv", \%customservice );
+               #reset fields
+               $fwhostsettings{'SRV_NAME'}='';
+               $fwhostsettings{'SRV_PORT'}='';
+               $fwhostsettings{'PROT'}='';
+               $fwhostsettings{'ICMP_TYPES'}='';
+       }
+       &addservice;
+}
+if ($fwhostsettings{'ACTION'} eq 'saveservicegrp')
+{
+       my $prot;
+       my $port;
+       my $count=0;
+       &General::readhasharray("$configsrvgrp", \%customservicegrp );
+       &General::readhasharray("$configsrv", \%customservice );
+       $errormessage=&checkservicegroup;
+       #check remark
+       if ($fwhostsettings{'SRVGRP_REMARK'} ne '' && !&validremark($fwhostsettings{'SRVGRP_REMARK'})){
+               $errormessage=$Lang::tr{'fwhost err remark'};
+       }
+       if (!$errormessage){
+               #on first save, we have to enter a dummy value
+               if ($fwhostsettings{'CUST_SRV'} eq ''){
+                       $fwhostsettings{'CUST_SRV'}='none';
+               }
+               #on update, we have to delete the dummy entry
+               foreach my $key (keys %customservicegrp){
+                       if ($customservicegrp{$key}[2] eq 'none'){
+                               delete $customservicegrp{$key};
+                               last;
+                       }
+               }
+               &General::writehasharray("$configsrvgrp", \%customservicegrp );
+               #check if remark has also changed
+               if ($fwhostsettings{'SRVGRP_REMARK'} ne $fwhostsettings{'oldsrvgrpremark'} && $fwhostsettings{'updatesrvgrp'} eq 'on')
+               {
+                       foreach my $key (keys %customservicegrp)
+                       {
+                               if($customservicegrp{$key}[0] eq $fwhostsettings{'SRVGRP_NAME'} && $customservicegrp{$key}[1] eq $fwhostsettings{'oldsrvgrpremark'})
+                               {
+                                       $customservicegrp{$key}[1]='';
+                                       $customservicegrp{$key}[1]=$fwhostsettings{'SRVGRP_REMARK'};
+                               }       
+                       }
+               }
+               #get count used
+               foreach my $key (keys %customservicegrp)
+               {
+                       if($customservicegrp{$key}[0] eq $fwhostsettings{'SRVGRP_NAME'})
+                       {
+                               $count=$customservicegrp{$key}[3];
+                               last;
+                       }
+               }
+               if ($count eq '' ){$count='0';}
+                       
+               foreach my $key (sort keys %customservice){
+                       if($customservice{$key}[0] eq $fwhostsettings{'CUST_SRV'}){
+                               $port=$customservice{$key}[1];
+                               $prot=$customservice{$key}[2];
+                               $customservice{$key}[4]++;
+                       }
+               }
+               &General::writehasharray("$configsrv", \%customservice );
+               my $key = &General::findhasharraykey (\%customservicegrp);
+               foreach my $i (0 .. 3) { $customservice{$key}[$i] = "";}
+               $customservicegrp{$key}[0] = $fwhostsettings{'SRVGRP_NAME'};
+               $customservicegrp{$key}[1] = $fwhostsettings{'SRVGRP_REMARK'};
+               $customservicegrp{$key}[2] = $fwhostsettings{'CUST_SRV'};
+               $customservicegrp{$key}[3] = $count;
+               &General::writehasharray("$configsrvgrp", \%customservicegrp );
+               $fwhostsettings{'updatesrvgrp'}='on';
+       }
+       if ($count gt 0){
+               &General::firewall_config_changed();
+       }
+       &addservicegrp;
+       &viewtableservicegrp;
+}
+# edit
+if ($fwhostsettings{'ACTION'} eq 'editnet')
+{
+       &addnet;
+       &viewtablenet;
+}
+if ($fwhostsettings{'ACTION'} eq 'edithost')
+{
+       &addhost;
+       &viewtablehost;
+}
+if ($fwhostsettings{'ACTION'} eq 'editgrp')
+{
+       $fwhostsettings{'update'}='on';
+       &addgrp;
+       &viewtablegrp;
+}
+if ($fwhostsettings{'ACTION'} eq 'editservice')
+{
+       $fwhostsettings{'updatesrv'}='on';
+       &addservice;
+}
+if ($fwhostsettings{'ACTION'} eq 'editservicegrp')
+{
+       $fwhostsettings{'updatesrvgrp'} = 'on';
+       &addservicegrp;
+       &viewtableservicegrp;
+}
+# reset
+if ($fwhostsettings{'ACTION'} eq 'resetnet')
+{
+       $fwhostsettings{'HOSTNAME'} ="";
+       $fwhostsettings{'IP'}           ="";
+       $fwhostsettings{'SUBNET'}       ="";
+       &showmenu;
+}
+if ($fwhostsettings{'ACTION'} eq 'resethost')
+{
+       $fwhostsettings{'HOSTNAME'} ="";
+       $fwhostsettings{'IP'}           ="";
+       $fwhostsettings{'type'}         ="";
+       &showmenu;
+}
+if ($fwhostsettings{'ACTION'} eq 'resetgrp')
+{
+       $fwhostsettings{'grp_name'} ="";
+       $fwhostsettings{'remark'}       ="";
+       &showmenu;
+}
+# delete
+if ($fwhostsettings{'ACTION'} eq 'delnet')
+{
+       &General::readhasharray("$confignet", \%customnetwork);
+       foreach my $key (keys %customnetwork) {
+               if($fwhostsettings{'key'} eq $customnetwork{$key}[0]){
+                       delete $customnetwork{$key};
+                       &General::writehasharray("$confignet", \%customnetwork);
+                       last;
+               }
+       }
+       &addnet;
+       &viewtablenet;
+}
+if ($fwhostsettings{'ACTION'} eq 'delhost')
+{
+       &General::readhasharray("$confighost", \%customhost);
+       foreach my $key (keys %customhost) {
+               if($fwhostsettings{'key'} eq $customhost{$key}[0]){
+                       delete $customhost{$key};
+                       &General::writehasharray("$confighost", \%customhost);
+                       last;
+               }
+       }
+       &addhost;
+       &viewtablehost;
+}
+if ($fwhostsettings{'ACTION'} eq 'deletegrphost')
+{
+       my $grpremark;
+       my $grpname;
+       &General::readhasharray("$configgrp", \%customgrp);
+       foreach my $key (keys %customgrp){
+               if($customgrp{$key}[0].",".$customgrp{$key}[1].",".$customgrp{$key}[2].",".$customgrp{$key}[3] eq $fwhostsettings{'delhost'}){
+                       #decrease count from source host/net
+                       if ($customgrp{$key}[3] eq 'Custom Network'){
+                               &General::readhasharray("$confignet", \%customnetwork);
+                               foreach my $key1 (keys %customnetwork){
+                                               if ($customnetwork{$key1}[0] eq $customgrp{$key}[2]){
+                                               $customnetwork{$key1}[4] = $customnetwork{$key1}[4]-1;
+                                               last;
+                                       }
+                               }
+                               &General::writehasharray("$confignet", \%customnetwork);
+                       }
+                       if ($customgrp{$key}[3] eq 'Custom Host'){
+                               &General::readhasharray("$confighost", \%customhost);
+                               foreach my $key1 (keys %customhost){
+                                       if ($customhost{$key1}[0] eq $customgrp{$key}[2]){
+                                               $customhost{$key1}[4] = $customhost{$key1}[4]-1;
+                                               last;
+                                       }
+                               }
+                               &General::writehasharray("$confighost", \%customhost);
+                       }
+                       $grpname=$customgrp{$key}[0];
+                       $grpremark=$customgrp{$key}[1];
+                       delete $customgrp{$key};
+               }
+       }
+       &General::writehasharray("$configgrp", \%customgrp);
+       if ($fwhostsettings{'grpcnt'} > 0){
+               &General::firewall_config_changed();
+       }
+       if ($fwhostsettings{'update'} eq 'on'){
+               $fwhostsettings{'remark'}= $grpremark;
+               $fwhostsettings{'grp_name'}=$grpname;
+       }
+       &addgrp;
+       &viewtablegrp;
+}
+if ($fwhostsettings{'ACTION'} eq 'delgrp')
+{
+       &General::readhasharray("$configgrp", \%customgrp);
+       &decrease($fwhostsettings{'grp_name'});
+       foreach my $key (sort keys %customgrp)
+       {
+               if($customgrp{$key}[0] eq $fwhostsettings{'grp_name'})
+               {
+                       delete $customgrp{$key};
+               }
+       }
+       &General::writehasharray("$configgrp", \%customgrp);
+       $fwhostsettings{'grp_name'}='';
+       &addgrp;
+       &viewtablegrp;
+}
+if ($fwhostsettings{'ACTION'} eq 'delservice')
+{
+       &General::readhasharray("$configsrv", \%customservice);
+       foreach my $key (keys %customservice) {
+               if($customservice{$key}[0] eq $fwhostsettings{'SRV_NAME'}){
+                       #&deletefromgrp($customhost{$key}[0],$configgrp);
+                       delete $customservice{$key};
+                       &General::writehasharray("$configsrv", \%customservice);
+                       last;
+               }
+       }
+       $fwhostsettings{'SRV_NAME'}='';
+       $fwhostsettings{'SRV_PORT'}='';
+       $fwhostsettings{'PROT'}='';
+       &addservice;
+}
+if ($fwhostsettings{'ACTION'} eq 'delservicegrp')
+{
+       &General::readhasharray("$configsrvgrp", \%customservicegrp);
+       &decreaseservice($fwhostsettings{'SRVGRP_NAME'});
+       foreach my $key (sort keys %customservicegrp)
+       {
+               if($customservicegrp{$key}[0] eq $fwhostsettings{'SRVGRP_NAME'})
+               {
+                       delete $customservicegrp{$key};
+               }
+       }
+       &General::writehasharray("$configsrvgrp", \%customservicegrp);
+       $fwhostsettings{'SRVGRP_NAME'}='';
+       &addservicegrp;
+       &viewtableservicegrp;
+}
+if ($fwhostsettings{'ACTION'} eq 'delgrpservice')
+{
+       my $grpname;
+       my $grpremark;
+       &General::readhasharray("$configsrvgrp", \%customservicegrp);
+       &General::readhasharray("$configsrv", \%customservice);
+       foreach my $key (keys %customservicegrp){
+               if($customservicegrp{$key}[0].",".$customservicegrp{$key}[1].",".$customservicegrp{$key}[2].",".$customservicegrp{$key}[3] eq $fwhostsettings{'delsrvfromgrp'})
+               {
+                       #decrease count from source service
+                       foreach my $key1 (sort keys %customservice){
+                               if($customservice{$key1}[0] eq $customservicegrp{$key}[2]){
+                                       $customservice{$key1}[4]--;
+                                       last;
+                               }
+                       }
+                       &General::writehasharray("$configsrv", \%customservice);
+                       $grpname=$customservicegrp{$key}[0];
+                       $grpremark=$customservicegrp{$key}[1];
+                       delete $customservicegrp{$key};
+               }
+       }
+       &General::writehasharray("$configsrvgrp", \%customservicegrp);
+       &General::firewall_config_changed();
+       if ($fwhostsettings{'updatesrvgrp'} eq 'on'){
+               $fwhostsettings{'SRVGRP_NAME'}=$grpname;
+               $fwhostsettings{'SRVGRP_REMARK'}=$grpremark;
+       }
+       &addservicegrp;
+       &viewtableservicegrp;
+       
+}
+if ($fwhostsettings{'ACTION'} eq $Lang::tr{'fwhost newnet'})
+{
+       &addnet;
+       &viewtablenet;
+}
+if ($fwhostsettings{'ACTION'} eq $Lang::tr{'fwhost newhost'})
+{
+       &addhost;
+       &viewtablehost;
+}
+if ($fwhostsettings{'ACTION'} eq $Lang::tr{'fwhost newgrp'})
+{
+       &addgrp;
+       &viewtablegrp;
+}
+if ($fwhostsettings{'ACTION'} eq $Lang::tr{'fwhost newservice'})
+{
+       &addservice;
+}
+if ($fwhostsettings{'ACTION'} eq $Lang::tr{'fwhost newservicegrp'})
+{
+       &addservicegrp;
+       &viewtableservicegrp;
+}
+if ($fwhostsettings{'ACTION'} eq 'changegrpremark')
+{
+       &General::readhasharray("$configgrp", \%customgrp);
+       if ($fwhostsettings{'oldrem'} ne $fwhostsettings{'newrem'} && (&validremark($fwhostsettings{'newrem'}) || $fwhostsettings{'newrem'} eq '')){
+               foreach my $key (sort keys %customgrp)
+                       {
+                               if($customgrp{$key}[0] eq $fwhostsettings{'grp'} && $customgrp{$key}[1] eq $fwhostsettings{'oldrem'})
+                               {
+                                       $customgrp{$key}[1]='';
+                                       $customgrp{$key}[1]=$fwhostsettings{'newrem'};
+                               }       
+                       }
+                       &General::writehasharray("$configgrp", \%customgrp);
+                       $fwhostsettings{'update'}='on';
+                       $fwhostsettings{'remark'}=$fwhostsettings{'newrem'};
+       }else{
+               $errormessage=$Lang::tr{'fwhost err remark'};
+               $fwhostsettings{'remark'}=$fwhostsettings{'oldrem'};
+               $fwhostsettings{'grp_name'}=$fwhostsettings{'grp'};
+               $fwhostsettings{'update'} = 'on';
+       }
+       $fwhostsettings{'grp_name'}=$fwhostsettings{'grp'};
+       &addgrp;
+       &viewtablegrp;
+}
+if ($fwhostsettings{'ACTION'} eq 'changesrvgrpremark')
+{
+       &General::readhasharray("$configsrvgrp", \%customservicegrp );
+       if ($fwhostsettings{'oldsrvrem'} ne $fwhostsettings{'newsrvrem'} && (&validremark($fwhostsettings{'newsrvrem'}) || $fwhostsettings{'newsrvrem'} eq '')){
+               foreach my $key (sort keys %customservicegrp)
+                       {
+                               if($customservicegrp{$key}[0] eq $fwhostsettings{'srvgrp'} && $customservicegrp{$key}[1] eq $fwhostsettings{'oldsrvrem'})
+                               {
+                                       $customservicegrp{$key}[1]='';
+                                       $customservicegrp{$key}[1]=$fwhostsettings{'newsrvrem'};
+                               }       
+                       }
+                       &General::writehasharray("$configsrvgrp", \%customservicegrp);
+                       $fwhostsettings{'updatesrvgrp'}='on';
+                       $fwhostsettings{'SRVGRP_REMARK'}=$fwhostsettings{'newsrvrem'};
+       }else{
+               $errormessage=$Lang::tr{'fwhost err remark'};
+               $fwhostsettings{'SRVGRP_REMARK'}=$fwhostsettings{'oldsrvrem'};
+               $fwhostsettings{'SRVGRP_NAME'}=$fwhostsettings{'srvgrp'};
+               $fwhostsettings{'updatesrvgrp'} = 'on';
+       }
+       $fwhostsettings{'SRVGRP_NAME'}=$fwhostsettings{'srvgrp'};
+       &addservicegrp;
+       &viewtableservicegrp;
+}
+###  VIEW  ###
+if($fwhostsettings{'ACTION'} eq '')
+{
+       &showmenu;
+}
+###  FUNCTIONS  ###
+sub showmenu {
+       &Header::openbox('100%', 'left',$Lang::tr{'fwhost menu'});
+       print "$Lang::tr{'fwhost welcome'}";
+       print<<END;
+       <br><br><table border='0' width='100%'>
+       <tr><td><form method='post'><input type='submit' name='ACTION' value='$Lang::tr{'fwhost newnet'}' ><input type='submit' name='ACTION' value='$Lang::tr{'fwhost newhost'}' ><input type='submit' name='ACTION' value='$Lang::tr{'fwhost newgrp'}' ></form></td>
+       <td align='right'><form method='post'><input type='submit' name='ACTION' value='$Lang::tr{'fwhost newservice'}' ><input type='submit' name='ACTION' value='$Lang::tr{'fwhost newservicegrp'}' ></form></td></tr>
+       <tr><td colspan='6'><hr></td></tr></table>
+END
+       &Header::closebox();
+       
+}
+# Add
+sub addnet
+{
+       &error;
+       &showmenu;
+       &Header::openbox('100%', 'left', $Lang::tr{'fwhost addnet'});
+       $fwhostsettings{'orgname'}=$fwhostsettings{'HOSTNAME'};
+       $fwhostsettings{'orgnetremark'}=$fwhostsettings{'NETREMARK'};
+       print<<END;
+       <table border='0' width='100%'>
+       <tr><td width='15%'>$Lang::tr{'name'}:</td><td><form method='post'><input type='TEXT' name='HOSTNAME' id='textbox1' value='$fwhostsettings{'HOSTNAME'}' $fwhostsettings{'BLK_HOST'} size='20'><script>document.getElementById('textbox1').focus()</script></td></tr>
+       <tr><td>$Lang::tr{'fwhost netaddress'}:</td><td><input type='TEXT' name='IP' value='$fwhostsettings{'IP'}' $fwhostsettings{'BLK_IP'} size='20' maxlength='15'></td></tr>
+       <tr><td>$Lang::tr{'netmask'}:</td><td><input type='TEXT' name='SUBNET' value='$fwhostsettings{'SUBNET'}' $fwhostsettings{'BLK_IP'} size='20' maxlength='15'></td></tr>
+       <tr><td>$Lang::tr{'remark'}:</td><td><input type='TEXT' name='NETREMARK' value='$fwhostsettings{'NETREMARK'}' style='width: 98.5%;'></td></tr>
+       <tr><td colspan='6'><br><hr></td></tr><tr>
+END
+       if ($fwhostsettings{'ACTION'} eq 'editnet' || $fwhostsettings{'error'} eq 'on')
+       {
+               print "<td colspan='6' align='right' ><input type='submit' value='$Lang::tr{'update'}' style='min-width:100px;'><input type='hidden' name='ACTION' value='updatenet'><input type='hidden' name='orgnetremark' value='$fwhostsettings{'orgnetremark'}' ><input type='hidden' name='orgname' value='$fwhostsettings{'orgname'}' ><input type='hidden' name='update' value='on'><input type='hidden' name='newnet' value='$fwhostsettings{'newnet'}'></td>";
+       }else{
+               print "<td colspan='6' align='right'><input type='submit' value='$Lang::tr{'save'}' style='min-width:100px;'/><input type='hidden' name='ACTION' value='savenet'><input type='hidden' name='newnet' value='on'>";
+       }       
+       print "</form><form method='post' style='display:inline'><input type='submit' value='$Lang::tr{'fwhost back'}' style='min-width:100px;' ><input type='hidden' name='ACTION' value='resetnet'></form></td></tr></table>";
+       &Header::closebox();
+}
+sub addhost
+{
+       &error;
+       &showmenu;
+       &Header::openbox('100%', 'left', $Lang::tr{'fwhost addhost'});
+       $fwhostsettings{'orgname'}=$fwhostsettings{'HOSTNAME'};
+       $fwhostsettings{'orgremark'}=$fwhostsettings{'HOSTREMARK'};
+       print<<END;
+       <table border='0' width='100%'>
+       <tr><td>$Lang::tr{'name'}:</td><td><form method='post' style='display:inline;'><input type='TEXT' name='HOSTNAME' id='textbox1' value='$fwhostsettings{'HOSTNAME'}' $fwhostsettings{'BLK_HOST'} size='20'><script>document.getElementById('textbox1').focus()</script></td></tr>
+       <tr><td>IP/MAC:</td><td><input type='TEXT' name='IP' value='$fwhostsettings{'IP'}' $fwhostsettings{'BLK_IP'} size='20' maxlength='17'></td></tr>
+       <tr><td width='10%'>$Lang::tr{'remark'}:</td><td><input type='TEXT' name='HOSTREMARK' value='$fwhostsettings{'HOSTREMARK'}' style='width:98%;'></td></tr>
+       <tr><td colspan='5'><hr></td></tr><tr>
+END
+
+       if ($fwhostsettings{'ACTION'} eq 'edithost' || $fwhostsettings{'error'} eq 'on')
+       {
+               
+               print " <td colspan='4' align='right'><input type='submit' value='$Lang::tr{'update'}' style='min-width:100px;'/><input type='hidden' name='ACTION' value='updatehost'><input type='hidden' name='orgremark' value='$fwhostsettings{'orgremark'}' ><input type='hidden' name='orgname' value='$fwhostsettings{'orgname'}' ><input type='hidden' name='update' value='on'><input type='hidden' name='newhost' value='$fwhostsettings{'newhost'}'></form>";
+       }else{
+               print " <td colspan='4' align='right'><input type='submit' name='savehost' value='$Lang::tr{'save'}' style='min-width:100px;' /><input type='hidden' name='ACTION' value='savehost' /><input type='hidden' name='newhost' value='on'>";
+       }       
+       print " </form><form method='post' style='display:inline'><input type='submit' value='$Lang::tr{'fwhost back'}' style='min-width:100px;' ><input type='hidden' name='ACTION' value='resethost'></form></td></tr></table>";
+       &Header::closebox();
+}
+sub addgrp
+{
+       &hint;
+       &error;
+       &showmenu;
+       &Header::openbox('100%', 'left', $Lang::tr{'fwhost addgrp'});
+       &General::setup_default_networks(\%defaultNetworks);
+       &General::readhasharray("$configccdnet", \%ccdnet);
+       &General::readhasharray("$confignet", \%customnetwork);
+       &General::readhasharray("$configccdhost", \%ccdhost);
+       &General::readhasharray("$confighost", \%customhost);
+       &General::readhasharray("$configipsec", \%ipsecconf);
+
+       my %checked=();
+       my $show='';
+       $checked{'check1'}{'off'} = '';
+       $checked{'check1'}{'on'} = '';
+       $checked{'grp2'}{$fwhostsettings{'grp2'}} = 'CHECKED';
+       $fwhostsettings{'oldremark'}=$fwhostsettings{'remark'};
+       my $grp=$fwhostsettings{'grp_name'};
+       my $rem=$fwhostsettings{'remark'};
+               if ($fwhostsettings{'update'} eq ''){   
+                       print<<END;
+                       <table width='100%' border='0'>
+                       <tr><td width='10%'>$Lang::tr{'fwhost addgrpname'}</td><td><form method='post'><input type='TEXT' name='grp_name' value='$fwhostsettings{'grp_name'}' size='20'></td></tr>
+                       <tr><td width='10%'>$Lang::tr{'remark'}:</td><td ><input type='TEXT' name='remark' value='$fwhostsettings{'remark'}' style='width: 98%;'></td></tr>
+                       <tr><td colspan='2'><br><hr></td></tr></table>
+END
+               }else{
+                       print<<END;
+                       <table width='100%' border='0'><form method='post' style='display:inline'>
+                       <tr><td nowrap='nowrap' width='12%'>$Lang::tr{'fwhost addgrpname'}</td><td><input type='TEXT' name='grp'  value='$fwhostsettings{'grp_name'}' readonly ></td><td></td></tr>
+                       <tr><td>$Lang::tr{'remark'}:</td><td><input type='TEXT' name='newrem' size='45' value='$fwhostsettings{'remark'}' style='width:98%'></td><td align='right'><input type='submit' value='$Lang::tr{'fwhost change'}'><input type='hidden' name='oldrem' value='$fwhostsettings{'oldremark'}'><input type='hidden' name='ACTION' value='changegrpremark' ></td></tr></table></form>
+                       <hr>
+END
+               }
+               if ($fwhostsettings{'update'} eq 'on'){
+                       print<<END;
+                       <form method='post'><input type='hidden' name='remark' value='$rem'><input type='hidden' name='grp_name' value='$grp'>
+                       <table width='100%' border='0'>
+                       <tr><td width=50% valign='top'>
+                       <table width='100%' border='0'>
+                       <tr><td width='1%'><input type='radio' name='grp2' value='std_net' id='DEFAULT_SRC_ADR' checked></td><td nowrap='nowrap' width='16%'>$Lang::tr{'fwhost stdnet'}</td><td><select name='DEFAULT_SRC_ADR' style='min-width:185px;'>
+END
+                       foreach my $network (sort keys %defaultNetworks)
+                       {
+                               next if($defaultNetworks{$network}{'LOCATION'} eq "IPCOP");
+                               next if($defaultNetworks{$network}{'NAME'} eq "IPFire");
+                               print "<option value='$defaultNetworks{$network}{'NAME'}'";
+                               print " selected='selected'" if ($fwhostsettings{'DEFAULT_SRC_ADR'} eq $defaultNetworks{$network}{'NAME'});
+                               my $defnet="$defaultNetworks{$network}{'NAME'}_NETADDRESS";
+                               my $defsub="$defaultNetworks{$network}{'NAME'}_NETMASK";
+                               my $defsub1=&General::subtocidr($ownnet{$defsub});
+                               $ownnet{$defnet}='' if ($defaultNetworks{$network}{'NAME'} eq 'RED');
+                               if ($ownnet{$defnet}){
+                                       print ">$network ($ownnet{$defnet}/$defsub1)</option>";
+                               }else{
+                                       print ">$network</option>";
+                               }
+                       }
+                       print"</select></td></tr>";
+                       if (! -z $confignet){
+                               print"<tr><td><input type='radio' name='grp2' id='CUST_SRC_NET' value='cust_net' $checked{'grp2'}{'cust_net'}></td><td>$Lang::tr{'fwhost cust net'}</td><td><select name='CUST_SRC_NET' style='min-width:185px;'>";
+                               foreach my $key (sort { ncmp($customnetwork{$a}[0],$customnetwork{$b}[0]) } keys  %customnetwork) {
+                                       print"<option>$customnetwork{$key}[0]</option>";
+                               }
+                               print"</select></td></tr>";
+                       }
+                       if (! -z $confighost){
+                               print"<tr><td valign='top'><input type='radio' name='grp2' id='CUST_SRC_HOST' value='cust_host' $checked{'grp2'}{'cust_host'}></td><td valign='top'>$Lang::tr{'fwhost cust addr'}</td><td><select name='CUST_SRC_HOST' style='min-width:185px;'>";
+                               foreach my $key (sort { ncmp($customhost{$a}[0],$customhost{$b}[0]) } keys %customhost) {
+                                       print"<option>$customhost{$key}[0]</option>";
+                               }
+                               print"</select></td></tr>";
+                       }
+                       print"</table>";
+                       #Inner table right
+                       print"</td><td valign='top'><table width='100%' border='0'>";
+                       #OVPN networks
+                       if (! -z $configccdnet){
+                               print"<td width='1%'><input type='radio' name='grp2' id='OVPN_CCD_NET' value='ovpn_net'  $checked{'grp2'}{'ovpn_net'}></td><td nowrap='nowrap' width='16%'>$Lang::tr{'fwhost ccdnet'}</td><td nowrap='nowrap' width='1%'><select name='OVPN_CCD_NET' style='min-width:185px;'>";
+                               foreach my $key (sort { ncmp($ccdnet{$a}[0],$ccdnet{$b}[0]) }  keys %ccdnet)
+                               {
+                                       print"<option value='$ccdnet{$key}[0]'>$ccdnet{$key}[0]</option>";
+                               }
+                               print"</select></td></tr>";
+                       }
+                       #OVPN clients
+                       foreach my $key (sort { ncmp($ccdhost{$a}[0],$ccdhost{$b}[0]) } keys %ccdhost)
+                       {
+                               if ($ccdhost{$key}[33] ne ''){
+                                       print"<td width='1%'><input type='radio' name='grp2' value='ovpn_host' $checked{'grp2'}{'ovpn_host'}></td><td nowrap='nowrap' width='16%'>$Lang::tr{'fwhost ccdhost'}</td><td nowrap='nowrap' width='1%'><select name='OVPN_CCD_HOST' style='min-width:185px;'>" if ($show eq '');
+                                       $show='1';
+                                       print"<option value='$ccdhost{$key}[1]'>$ccdhost{$key}[1]</option>";
+                               }
+                       }
+                       if ($show eq '1'){$show='';print"</select></td></tr>";}
+                       #OVPN n2n networks
+                       foreach my $key (sort { ncmp($ccdhost{$a}[1],$ccdhost{$b}[1]) } keys %ccdhost) {
+                               if($ccdhost{$key}[3] eq 'net'){
+                                       print"<td width='1%'><input type='radio' name='grp2' id='OVPN_N2N' value='ovpn_n2n' $checked{'grp2'}{'ovpn_n2n'}></td><td valign='top'>$Lang::tr{'fwhost ovpn_n2n'}</td><td colspan='3'><select name='OVPN_N2N' style='min-width:185px;'>" if ($show eq '');
+                                       $show='1';
+                                       print"<option>$ccdhost{$key}[1]</option>";
+                               }
+                       }
+                       if ($show eq '1'){$show='';print"</select></td></tr>";}
+                       #IPsec networks
+                       foreach my $key (sort { ncmp($ipsecconf{$a}[0],$ipsecconf{$b}[0]) } keys %ipsecconf) {
+                               if ($ipsecconf{$key}[3] eq 'net'){
+                                       print"<td valign='top'><input type='radio' name='grp2' id='IPSEC_NET' value='ipsec_net' $checked{'grp2'}{'ipsec_net'}></td><td valign='top'>$Lang::tr{'fwhost ipsec net'}</td><td><select name='IPSEC_NET' style='min-width:185px;'>" if ($show eq '');
+                                       $show='1';
+                                       print"<option value='$ipsecconf{$key}[1]'>$ipsecconf{$key}[1]</option>";
+                               }
+                       }
+                       if ($show eq '1'){$show='';print"</select></td></tr>";}
+                       print"</table>";
+                       print"</td></tr></table>";
+                       print"<br><br><hr>";
+               }
+               print"<table border='0' width='100%'>";
+               print"<tr><td align='right'><input type='submit' value='$Lang::tr{'add'}' style='min-width:100px;' /><input type='hidden' name='oldremark' value='$fwhostsettings{'oldremark'}'><input type='hidden' name='update' value=\"$fwhostsettings{'update'}\"><input type='hidden' name='ACTION' value='savegrp' ></form><form method='post' style='display:inline'><input type='submit' value='$Lang::tr{'fwhost back'}' style='min-width:100px;'><input type='hidden' name='ACTION' value='resetgrp'></form></td></table>";
+       &Header::closebox();
+}
+sub addservice
+{
+       &error;
+       &showmenu;
+       &Header::openbox('100%', 'left', $Lang::tr{'fwhost addservice'});
+       if ($fwhostsettings{'updatesrv'} eq 'on')
+       {
+               $fwhostsettings{'oldsrvname'} = $fwhostsettings{'SRV_NAME'};
+               $fwhostsettings{'oldsrvport'} = $fwhostsettings{'SRV_PORT'};
+               $fwhostsettings{'oldsrvprot'} = $fwhostsettings{'PROT'};
+               $fwhostsettings{'oldsrvicmp'} = $fwhostsettings{'ICMP'};
+       }
+       print<<END;
+       <table width='100%' border='0'><form method='post'>
+       <tr><td width='10%' nowrap='nowrap'>$Lang::tr{'fwhost srv_name'}:</td><td><input type='text' name='SRV_NAME' id='textbox1' value='$fwhostsettings{'SRV_NAME'}' size='24'><script>document.getElementById('textbox1').focus()</script></td></tr>
+       <tr><td width='10%' nowrap='nowrap'>$Lang::tr{'fwhost prot'}:</td><td><select name='PROT' id='protocol' >
+END
+       foreach ("TCP","UDP","ICMP")
+       {
+               if ($_ eq $fwhostsettings{'PROT'})
+               {
+                       print"<option selected>$_</option>";
+               }else{
+                       print"<option>$_</option>";
+               }
+       }
+       print<<END;
+       </select></td></tr></table>
+       <div id='PROTOKOLL' class='noscript'><table width=100%' border='0'><tr><td width='10%' nowrap='nowrap'>$Lang::tr{'fwhost icmptype'}</td><td><select name='ICMP_TYPES'>
+END
+       &General::readhasharray("${General::swroot}/fwhosts/icmp-types", \%icmptypes);
+       print"<option value='All ICMP-Types'>$Lang::tr{'fwdfw all icmp'}</option>";
+       foreach my $key (sort { ncmp($icmptypes{$a}[0],$icmptypes{$b}[0]) }keys %icmptypes){
+               if ($icmptypes{$key}[0] eq $fwhostsettings{'oldsrvicmp'}){
+                       print"<option selected>$icmptypes{$key}[0] ($icmptypes{$key}[1])</option>";
+               }else{
+                       print"<option>$icmptypes{$key}[0] ($icmptypes{$key}[1])</option>";
+               }
+       }
+       print<<END;
+       </select></td></tr></table></div>
+       <div id='PORT' class='noscript'><table width='100%' border='0'><tr><td width='10%'>$Lang::tr{'fwhost port'}:</td><td><input type='text' name='SRV_PORT' value='$fwhostsettings{'SRV_PORT'}' maxlength='11' size='24'></td></tr></table></div>
+       <table width='100%' border='0'><tr><td colspan='6'><br><hr></td></tr>
+       <tr><td colspan='6' align='right'>
+END
+       if ($fwhostsettings{'updatesrv'} eq 'on')
+       {
+               print<<END;
+               <input type='submit' value='$Lang::tr{'update'}'style='min-width:100px;' >
+               <input type='hidden' name='ACTION' value='updateservice'>
+               <input type='hidden' name='oldsrvname' value='$fwhostsettings{'oldsrvname'}'>
+               <input type='hidden' name='oldsrvport' value='$fwhostsettings{'oldsrvport'}'>
+               <input type='hidden' name='oldsrvprot' value='$fwhostsettings{'oldsrvprot'}'>
+               <input type='hidden' name='oldsrvicmp' value='$fwhostsettings{'oldsrvicmp'}'>
+               </form>
+END
+       }else{
+               print"<input type='submit' value='$Lang::tr{'save'}' style='min-width:100px;'><input type='hidden' name='ACTION' value='saveservice'></form>";
+       }
+       print<<END;
+       <form style='display:inline;' method='post'><input type='submit' value='$Lang::tr{'fwhost back'}' style='min-width:100px;'></form></td></tr>
+       </table></form>
+END
+       &Header::closebox();
+       &viewtableservice;
+}
+sub addservicegrp
+{
+       &hint;
+       &error;
+       &showmenu;
+       &Header::openbox('100%', 'left', $Lang::tr{'fwhost addservicegrp'});
+       $fwhostsettings{'oldsrvgrpremark'}=$fwhostsettings{'SRVGRP_REMARK'};
+       if ($fwhostsettings{'updatesrvgrp'} eq ''){
+               print<<END;
+               <table width='100%' border='0'><form method='post'>
+               <tr><td width='10%'>$Lang::tr{'fwhost addgrpname'}</td><td><input type='text' name='SRVGRP_NAME' value='$fwhostsettings{'SRVGRP_NAME'}' size='24'></td></tr>
+               <tr><td width='10%'>$Lang::tr{'remark'}:</td><td><input type='text' name='SRVGRP_REMARK' value='$fwhostsettings{'SRVGRP_REMARK'}' style='width: 98%;'></td></tr>
+               <tr><td colspan='2'><br><hr></tr>
+               </table>
+END
+       }else{
+               print<<END;
+               <table width='100%' border='0'><form method='post' style='display:inline'>
+               <tr><td width='10%'>$Lang::tr{'fwhost addgrpname'}</td><td><input type='text' name='srvgrp' value='$fwhostsettings{'SRVGRP_NAME'}' readonly  size='14'></td><td width='3%'></td></tr>
+               <tr><td width='10%'>$Lang::tr{'remark'}:</td><td><input type='text' name='newsrvrem'  value='$fwhostsettings{'SRVGRP_REMARK'}' style='width:98%;'></td><td align='right'><input type='submit' value='$Lang::tr{'fwhost change'}'><input type='hidden' name='oldsrvrem' value='$fwhostsettings{'oldsrvgrpremark'}'><input type='hidden' name='ACTION' value='changesrvgrpremark' ></td></tr>
+               <tr><td colspan='3'><br><hr></td></td></tr>
+               </table></form>
+END
+       }
+       if($fwhostsettings{'updatesrvgrp'} eq 'on'){
+       print<<END;
+       <form method='post'><input type='hidden' name='SRVGRP_REMARK' value='$fwhostsettings{'SRVGRP_REMARK'}'><input type='hidden' name='SRVGRP_NAME' value='$fwhostsettings{'SRVGRP_NAME'}'><table border='0' width='100%'>
+       <tr><td width='1%' nowrap='nowrap'>$Lang::tr{'fwhost cust service'}</td><td><select name='CUST_SRV' style='min-width:185px;'>
+END
+       &General::readhasharray("$configsrv", \%customservice);
+       foreach my $key (sort { ncmp($customservice{$a}[0],$customservice{$b}[0]) } keys %customservice)
+       {
+               print "<option>$customservice{$key}[0]</option>";
+       }
+       print<<END;
+       </select></td></tr>
+       <tr><td colspan='4'><br><br></td></tr>
+       <tr><td colspan='4'><hr></td></tr>
+       </table>
+END
+       }
+       print<<END;
+       <table width='100%' border='0'>
+       <tr><td align='right'><input type='submit' value='$Lang::tr{'add'}' style='min-width:100px;' /><input type='hidden' name='updatesrvgrp' value='$fwhostsettings{'updatesrvgrp'}'><input type='hidden' name='oldsrvgrpremark' value='$fwhostsettings{'oldsrvgrpremark'}'><input type='hidden' name='ACTION' value='saveservicegrp' ></form><form style='display:inline;' method='post'><input type='submit' value='$Lang::tr{'fwhost back'}' style='min-width:100px;'></td></tr>
+       </table></form>
+END
+       &Header::closebox();
+}
+# View
+sub viewtablenet
+{
+       if(! -z $confignet){
+               &Header::openbox('100%', 'left', $Lang::tr{'fwhost cust net'});
+               &General::readhasharray("$confignet", \%customnetwork);
+               if (!keys %customnetwork) 
+               { 
+                       print "<center><b>$Lang::tr{'fwhost empty'}</b>"; 
+               }else{
+                       print<<END;
+                       <table border='0' width='100%' cellspacing='0'>
+                       <tr><td align='center'><b>$Lang::tr{'name'}</b></td><td align='center'><b>$Lang::tr{'fwhost netaddress'}</b></td><td align='center'><b>$Lang::tr{'remark'}</b></td><td align='center'><b>$Lang::tr{'used'}</b></td><td></td><td width='3%'></td></tr>
+END
+               }
+               my $count=0;
+               foreach my $key (sort {ncmp($a,$b)} keys %customnetwork) {
+                       if ($fwhostsettings{'ACTION'} eq 'editnet' && $fwhostsettings{'HOSTNAME'} eq $customnetwork{$key}[0]) {
+                               print" <tr bgcolor='${Header::colouryellow}'>";
+                       }elsif ($count % 2)
+                       { 
+                               print" <tr bgcolor='$color{'color22'}'>";
+                       }else
+                       {
+                               print" <tr bgcolor='$color{'color20'}'>";
+                       }
+                       my $colnet="$customnetwork{$key}[1]/".&General::subtocidr($customnetwork{$key}[2]);
+                       print"<td width='20%'><form method='post'>$customnetwork{$key}[0]</td><td width='15%' align='center'>".&Header::colorize($colnet)."</td><td width='40%'>$customnetwork{$key}[3]</td><td align='center'>$customnetwork{$key}[4]x</td>";
+                       print<<END;
+                       <td width='1%'><input type='image' src='/images/edit.gif' align='middle' alt=$Lang::tr{'edit'} title=$Lang::tr{'edit'} />
+                       <input type='hidden' name='ACTION' value='editnet'>
+                       <input type='hidden' name='HOSTNAME' value='$customnetwork{$key}[0]' />
+                       <input type='hidden' name='IP' value='$customnetwork{$key}[1]' />
+                       <input type='hidden' name='SUBNET' value='$customnetwork{$key}[2]' />
+                       <input type='hidden' name='NETREMARK' value='$customnetwork{$key}[3]' />
+                       </td></form>
+END
+                       if($customnetwork{$key}[4] == '0')
+                       {
+                               print"<td width='1%'><form method='post'><input type='image' src='/images/delete.gif' align='middle' alt=$Lang::tr{'delete'} title=$Lang::tr{'delete'} /><input type='hidden' name='ACTION' value='delnet' /><input type='hidden' name='key' value='$customnetwork{$key}[0]' /></td></form></tr>";
+                       }else{
+                               print"<td></td></tr>";
+                       }
+                       $count++;
+               }
+               print"</table>";
+               &Header::closebox();
+       }       
+
+}
+sub getcolor
+{
+               my $c=shift;
+               #Check if IP is part of OpenVPN N2N subnet
+               foreach my $key (sort keys %ccdhost){
+                       if ($ccdhost{$key}[3] eq 'net'){
+                               my ($a,$b) = split("/",$ccdhost{$key}[11]);
+                               if (&General::IpInSubnet($c,$a,$b)){
+                                       $tdcolor="style='color:$Header::colourovpn ;'";
+                                       return $tdcolor;
+                               }
+                       }
+               }
+               #Check if IP is part of OpenVPN dynamic subnet
+               my ($a,$b) = split("/",$ovpnsettings{'DOVPN_SUBNET'});
+               if (&General::IpInSubnet($c,$a,$b)){
+                       $tdcolor="style='color: $Header::colourovpn;'";
+                       return $tdcolor;
+               }
+               #Check if IP is part of OpenVPN static subnet
+               foreach my $key (sort keys %ccdnet){
+                       my ($a,$b) = split("/",$ccdnet{$key}[1]);
+                       $b =&General::iporsubtodec($b);
+                       if (&General::IpInSubnet($c,$a,$b)){
+                               $tdcolor="style='color: $Header::colourovpn;'";
+                               return $tdcolor;
+                       }
+               }
+               #Check if IP is part of IPsec RW network
+               if ($ipsecsettings{'RW_NET'} ne ''){
+                       my ($a,$b) = split("/",$ipsecsettings{'RW_NET'});
+                       $b=&General::iporsubtodec($b);
+                       if (&General::IpInSubnet($c,$a,$b)){
+                               $tdcolor="style='color: $Header::colourvpn;'";
+                               return $tdcolor;
+                       }
+               }
+               #Check if IP is part of a IPsec N2N network
+               foreach my $key (sort keys %ipsecconf){
+                       my ($a,$b) = split("/",$ipsecconf{$key}[11]);
+                       if (&General::IpInSubnet($c,$a,$b)){
+                               $tdcolor="style='color: $Header::colourvpn;'";
+                               return $tdcolor;
+                       }
+               }
+               $tdcolor='';
+               return $tdcolor;
+}
+sub viewtablehost
+{
+       if (! -z $confighost){
+               &Header::openbox('100%', 'left', $Lang::tr{'fwhost cust addr'});
+               &General::readhasharray("$confighost", \%customhost);
+               &General::readhasharray("$configccdnet", \%ccdnet);
+               &General::readhasharray("$configccdhost", \%ccdhost);
+               if (!keys %customhost) 
+               { 
+                       print "<center><b>$Lang::tr{'fwhost empty'}</b>"; 
+               }else{
+               print<<END;
+               <table border='0' width='100%' cellspacing='0'>
+               <tr><td align='center'><b>$Lang::tr{'name'}</b></td><td align='center'><b>$Lang::tr{'fwhost ip_mac'}</b></td><td align='center'><b>$Lang::tr{'remark'}</b></td><td align='center'><b>$Lang::tr{'used'}</b></td><td></td><td width='3%'></td></tr>
+END
+       }
+               my $count=0;
+               foreach my $key (sort { ncmp ($customhost{$a}[0],$customhost{$b}[0])} keys %customhost) {
+                       if ( ($fwhostsettings{'ACTION'} eq 'edithost' || $fwhostsettings{'error'}) && $fwhostsettings{'HOSTNAME'} eq $customhost{$key}[0]) {
+                               print" <tr bgcolor='${Header::colouryellow}'>";
+                       }elsif ($count % 2){ print" <tr bgcolor='$color{'color22'}'>";}
+                       else{            print" <tr bgcolor='$color{'color20'}'>";}
+                       my ($ip,$sub)=split(/\//,$customhost{$key}[2]);
+                       $customhost{$key}[4]=~s/\s+//g;
+                       print"<td width='20%'>$customhost{$key}[0]</td><td width='20%' align='center' ".&getcolor($ip).">".&Header::colorize($ip)."</td><td width='50%' align='left'>$customhost{$key}[3]</td><td align='center'>$customhost{$key}[4]x</td>";
+                       print<<END;
+                       <td width='1%'><form method='post'><input type='image' src='/images/edit.gif' align='middle' alt=$Lang::tr{'edit'} title=$Lang::tr{'edit'} />
+                       <input type='hidden' name='ACTION' value='edithost' />
+                       <input type='hidden' name='HOSTNAME' value='$customhost{$key}[0]' />
+                       <input type='hidden' name='IP' value='$ip' />
+                       <input type='hidden' name='type' value='$customhost{$key}[1]' />
+                       <input type='hidden' name='HOSTREMARK' value='$customhost{$key}[3]' />
+                       </form></td>
+END
+                       if($customhost{$key}[4] == '0')
+                       {
+                               print"<td width='1%'><form method='post'><input type='image' src='/images/delete.gif' align='middle' alt=$Lang::tr{'delete'} title=$Lang::tr{'delete'} /><input type='hidden' name='ACTION' value='delhost' /><input type='hidden' name='key' value='$customhost{$key}[0]' /></td></form></tr>";
+                       }else{
+                               print"<td width='1%'></td></tr>";
+                       }
+                       $count++;
+               }
+               print"</table>";
+               &Header::closebox();
+       }
+}
+sub viewtablegrp
+{
+       if(! -z "$configgrp"){
+       &Header::openbox('100%', 'left', $Lang::tr{'fwhost cust grp'});
+       &General::readhasharray("$configgrp", \%customgrp);
+       &General::readhasharray("$configipsec", \%ipsecconf);
+       &General::readhasharray("$configccdhost", \%ccdhost);
+       &General::readhasharray("$configccdnet", \%ccdnet);
+       &General::readhasharray("$confighost", \%customhost);
+       &General::readhasharray("$confignet", \%customnetwork);
+       my @grp=();
+       my $helper='';
+       my $count=1;
+       my $grpname;
+       my $remark;
+       my $number;
+       my $delflag;
+       if (!keys %customgrp) 
+       { 
+               print "<center><b>$Lang::tr{'fwhost err emptytable'}</b>";
+       }else{
+               foreach my $key (sort { ncmp($customgrp{$a}[0],$customgrp{$b}[0]) } sort { ncmp($customgrp{$a}[2],$customgrp{$b}[2]) } keys %customgrp){
+                       $count++;
+                       if ($helper ne $customgrp{$key}[0]){
+                               $delflag='0';
+                               foreach my $key1 (sort { ncmp($customgrp{$a}[0],$customgrp{$b}[0]) } sort { ncmp($customgrp{$a}[2],$customgrp{$b}[2]) } keys %customgrp){
+                                       if ($customgrp{$key}[0] eq $customgrp{$key1}[0])
+                                       {
+                                               $delflag++;
+                                       }
+                                       if($delflag > 1){
+                                               last;
+                                       }
+                               }
+                               $number=1;
+                               if ($customgrp{$key}[2] eq "none"){$customgrp{$key}[2]=$Lang::tr{'fwhost err emptytable'};}
+                               $grpname=$customgrp{$key}[0];
+                               $remark="$customgrp{$key}[1]";
+                               if($count gt 1){ print"</table>";}
+                               print "<br><b><u>$grpname</u></b>&nbsp; &nbsp;";
+                               print " <b>$Lang::tr{'remark'}:</b>&nbsp $remark &nbsp " if ($remark ne '');
+                               print "<b>$Lang::tr{'used'}:</b> $customgrp{$key}[4]x";
+                               if($customgrp{$key}[4] == '0')
+                               {
+                                       print"<form method='post' style='display:inline'><input type='image' src='/images/delete.gif' alt=$Lang::tr{'delete'} title=$Lang::tr{'delete'} align='right' /><input type='hidden' name='grp_name' value='$grpname' ><input type='hidden' name='ACTION' value='delgrp'></form>";
+                               }
+                               print"<form method='post' style='display:inline'><input type='image' src='/images/edit.gif' alt=$Lang::tr{'edit'} title=$Lang::tr{'edit'} align='right' /><input type='hidden' name='grp_name' value='$grpname' ><input type='hidden' name='remark' value='$remark' ><input type='hidden' name='ACTION' value='editgrp'></form>";
+                               print"<table width='100%' style='border: 1px solid  #CCCCCC;' rules='none' cellspacing='0'><tr><td align='center'><b>Name</b></td><td align='center'><b>$Lang::tr{'ip address'}</b></td><td align='center' width='25%'><b>$Lang::tr{'fwhost type'}</td><td></td></tr>";
+                       }
+                       
+                       if ( ($fwhostsettings{'ACTION'} eq 'editgrp' || $fwhostsettings{'update'} ne '') && $fwhostsettings{'grp_name'} eq $customgrp{$key}[0]) {
+                               print" <tr bgcolor='${Header::colouryellow}'>";
+                       }elsif ($count %2 == 0){
+                               print"<tr bgcolor='$color{'color22'}'>";
+                       }else{
+                               print"<tr bgcolor='$color{'color20'}'>";
+                       }
+                       my $ip=&getipforgroup($customgrp{$key}[2],$customgrp{$key}[3]); 
+                       if ($ip eq ''){print"<tr bgcolor='${Header::colouryellow}'>";}
+                       print "<td width='39%' align='left'>";
+                       if($customgrp{$key}[3] eq 'Standard Network'){
+                               print &get_name($customgrp{$key}[2])."</td>";
+                       }else{
+                               print "$customgrp{$key}[2]</td>";
+                       }
+                       if ($ip eq '' && $customgrp{$key}[2] ne $Lang::tr{'fwhost err emptytable'}){
+                               print "<td align='center'>$Lang::tr{'fwhost deleted'}</td><td align='center'>$customgrp{$key}[3]</td><td width='1%'><form method='post'>";   
+                       }else{
+                               my ($colip,$colsub) = split("/",$ip);
+                               $ip="$colip/".&General::subtocidr($colsub) if ($colsub);
+                               print"<td align='center' ".&getcolor($colip).">".&Header::colorize($ip)."</td><td align='center'>$customgrp{$key}[3]</td><td width='1%'><form method='post'>";
+                       }
+                       if ($delflag > '1' && $ip ne ''){
+                               print"<input type='image' src='/images/delete.gif' align='middle' alt=$Lang::tr{'delete'} title=$Lang::tr{'delete'} />";
+                       }
+                       print"<input type='hidden' name='ACTION' value='deletegrphost'><input type='hidden' name='grpcnt' value='$customgrp{$key}[4]'><input type='hidden' name='update' value='$fwhostsettings{'update'}'><input type='hidden' name='delhost' value='$grpname,$remark,$customgrp{$key}[2],$customgrp{$key}[3]'></form></td></tr>";
+                       
+                       $helper=$customgrp{$key}[0];
+                       $number++;
+               }
+               print"</table>";
+       }
+       &Header::closebox();
+}
+
+}
+sub viewtableservice
+{
+       my $count=0;
+       if(! -z "$configsrv")
+       {
+               &Header::openbox('100%', 'left', $Lang::tr{'fwhost services'});
+               &General::readhasharray("$configsrv", \%customservice);
+               print<<END;
+                       <table width='100%' border='0' cellspacing='0'>
+                       <tr><td align='center'><b>$Lang::tr{'fwhost srv_name'}</b></td><td align='center'><b>$Lang::tr{'fwhost prot'}</b></td><td align='center'><b>$Lang::tr{'fwhost port'}</b></td><td align='center'><b>ICMP</b></td><td align='center'><b>$Lang::tr{'fwhost used'}</b></td><td></td><td width='3%'></td></tr>
+END
+               foreach my $key (sort { ncmp($customservice{$a}[0],$customservice{$b}[0])} keys %customservice)
+               {
+                       $count++;
+                       if ( ($fwhostsettings{'updatesrv'} eq 'on' || $fwhostsettings{'error'}) && $fwhostsettings{'SRV_NAME'} eq $customservice{$key}[0]) {
+                               print" <tr bgcolor='${Header::colouryellow}'>";
+                       }elsif ($count % 2){ print" <tr bgcolor='$color{'color22'}'>";}else{    print" <tr bgcolor='$color{'color20'}'>";}
+                       print<<END;
+                       <td>$customservice{$key}[0]</td><td align='center'>$customservice{$key}[2]</td><td align='center'>$customservice{$key}[1]</td><td align='center'>
+END
+                       if($customservice{$key}[3] eq 'All ICMP-Types'){print $Lang::tr{'fwdfw all icmp'};}
+                       elsif($customservice{$key}[3] ne 'BLANK'){print $customservice{$key}[3];}
+                       print<<END;
+                       </td><td align='center'>$customservice{$key}[4]x</td>
+                       <td width='1%'><form method='post'><input type='image' src='/images/edit.gif' align='middle' alt=$Lang::tr{'edit'} title=$Lang::tr{'edit'} /><input type='hidden' name='ACTION' value='editservice' />
+                       <input type='hidden' name='SRV_NAME' value='$customservice{$key}[0]' />
+                       <input type='hidden' name='SRV_PORT' value='$customservice{$key}[1]' />
+                       <input type='hidden' name='PROT' value='$customservice{$key}[2]' />
+                       <input type='hidden' name='ICMP' value='$customservice{$key}[3]' /></form></td>
+END
+                       if ($customservice{$key}[4] eq '0')
+                       {
+                               print"<td width='1%'><form method='post'><input type='image' src='/images/delete.gif' align='middle' alt=$Lang::tr{'delete'} title=$Lang::tr{'delete'} /><input type='hidden' name='ACTION' value='delservice' /><input type='hidden' name='SRV_NAME' value='$customservice{$key}[0]'></td></tr></form>";
+                       }else{
+                               print"<td></td></tr>";
+                       }
+               }
+               print"</table>";
+               &Header::closebox();
+       }
+}
+sub viewtableservicegrp
+{
+       my $count=0;
+       my $grpname;
+       my $remark;
+       my $helper;
+       my $port;
+       my $protocol;
+       my $delflag;
+       if (! -z $configsrvgrp){
+               &Header::openbox('100%', 'left', $Lang::tr{'fwhost cust srvgrp'});
+               &General::readhasharray("$configsrvgrp", \%customservicegrp);
+               &General::readhasharray("$configsrv", \%customservice);
+               my $number= keys %customservicegrp;
+               foreach my $key (sort { ncmp($customservicegrp{$a}[0],$customservicegrp{$b}[0]) } keys %customservicegrp){
+                       $count++;
+                       if ($helper ne $customservicegrp{$key}[0]){
+                               $delflag=0;
+                               foreach my $key1 (sort { ncmp($customservicegrp{$a}[0],$customservicegrp{$b}[0]) } sort { ncmp($customservicegrp{$a}[2],$customservicegrp{$b}[2]) } keys %customservicegrp){
+                                       if ($customservicegrp{$key}[0] eq $customservicegrp{$key1}[0])
+                                       {
+                                               $delflag++;
+                                       }
+                                       if($delflag > 1){
+                                               last;
+                                       }
+                               }
+                               $grpname=$customservicegrp{$key}[0];
+                               if ($customservicegrp{$key}[2] eq "none"){
+                                       $customservicegrp{$key}[2]=$Lang::tr{'fwhost empty'};
+                                       $port='';
+                                       $protocol='';
+                               }
+                               $remark="$customservicegrp{$key}[1]";
+                               if($count >=2){print"</table>";}
+                               print "<br><b><u>$grpname</u></b>&nbsp; &nbsp; ";
+                               print "<b>$Lang::tr{'remark'}:</b>&nbsp; $remark " if ($remark ne '');
+                               print "&nbsp; <b>$Lang::tr{'used'}:</b> $customservicegrp{$key}[3]x";
+                               if($customservicegrp{$key}[3] == '0')
+                               {
+                                       print"<form method='post' style='display:inline'><input type='image' src='/images/delete.gif' alt=$Lang::tr{'delete'} title=$Lang::tr{'delete'} align='right' /><input type='hidden' name='SRVGRP_NAME' value='$grpname' ><input type='hidden' name='ACTION' value='delservicegrp'></form>";
+                               }
+                               print"<form method='post' style='display:inline'><input type='image' src='/images/edit.gif' alt=$Lang::tr{'edit'} title=$Lang::tr{'edit'} align='right' /><input type='hidden' name='SRVGRP_NAME' value='$grpname' ><input type='hidden' name='SRVGRP_REMARK' value='$remark' ><input type='hidden' name='ACTION' value='editservicegrp'></form>";
+                               print"<table width='100%' style='border: 1px solid #CCCCCC;' rules='none' cellspacing='0'><tr><td align='center'><b>Name</b></td><td align='center'><b>$Lang::tr{'port'}</b></td><td align='center' width='25%'><b>$Lang::tr{'fwhost prot'}</td><td></td></tr>";
+                       }
+                       if( $fwhostsettings{'SRVGRP_NAME'} eq $customservicegrp{$key}[0]) {
+                               print" <tr bgcolor='${Header::colouryellow}'>";
+                       }elsif ($count %2 == 0){
+                               print"<tr bgcolor='$color{'color22'}'>";
+                       }else{
+                               print"<tr bgcolor='$color{'color20'}'>";
+                       }
+                       print "<td width='39%'>$customservicegrp{$key}[2]</td>";
+                       foreach my $srv (sort keys %customservice){
+                               if ($customservicegrp{$key}[2] eq $customservice{$srv}[0]){
+                                       $protocol=$customservice{$srv}[2];
+                                       $port=$customservice{$srv}[1];
+                                       last;
+                               }
+                       }
+                       print"<td align='center'>$port</td><td align='center'>$protocol</td><td width='1%'><form method='post'>";
+                       if ($delflag gt '1'){
+                               print"<input type='image' src='/images/delete.gif' align='middle' alt=$Lang::tr{'delete'} title=$Lang::tr{'delete'} />";
+                       }
+                       print"<input type='hidden' name='ACTION' value='delgrpservice'><input type='hidden' name='updatesrvgrp' value='$fwhostsettings{'updatesrvgrp'}'><input type='hidden' name='delsrvfromgrp' value='$grpname,$remark,$customservicegrp{$key}[2],$customservicegrp{$key}[3]'></form></td></tr>";
+                       $helper=$customservicegrp{$key}[0];
+               }
+               print"</table>";
+               &Header::closebox();
+       }
+}
+# Check
+sub checkname
+{
+       my %hash=%{(shift)};
+       foreach my $key (keys %hash) {
+               if($hash{$key}[0] eq $fwhostsettings{'HOSTNAME'}){
+                       return 0;
+               }
+       }
+       return 1;
+       
+}
+sub checkgroup
+{
+       my %hash=%{(shift)};
+       my $name=shift;
+       foreach my $key (keys %hash) {
+               if($hash{$key}[0] eq $name){
+                       return 0;
+               }
+       }
+       return 1;
+}
+sub checkip
+{
+       
+       my %hash=%{(shift)};
+       my $a=shift;
+       foreach my $key (keys %hash) {
+               if($hash{$key}[$a] eq $fwhostsettings{'IP'}."/".&General::iporsubtodec($fwhostsettings{'SUBNET'})){
+                       return 0;
+               }
+       }
+       return 1;
+}
+sub checksubnet
+{
+       my %hash=%{(shift)};
+       &General::readhasharray("$confignet", \%hash);
+       foreach my $key (keys %hash) {
+               if(&General::IpInSubnet($fwhostsettings{'IP'},$hash{$key}[1],$hash{$key}[2]))
+               {
+                       return 1;
+               }
+       }
+       return 0;
+}
+sub checkservicegroup
+{
+       &General::readhasharray("$configsrvgrp", \%customservicegrp);
+       
+       
+       #check name
+       if ( ! &validhostname($fwhostsettings{'SRVGRP_NAME'}))
+       {
+               $errormessage.=$Lang::tr{'fwhost err name'}."<br>";
+               return $errormessage;
+       }
+       #check empty selectbox
+       if (keys %customservice lt 1)
+       {
+               $errormessage.=$Lang::tr{'fwhost err groupempty'}."<br>";
+       }
+       #check if name already exists
+       if ($fwhostsettings{'updatesrvgrp'} ne 'on'){
+               foreach my $key (keys %customservicegrp) {
+                       if( $customservicegrp{$key}[0] eq $fwhostsettings{'SRVGRP_NAME'} ){
+                               $errormessage.=$Lang::tr{'fwhost err grpexist'}."<br>";
+                       
+                       }
+               }
+       }
+       #check if service already exists in group
+       foreach my $key (keys %customservicegrp) {
+               if($customservicegrp{$key}[0] eq $fwhostsettings{'SRVGRP_NAME'} && $customservicegrp{$key}[2] eq $fwhostsettings{'CUST_SRV'} ){
+                       $errormessage.=$Lang::tr{'fwhost err srvexist'}."<br>";
+               }
+       }
+       return $errormessage;
+}
+sub error
+{
+       if ($errormessage) {
+               &Header::openbox('100%', 'left', $Lang::tr{'error messages'});
+               print "<class name='base'>$errormessage\n";
+               print "&nbsp;</class>\n";
+               &Header::closebox();
+       }
+}
+sub hint
+{
+       if ($hint) {
+               &Header::openbox('100%', 'left', $Lang::tr{'fwhost hint'});
+               print "<class name='base'>$hint\n";
+               print "&nbsp;</class>\n";
+               &Header::closebox();
+       }
+}
+sub get_name
+{
+       my $val=shift;
+       &General::setup_default_networks(\%defaultNetworks);
+       foreach my $network (sort keys %defaultNetworks)
+       {
+               return "$network" if ($val eq $defaultNetworks{$network}{'NAME'});
+       }       
+}
+
+sub deletefromgrp
+{
+       my $target=shift;
+       my $config=shift;
+       my %hash=();
+       &General::readhasharray("$config",\%hash);
+       foreach my $key (keys %hash) {
+               $errormessage.="lese $hash{$key}[2] und $target<br>";
+               if($hash{$key}[2] eq $target){
+                       
+                       delete $hash{$key};
+                       $errormessage.="Habe $target aus Gruppe gelöscht!<br>";
+               }
+       }
+       &General::writehasharray("$config",\%hash);
+       
+}
+sub plausicheck
+{
+       my $edit=shift;
+       #check hostname
+       if (!&validhostname($fwhostsettings{'HOSTNAME'}))
+       {
+               $errormessage=$errormessage.$Lang::tr{'fwhost err name'};
+               $fwhostsettings{'BLK_IP'}='readonly';
+               $fwhostsettings{'HOSTNAME'} = $fwhostsettings{'orgname'};
+               if ($fwhostsettings{'update'} eq 'on'){$fwhostsettings{'ACTION'}=$edit;}
+       }
+       #check if name collides with CCD Netname
+       &General::readhasharray("$configccdnet", \%ccdnet);
+       foreach my $key (keys %ccdnet) {
+               if($ccdnet{$key}[0] eq $fwhostsettings{'HOSTNAME'}){
+                       $errormessage=$errormessage.$Lang::tr{'fwhost err isccdnet'};;
+                       $fwhostsettings{'HOSTNAME'} = $fwhostsettings{'orgname'};
+                       if ($fwhostsettings{'update'} eq 'on'){$fwhostsettings{'ACTION'}=$edit;}
+                       last;
+               }
+       }
+       #check if IP collides with CCD NetIP
+       if ($fwhostsettings{'type'} ne 'mac'){
+               &General::readhasharray("$configccdnet", \%ccdnet);
+               foreach my $key (keys %ccdnet) {
+                       my $test=(&General::getnetworkip($fwhostsettings{'IP'},&General::iporsubtocidr($fwhostsettings{'SUBNET'})))."/".$fwhostsettings{'SUBNET'};
+                       if($ccdnet{$key}[1] eq $test){
+                               $errormessage=$errormessage.$Lang::tr{'fwhost err isccdipnet'};
+                               $fwhostsettings{'IP'} = $fwhostsettings{'orgip'};
+                               $fwhostsettings{'SUBNET'} = $fwhostsettings{'orgsubnet'};
+                               if ($fwhostsettings{'update'} eq 'on'){$fwhostsettings{'ACTION'}=$edit;}
+                               last;
+                       }
+               }
+       }
+       #check if name collides with CCD Hostname
+       &General::readhasharray("$configccdhost", \%ccdhost);
+       foreach my $key (keys %ccdhost) {
+               my ($ip,$sub)=split(/\//,$ccdhost{$key}[33]);
+               if($ip eq $fwhostsettings{'IP'}){
+                       $errormessage=$Lang::tr{'fwhost err isccdiphost'};
+                       if ($fwhostsettings{'update'} eq 'on'){$fwhostsettings{'ACTION'}=$edit;}
+                       last;
+               }
+       }
+       #check if IP collides with CCD HostIP (only hosts)
+       if ($edit eq 'edithost')
+       {
+               foreach my $key (keys %ccdhost) {
+                       if($ccdhost{$key}[1] eq $fwhostsettings{'HOSTNAME'}){
+                               $errormessage=$Lang::tr{'fwhost err isccdhost'};
+                               $fwhostsettings{'IP'} = $fwhostsettings{'orgname'};
+                               if ($fwhostsettings{'update'} eq 'on'){$fwhostsettings{'ACTION'}=$edit;}
+                               last;
+                       }
+               }
+       }
+       #check if network with this name already exists
+       &General::readhasharray("$confignet", \%customnetwork);
+       if (!&checkname(\%customnetwork))
+       {
+               $errormessage=$errormessage."<br>".$Lang::tr{'fwhost err netexist'};
+               $fwhostsettings{'HOSTNAME'} = $fwhostsettings{'orgname'};
+               if ($fwhostsettings{'update'} eq 'on'){$fwhostsettings{'ACTION'}=$edit;}
+       }       
+       #check if network ip already exists             
+       if (!&checkip(\%customnetwork,1))
+       {
+               $errormessage=$errormessage."<br>".$Lang::tr{'fwhost err net'};
+               if ($fwhostsettings{'update'} eq 'on'){$fwhostsettings{'ACTION'}=$edit;}
+       }       
+       #check if host with this name already exists
+       &General::readhasharray("$confighost", \%customhost);
+       if (!&checkname(\%customhost))
+       {
+               $errormessage.="<br>".$Lang::tr{'fwhost err hostexist'};
+               $fwhostsettings{'HOSTNAME'} = $fwhostsettings{'orgname'};
+               if ($fwhostsettings{'update'} eq 'on'){$fwhostsettings{'ACTION'}=$edit;}
+       }
+       #check if host with this ip already exists
+       if (!&checkip(\%customhost,2))
+       {
+               $errormessage=$errormessage."<br>".$Lang::tr{'fwhost err ipcheck'};
+       }
+       return;
+}
+sub getipforgroup
+{
+       my $name=$_[0],
+       my $type=$_[1];
+       my $value;
+       
+       #get address from IPSEC NETWORK
+       if ($type eq 'IpSec Network'){
+               foreach my $key (keys %ipsecconf) {
+                       if ($ipsecconf{$key}[1] eq $name){
+                               return $ipsecconf{$key}[11];
+                       }
+               }
+               &deletefromgrp($name,$configgrp);
+       }
+       
+       #get address from IPSEC HOST
+       if ($type eq 'IpSec Host'){
+               foreach my $key (keys %ipsecconf) {
+                       if ($ipsecconf{$key}[1] eq $name){
+                               return $ipsecconf{$key}[10];
+                       }
+               }
+               &deletefromgrp($name,$configgrp);
+       }
+               
+       #get address from ovpn ccd Net-2-Net
+       if ($type eq 'OpenVPN N-2-N'){
+               foreach my $key (keys %ccdhost) {
+                       if($ccdhost{$key}[1] eq $name){
+                               my ($a,$b) = split ("/",$ccdhost{$key}[11]);
+                               $b=&General::iporsubtodec($b);
+                               return "$a/$b";
+                       }
+               }
+               &deletefromgrp($name,$configgrp);
+       }
+       
+       #get address from ovpn ccd static host
+       if ($type eq 'OpenVPN static host'){
+               foreach my $key (keys %ccdhost) {
+                       if($ccdhost{$key}[1] eq $name){
+                               my ($a,$b) = split (/\//,$ccdhost{$key}[33]);
+                               $b=&General::iporsubtodec($b);
+                               return "$a/$b";
+                       }
+               }
+               &deletefromgrp($name,$configgrp);
+       }
+       
+       #get address from  ovpn ccd static net
+       if ($type eq 'OpenVPN static network'){
+               foreach my $key (keys %ccdnet) {
+                       if ($ccdnet{$key}[0] eq $name){
+                               my ($a,$b) = split (/\//,$ccdnet{$key}[1]);
+                               $b=&General::iporsubtodec($b);
+                               return "$a/$b";
+                       }
+               }
+       }
+       
+       #check custom addresses
+       if ($type eq 'Custom Host'){
+               foreach my $key (keys %customhost) {
+                       if ($customhost{$key}[0] eq $name){
+                               my ($ip,$sub) = split("/",$customhost{$key}[2]);
+                               return $ip;
+                       }
+               }
+       }
+       
+       ##check custom networks
+       if ($type eq 'Custom Network'){
+               foreach my $key (keys %customnetwork) {
+                       if($customnetwork{$key}[0] eq $name){
+                               return $customnetwork{$key}[1]."/".$customnetwork{$key}[2];
+                       }
+               }
+       }
+       
+       #check standard networks
+       if ($type eq 'Standard Network'){
+               if ($name =~ /OpenVPN/i){
+                       my %ovpn=();
+                       &General::readhash("${General::swroot}/ovpn/settings",\%ovpn);
+                       return $ovpn{'DOVPN_SUBNET'};
+               }
+               if ($name eq 'GREEN'){
+                       my %hash=();
+                       &General::readhash("${General::swroot}/ethernet/settings",\%hash);
+                       return $hash{'GREEN_NETADDRESS'}."/".$hash{'GREEN_NETMASK'};
+               }
+               if ($name eq 'BLUE'){
+                       my %hash=();
+                       &General::readhash("${General::swroot}/ethernet/settings",\%hash);
+                       return $hash{'BLUE_NETADDRESS'}."/".$hash{'BLUE_NETMASK'};
+               }
+               if ($name eq 'ORANGE'){
+                       my %hash=();
+                       &General::readhash("${General::swroot}/ethernet/settings",\%hash);
+                       return $hash{'ORANGE_NETADDRESS'}."/".$hash{'ORANGE_NETMASK'};
+               }
+               if ($name eq 'ALL'){
+                       return "0.0.0.0/0.0.0.0";
+               }
+               if ($name =~ /IPsec/i){
+                       my %hash=();
+                       &General::readhash("${General::swroot}/vpn/settings",\%hash);
+                       return $hash{'RW_NET'};
+               }
+       }
+}
+
+sub decrease {
+       my $grp=$_[0];
+       &General::readhasharray("$confignet", \%customnetwork);
+       &General::readhasharray("$confighost", \%customhost);
+       foreach my $key (sort keys %customgrp ){
+               if ( ($customgrp{$key}[0] eq $grp) && ($customgrp{$key}[3] eq 'Custom Network')){
+                       foreach my $key1 (sort keys %customnetwork){
+                               if ($customnetwork{$key1}[0] eq $customgrp{$key}[2]){
+                                       $customnetwork{$key1}[4]=$customnetwork{$key1}[4]-1;
+                                       last;
+                               }
+                       }
+               }
+               
+               if (($customgrp{$key}[0] eq $grp) && ($customgrp{$key}[3] eq 'Custom Host')){
+                       foreach my $key2 (sort keys %customhost){
+                               if ($customhost{$key2}[0] eq $customgrp{$key}[2]){
+                                       $customhost{$key2}[4]=$customhost{$key2}[4]-1;
+                                       last;
+                               }
+                       }
+                               
+               }
+       }
+       &General::writehasharray("$confignet", \%customnetwork);
+       &General::writehasharray("$confighost", \%customhost);
+}
+sub decreaseservice
+{
+       my $grp=$_[0];
+       &General::readhasharray("$configsrv", \%customservice);
+       &General::readhasharray("$configsrvgrp", \%customservicegrp);
+       
+       foreach my $key (sort keys %customservicegrp){
+               if ($customservicegrp{$key}[0] eq $grp ){
+                       foreach my $key2 (sort keys %customservice){
+                               if ($customservice{$key2}[0] eq $customservicegrp{$key}[2]){
+                                       $customservice{$key2}[4]--;
+                               }
+                       }
+               }
+       }
+       &General::writehasharray("$configsrv", \%customservice);
+       
+}
+sub checkports
+{
+       
+       my %hash=%{(shift)};
+       #check empty fields
+       if ($fwhostsettings{'SRV_NAME'} eq '' ){
+               $errormessage=$Lang::tr{'fwhost err name1'};
+       }
+       if ($fwhostsettings{'SRV_PORT'} eq '' && $fwhostsettings{'PROT'} ne 'ICMP'){
+               $errormessage=$Lang::tr{'fwhost err port'};
+       }
+       #check valid name
+       if (! &validhostname($fwhostsettings{'SRV_NAME'})){
+               $errormessage="<br>".$Lang::tr{'fwhost err name'};
+       }
+       #change dashes with :
+       $fwhostsettings{'SRV_PORT'}=~ tr/-/:/;
+               
+       if ($fwhostsettings{'SRV_PORT'} eq "*") {
+               $fwhostsettings{'SRV_PORT'} = "1:65535";
+       }
+       if ($fwhostsettings{'SRV_PORT'} =~ /^(\D)\:(\d+)$/) {
+               $fwhostsettings{'SRV_PORT'} = "1:$2";
+       }
+       if ($fwhostsettings{'SRV_PORT'} =~ /^(\d+)\:(\D)$/) {
+               $fwhostsettings{'SRV_PORT'} = "$1:65535";
+       }
+       if($fwhostsettings{'PROT'} ne 'ICMP'){
+               $errormessage = $errormessage.&General::validportrange($fwhostsettings{'SRV_PORT'}, 'src');
+       }
+       # a new service has to have a different name
+       foreach my $key (keys %hash){
+               if ($hash{$key}[0] eq $fwhostsettings{'SRV_NAME'}){
+                       $errormessage = "<br>".$Lang::tr{'fwhost err srv exists'};
+                       last;
+               }
+       }
+       return $errormessage;
+}
+sub validhostname
+{
+       # Checks a hostname against RFC1035
+        my $hostname = $_[0];
+
+       # Each part should be at least two characters in length
+       # but no more than 63 characters
+       if (length ($hostname) < 1 || length ($hostname) > 63) {
+               return 0;}
+       # Only valid characters are a-z, A-Z, 0-9 and -
+       if ($hostname !~ /^[a-zA-ZäöüÖÄÜ0-9-_.;()\/\s]*$/) {
+               return 0;}
+       # First character can only be a letter or a digit
+       if (substr ($hostname, 0, 1) !~ /^[a-zA-ZöäüÖÄÜ0-9]*$/) {
+               return 0;}
+       # Last character can only be a letter or a digit
+       if (substr ($hostname, -1, 1) !~ /^[a-zA-ZöäüÖÄÜ0-9()]*$/) {
+               return 0;}
+       return 1;
+}
+sub validremark
+{
+       # Checks a hostname against RFC1035
+        my $remark = $_[0];
+       # Each part should be at least two characters in length
+       # but no more than 63 characters
+       if (length ($remark) < 1 || length ($remark) > 255) {
+               return 0;}
+       # Only valid characters are a-z, A-Z, 0-9 and -
+       if ($remark !~ /^[a-zäöüA-ZÖÄÜ0-9-.:;\|_()\/\s]*$/) {
+               return 0;}
+       # First character can only be a letter or a digit
+       if (substr ($remark, 0, 1) !~ /^[a-zäöüA-ZÖÄÜ0-9]*$/) {
+               return 0;}
+       # Last character can only be a letter or a digit
+       if (substr ($remark, -1, 1) !~ /^[a-zöäüA-ZÖÄÜ0-9.:;_)]*$/) {
+               return 0;}
+       return 1;
+}
+&Header::closebigbox();
+&Header::closepage();
index ea19e26f5904cfae7feb21b11ae948091e643bc7..e37540bc284ff833a30b7d4afd736df9df864ab8 100644 (file)
@@ -341,7 +341,7 @@ END
                }       else { print $Lang::tr{'advproxy off'};  }
        }
        if ( $netsettings{'ORANGE_DEV'} ) { print <<END;
-               <tr><td align='center' bgcolor='$Header::colourorange' width='25%'><a href="/cgi-bin/dmzholes.cgi"><font size='2' color='white'><b>$Lang::tr{'dmz'}</b></font></a><br>
+               <tr><td align='center' bgcolor='$Header::colourorange' width='25%'><a href="/cgi-bin/firewall.cgi"><font size='2' color='white'><b>$Lang::tr{'dmz'}</b></font></a><br>
                <td width='30%' align='center'>$netsettings{'ORANGE_ADDRESS'}
                <td width='45%' align='center'><font color=$Header::colourgreen>Online</font>
 END
index 60560f3d4c4e4a06ad395f5ac98db2b360c6d079..3f2fb56cced87df699dffc9b27b8118eb8ad3a06 100644 (file)
@@ -61,8 +61,8 @@ if ( $querry[0] =~ /wireless/ ){
        &Header::openbigbox('100%', 'left');
 
        push (@graphs, ($netsettings{'GREEN_DEV'}));
-       if ($netsettings{'BLUE_DEV'}) {push (@graphs, ($netsettings{'BLUE_DEV'})); }
-       if ($netsettings{'ORANGE_DEV'}) {push (@graphs, ($netsettings{'ORANGE_DEV'})); }
+       if (&Header::blue_used() && $netsettings{'BLUE_DEV'}) {push (@graphs, ($netsettings{'BLUE_DEV'})); }
+       if (&Header::orange_used() && $netsettings{'ORANGE_DEV'}) {push (@graphs, ($netsettings{'ORANGE_DEV'})); }
 
        my @wirelessgraphs = `ls -dA /var/log/rrd/collectd/localhost/wireless* 2>/dev/null`;
        foreach (@wirelessgraphs){
index 189395726395d8177831d011170bad6e2b4bd0b6..9563aabc8cfc835d1a1373e99633afe4cb97a749 100644 (file)
@@ -11,7 +11,6 @@
 # $Id: optionsfw.cgi,v 1.1.2.10 2005/10/03 00:34:10 gespinasse Exp $
 #
 #
-
 # enable only the following on debugging purpose
 #use warnings;
 #use CGI::Carp 'fatalsToBrowser';
@@ -22,38 +21,49 @@ require "${General::swroot}/header.pl";
 
 
 my %checked =();     # Checkbox manipulations
-
-# File used
-my $filename = "${General::swroot}/optionsfw/settings";
-
 our %settings=();
-$settings{'DISABLEPING'} = 'NO';
-$settings{'DROPNEWNOTSYN'} = 'on';
-$settings{'DROPINPUT'} = 'on';
-$settings{'DROPOUTPUT'} = 'on';
-$settings{'DROPPORTSCAN'} = 'on';
-$settings{'DROPWIRELESSINPUT'} = 'on';
-$settings{'DROPWIRELESSFORWARD'} = 'on';
+my %fwdfwsettings=();
+my %configfwdfw=();
+my %configoutgoingfw=();
 
+my $configfwdfw                = "${General::swroot}/firewall/config";
+my $configoutgoing     = "${General::swroot}/firewall/outgoing";
 my $errormessage = '';
 my $warnmessage = '';
+my $filename = "${General::swroot}/optionsfw/settings";
 
+&General::readhash("${General::swroot}/firewall/settings", \%fwdfwsettings);
 &Header::showhttpheaders();
 
 #Get GUI values
 &Header::getcgihash(\%settings);
-
 if ($settings{'ACTION'} eq $Lang::tr{'save'}) {
-        $errormessage = $Lang::tr{'new optionsfw later'};
-        delete $settings{'__CGI__'};delete $settings{'x'};delete $settings{'y'};
-        &General::writehash($filename, \%settings);             # Save good settings
-   } else {
-        &General::readhash($filename, \%settings);                      # Get saved settings and reset to good if needed
-        }
+       if ($settings{'defpol'} ne '1'){
+               $errormessage .= $Lang::tr{'new optionsfw later'};
+               &General::writehash($filename, \%settings);             # Save good settings
+               system("/usr/local/bin/firewallctrl");
+       }else{
+               if ($settings{'POLICY'} ne ''){
+                       $fwdfwsettings{'POLICY'} = $settings{'POLICY'};
+               }
+               if ($settings{'POLICY1'} ne ''){
+                       $fwdfwsettings{'POLICY1'} = $settings{'POLICY1'};
+               }
+               my $MODE = $fwdfwsettings{'POLICY'};
+               my $MODE1 = $fwdfwsettings{'POLICY1'};
+               %fwdfwsettings = ();
+               $fwdfwsettings{'POLICY'} = "$MODE";
+               $fwdfwsettings{'POLICY1'} = "$MODE1";
+               &General::writehash("${General::swroot}/firewall/settings", \%fwdfwsettings);
+               &General::readhash("${General::swroot}/firewall/settings", \%fwdfwsettings);
+               system("/usr/local/bin/firewallctrl");
+       }
+       &General::readhash($filename, \%settings);             # Load good settings
+}
 
 &Header::openpage($Lang::tr{'options fw'}, 1, '');
 &Header::openbigbox('100%', 'left', '', $errormessage);
-
+&General::readhash($filename, \%settings);
 if ($errormessage) {
         &Header::openbox('100%', 'left', $Lang::tr{'warning messages'});
         print "<font color='red'>$errormessage&nbsp;</font>";
@@ -66,9 +76,12 @@ $checked{'DROPNEWNOTSYN'}{$settings{'DROPNEWNOTSYN'}} = "checked='checked'";
 $checked{'DROPINPUT'}{'off'} = '';
 $checked{'DROPINPUT'}{'on'} = '';
 $checked{'DROPINPUT'}{$settings{'DROPINPUT'}} = "checked='checked'";
-$checked{'DROPOUTPUT'}{'off'} = '';
-$checked{'DROPOUTPUT'}{'on'} = '';
-$checked{'DROPOUTPUT'}{$settings{'DROPOUTPUT'}} = "checked='checked'";
+$checked{'DROPFORWARD'}{'off'} = '';
+$checked{'DROPFORWARD'}{'on'} = '';
+$checked{'DROPFORWARD'}{$settings{'DROPFORWARD'}} = "checked='checked'";
+$checked{'DROPOUTGOING'}{'off'} = '';
+$checked{'DROPOUTGOING'}{'on'} = '';
+$checked{'DROPOUTGOING'}{$settings{'DROPOUTGOING'}} = "checked='checked'";
 $checked{'DROPPORTSCAN'}{'off'} = '';
 $checked{'DROPPORTSCAN'}{'on'} = '';
 $checked{'DROPPORTSCAN'}{$settings{'DROPPORTSCAN'}} = "checked='checked'";
@@ -84,6 +97,21 @@ $checked{'DROPPROXY'}{$settings{'DROPPROXY'}} = "checked='checked'";
 $checked{'DROPSAMBA'}{'off'} = '';
 $checked{'DROPSAMBA'}{'on'} = '';
 $checked{'DROPSAMBA'}{$settings{'DROPSAMBA'}} = "checked='checked'";
+$checked{'SHOWCOLORS'}{'off'} = '';
+$checked{'SHOWCOLORS'}{'on'} = '';
+$checked{'SHOWCOLORS'}{$settings{'SHOWCOLORS'}} = "checked='checked'";
+$checked{'SHOWREMARK'}{'off'} = '';
+$checked{'SHOWREMARK'}{'on'} = '';
+$checked{'SHOWREMARK'}{$settings{'SHOWREMARK'}} = "checked='checked'";
+$checked{'SHOWTABLES'}{'off'} = '';
+$checked{'SHOWTABLES'}{'on'} = '';
+$checked{'SHOWTABLES'}{$settings{'SHOWTABLES'}} = "checked='checked'";
+$checked{'SHOWDROPDOWN'}{'off'} = '';
+$checked{'SHOWDROPDOWN'}{'on'} = '';
+$checked{'SHOWDROPDOWN'}{$settings{'SHOWDROPDOWN'}} = "checked='checked'";
+$selected{'FWPOLICY'}{$settings{'FWPOLICY'}}= 'selected';
+$selected{'FWPOLICY1'}{$settings{'FWPOLICY1'}}= 'selected';
+$selected{'FWPOLICY2'}{$settings{'FWPOLICY2'}}= 'selected';
 
 &Header::openbox('100%', 'center', $Lang::tr{'options fw'});
 print "<form method='post' action='$ENV{'SCRIPT_NAME'}'>";
@@ -96,8 +124,10 @@ print <<END
                                                                                                                                                                                <input type='radio' name='DROPNEWNOTSYN' value='off' $checked{'DROPNEWNOTSYN'}{'off'} /> off</td></tr>
 <tr><td align='left' width='60%'>$Lang::tr{'drop input'}</td><td align='left'>on <input type='radio' name='DROPINPUT' value='on' $checked{'DROPINPUT'}{'on'} />/
                                                                                                                                                                                <input type='radio' name='DROPINPUT' value='off' $checked{'DROPINPUT'}{'off'} /> off</td></tr>
-<tr><td align='left' width='60%'>$Lang::tr{'drop output'}</td><td align='left'>on <input type='radio' name='DROPOUTPUT' value='on' $checked{'DROPOUTPUT'}{'on'} />/
-                                                                                                                                                                               <input type='radio' name='DROPOUTPUT' value='off' $checked{'DROPOUTPUT'}{'off'} /> off</td></tr>
+<tr><td align='left' width='60%'>$Lang::tr{'drop forward'}</td><td align='left'>on <input type='radio' name='DROPFORWARD' value='on' $checked{'DROPFORWARD'}{'on'} />/
+                                                                                                                                                                               <input type='radio' name='DROPFORWARD' value='off' $checked{'DROPFORWARD'}{'off'} /> off</td></tr>
+<tr><td align='left' width='60%'>$Lang::tr{'drop outgoing'}</td><td align='left'>on <input type='radio' name='DROPOUTGOING' value='on' $checked{'DROPOUTGOING'}{'on'} />/
+                                                                                                                                                                               <input type='radio' name='DROPOUTGOING' value='off' $checked{'DROPOUTGOING'}{'off'} /> off</td></tr>                                                                                                                                                                            
 <tr><td align='left' width='60%'>$Lang::tr{'drop portscan'}</td><td align='left'>on <input type='radio' name='DROPPORTSCAN' value='on' $checked{'DROPPORTSCAN'}{'on'} />/
                                                                                                                                                                                <input type='radio' name='DROPPORTSCAN' value='off' $checked{'DROPPORTSCAN'}{'off'} /> off</td></tr>
 <tr><td align='left' width='60%'>$Lang::tr{'drop wirelessinput'}</td><td align='left'>on <input type='radio' name='DROPWIRELESSINPUT' value='on' $checked{'DROPWIRELESSINPUT'}{'on'} />/
@@ -105,7 +135,8 @@ print <<END
 <tr><td align='left' width='60%'>$Lang::tr{'drop wirelessforward'}</td><td align='left'>on <input type='radio' name='DROPWIRELESSFORWARD' value='on' $checked{'DROPWIRELESSFORWARD'}{'on'} />/
                                                                                                                                                                                <input type='radio' name='DROPWIRELESSFORWARD' value='off' $checked{'DROPWIRELESSFORWARD'}{'off'} /> off</td></tr>
 </table>
-<br />
+<br/>
+
 <table width='95%' cellspacing='0'>
 <tr bgcolor='$color{'color20'}'><td colspan='2' align='left'><b>$Lang::tr{'fw blue'}</b></td></tr>
 <tr><td align='left' width='60%'>$Lang::tr{'drop proxy'}</td><td align='left'>on <input type='radio' name='DROPPROXY' value='on' $checked{'DROPPROXY'}{'on'} />/
@@ -113,15 +144,77 @@ print <<END
 <tr><td align='left' width='60%'>$Lang::tr{'drop samba'}</td><td align='left'>on <input type='radio' name='DROPSAMBA' value='on' $checked{'DROPSAMBA'}{'on'} />/
                                                                                                                                                                                <input type='radio' name='DROPSAMBA' value='off' $checked{'DROPSAMBA'}{'off'} /> off</td></tr>
 </table>
+<br>
+<table width='95%' cellspacing='0'>
+<tr bgcolor='$color{'color20'}'><td colspan='2' align='left'><b>$Lang::tr{'fw settings'}</b></td></tr>
+<tr><td align='left' width='60%'>$Lang::tr{'fw settings color'}</td><td align='left'>on <input type='radio' name='SHOWCOLORS' value='on' $checked{'SHOWCOLORS'}{'on'} />/
+                                                                                                                                                                               <input type='radio' name='SHOWCOLORS' value='off' $checked{'SHOWCOLORS'}{'off'} /> off</td></tr>
+<tr><td align='left' width='60%'>$Lang::tr{'fw settings remark'}</td><td align='left'>on <input type='radio' name='SHOWREMARK' value='on' $checked{'SHOWREMARK'}{'on'} />/
+                                                                                                                                                                               <input type='radio' name='SHOWREMARK' value='off' $checked{'SHOWREMARK'}{'off'} /> off</td></tr>                
+<tr><td align='left' width='60%'>$Lang::tr{'fw settings ruletable'}</td><td align='left'>on <input type='radio' name='SHOWTABLES' value='on' $checked{'SHOWTABLES'}{'on'} />/
+                                                                                                                                                                               <input type='radio' name='SHOWTABLES' value='off' $checked{'SHOWTABLES'}{'off'} /> off</td></tr>
+<tr><td align='left' width='60%'>$Lang::tr{'fw settings dropdown'}</td><td align='left'>on <input type='radio' name='SHOWDROPDOWN' value='on' $checked{'SHOWDROPDOWN'}{'on'} />/
+                                                                                                                                                                               <input type='radio' name='SHOWDROPDOWN' value='off' $checked{'SHOWDROPDOWN'}{'off'} /> off</td></tr>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+</table>                                                                                                                                                                               
+<br />
+<table width='95%' cellspacing='0'>
+<tr bgcolor='$color{'color20'}'><td colspan='2' align='left'><b>$Lang::tr{'fw default drop'}</b></td></tr>
+<tr><td align='left' width='60%'>$Lang::tr{'drop action'}</td><td><select name='FWPOLICY'>
+<option value='DROP' $selected{'FWPOLICY'}{'DROP'}>DROP</option>
+<option value='REJECT' $selected{'FWPOLICY'}{'REJECT'}>REJECT</option></select>
+</td></tr>
+<tr><td align='left' width='60%'>$Lang::tr{'drop action1'}</td><td><select name='FWPOLICY1'>
+<option value='DROP' $selected{'FWPOLICY1'}{'DROP'}>DROP</option>
+<option value='REJECT' $selected{'FWPOLICY1'}{'REJECT'}>REJECT</option></select>
+</td></tr>
+<tr><td align='left' width='60%'>$Lang::tr{'drop action2'}</td><td><select name='FWPOLICY2'>
+<option value='DROP' $selected{'FWPOLICY2'}{'DROP'}>DROP</option>
+<option value='REJECT' $selected{'FWPOLICY2'}{'REJECT'}>REJECT</option></select>
+</td></tr>
+</table>
+
 <br />
 <table width='10%' cellspacing='0'>
 <tr><td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
-                                                                                               <input type='hidden' name='ACTION' value=$Lang::tr{'save'} />
-                                                                                               <input type='image' alt='$Lang::tr{'save'}' title='$Lang::tr{'save'}' src='/images/media-floppy.png' /></form></td></tr>
+<input type='submit' name='ACTION' value=$Lang::tr{'save'} />
+</form></td></tr>
 </table>
 </form>
 END
 ;
 &Header::closebox();
+
+&Header::openbox('100%', 'center', $Lang::tr{'fwdfw pol title'});
+       if ($fwdfwsettings{'POLICY'} eq 'MODE1'){ $selected{'POLICY'}{'MODE1'} = 'selected'; } else { $selected{'POLICY'}{'MODE1'} = ''; }
+       if ($fwdfwsettings{'POLICY'} eq 'MODE2'){ $selected{'POLICY'}{'MODE2'} = 'selected'; } else { $selected{'POLICY'}{'MODE2'} = ''; }
+       if ($fwdfwsettings{'POLICY1'} eq 'MODE1'){ $selected{'POLICY1'}{'MODE1'} = 'selected'; } else { $selected{'POLICY1'}{'MODE1'} = ''; }
+       if ($fwdfwsettings{'POLICY1'} eq 'MODE2'){ $selected{'POLICY1'}{'MODE2'} = 'selected'; } else { $selected{'POLICY1'}{'MODE2'} = ''; }
+print <<END;
+       <form method='post' action='$ENV{'SCRIPT_NAME'}'>
+       <table width='100%' border='0'>
+               <tr><td colspan='3' style='font-weight:bold;color:red;' align='left'>FORWARD </td></tr>
+               <tr><td colspan='3' align='left'>$Lang::tr{'fwdfw pol text'}</td></tr>
+               <tr><td colspan='3'><hr /></td></tr>
+               <tr><td width='15%' align='left'>       <select name='POLICY' style="width: 100px">
+               <option value='MODE1' $selected{'POLICY'}{'MODE1'}>$Lang::tr{'fwdfw pol block'}</option>
+               <option value='MODE2' $selected{'POLICY'}{'MODE2'}>$Lang::tr{'fwdfw pol allow'}</option></select>
+           <input type='submit' name='ACTION' value=$Lang::tr{'save'} /><input type='hidden' name='defpol' value='1'></td>
+END
+       print "</tr></table></form>";
+       print"<br><br>";
+       print <<END;
+       <form method='post' action='$ENV{'SCRIPT_NAME'}'>
+       <table width='100%' border='0'>
+               <tr><td colspan='3' style='font-weight:bold;color:red;' align='left'>OUTGOING </td></tr>
+               <tr><td colspan='3' align='left'>$Lang::tr{'fwdfw pol text1'}</td></tr>
+               <tr><td colspan='3'><hr /></td></tr>
+               <tr><td width='15%' align='left'>       <select name='POLICY1' style="width: 100px">
+               <option value='MODE1' $selected{'POLICY1'}{'MODE1'}>$Lang::tr{'fwdfw pol block'}</option>
+               <option value='MODE2' $selected{'POLICY1'}{'MODE2'}>$Lang::tr{'fwdfw pol allow'}</option></select>
+           <input type='submit' name='ACTION' value='$Lang::tr{'save'}' /><input type='hidden' name='defpol' value='1'></td>
+END
+       print "</tr></table></form>";
+       &Header::closebox();
+
 &Header::closebigbox();
 &Header::closepage();
diff --git a/html/cgi-bin/outgoingfw.cgi b/html/cgi-bin/outgoingfw.cgi
deleted file mode 100644 (file)
index b417817..0000000
+++ /dev/null
@@ -1,849 +0,0 @@
-#!/usr/bin/perl
-###############################################################################
-#                                                                             #
-# IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2005-2010  IPFire Team                                        #
-#                                                                             #
-# This program is free software: you can redistribute it and/or modify        #
-# it under the terms of the GNU General Public License as published by        #
-# the Free Software Foundation, either version 3 of the License, or           #
-# (at your option) any later version.                                         #
-#                                                                             #
-# This program is distributed in the hope that it will be useful,             #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
-# GNU General Public License for more details.                                #
-#                                                                             #
-# You should have received a copy of the GNU General Public License           #
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
-#                                                                             #
-###############################################################################
-
-use strict;
-# enable only the following on debugging purpose
-#use warnings;
-#use CGI::Carp 'fatalsToBrowser';
-
-require '/var/ipfire/general-functions.pl';
-require "${General::swroot}/lang.pl";
-require "${General::swroot}/header.pl";
-
-my %outfwsettings = ();
-my %checked = ();
-my %selected= () ;
-my %netsettings = ();
-my $errormessage = "";
-my $configentry = "";
-my @configs = ();
-my @configline = ();
-my $p2pentry = "";
-my @p2ps = ();
-my @p2pline = ();
-
-my $configfile = "/var/ipfire/outgoing/rules";
-my $configpath = "/var/ipfire/outgoing/groups/";
-my $p2pfile = "/var/ipfire/outgoing/p2protocols";
-my $servicefile = "/var/ipfire/outgoing/defaultservices";
-
-my %color = ();
-my %mainsettings = ();
-&General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
-
-&General::readhash("${General::swroot}/ethernet/settings", \%netsettings);
-
-&Header::showhttpheaders();
-
-### Values that have to be initialized
-$outfwsettings{'ACTION'} = '';
-$outfwsettings{'VALID'} = 'yes';
-$outfwsettings{'EDIT'} = 'no';
-$outfwsettings{'NAME'} = '';
-$outfwsettings{'SNET'} = '';
-$outfwsettings{'SIP'} = '';
-$outfwsettings{'SPORT'} = '';
-$outfwsettings{'SMAC'} = '';
-$outfwsettings{'DIP'} = '';
-$outfwsettings{'DPORT'} = '';
-$outfwsettings{'PROT'} = '';
-$outfwsettings{'STATE'} = '';
-$outfwsettings{'DISPLAY_DIP'} = '';
-$outfwsettings{'DISPLAY_DPORT'} = '';
-$outfwsettings{'DISPLAY_SMAC'} = '';
-$outfwsettings{'DISPLAY_SIP'} = '';
-$outfwsettings{'POLICY'} = 'MODE0';
-$outfwsettings{'MODE1LOG'} = 'off';
-
-$outfwsettings{'TIME_FROM'} = '00:00';
-$outfwsettings{'TIME_TO'} = '00:00';
-
-&General::readhash("${General::swroot}/outgoing/settings", \%outfwsettings);
-&Header::getcgihash(\%outfwsettings);
-
-###############
-# DEBUG DEBUG
-#&Header::openbox('100%', 'left', 'DEBUG');
-#my $debugCount = 0;
-#foreach my $line (sort keys %outfwsettings) {
-#print "$line = $outfwsettings{$line}<br />\n";
-# $debugCount++;
-#}
-#print "&nbsp;Count: $debugCount\n";
-#&Header::closebox();
-# DEBUG DEBUG
-###############
-
-$selected{'TIME_FROM'}{$outfwsettings{'TIME_FROM'}} = "selected='selected'";
-$selected{'TIME_TO'}{$outfwsettings{'TIME_TO'}} = "selected='selected'";
-
-$checked{'MODE1LOG'}{'off'} = '';
-$checked{'MODE1LOG'}{'on'} = '';
-$checked{'MODE1LOG'}{$outfwsettings{'MODE1LOG'}} = "checked='checked'";
-$checked{'TIME_MON'}{'off'} = '';
-$checked{'TIME_MON'}{'on'} = '';
-$checked{'TIME_MON'}{$outfwsettings{'TIME_MON'}} = "checked='checked'";
-$checked{'TIME_TUE'}{'off'} = '';
-$checked{'TIME_TUE'}{'on'} = '';
-$checked{'TIME_TUE'}{$outfwsettings{'TIME_TUE'}} = "checked='checked'";
-$checked{'TIME_WED'}{'off'} = '';
-$checked{'TIME_WED'}{'on'} = '';
-$checked{'TIME_WED'}{$outfwsettings{'TIME_WED'}} = "checked='checked'";
-$checked{'TIME_THU'}{'off'} = '';
-$checked{'TIME_THU'}{'on'} = '';
-$checked{'TIME_THU'}{$outfwsettings{'TIME_THU'}} = "checked='checked'";
-$checked{'TIME_FRI'}{'off'} = '';
-$checked{'TIME_FRI'}{'on'} = '';
-$checked{'TIME_FRI'}{$outfwsettings{'TIME_FRI'}} = "checked='checked'";
-$checked{'TIME_SAT'}{'off'} = '';
-$checked{'TIME_SAT'}{'on'} = '';
-$checked{'TIME_SAT'}{$outfwsettings{'TIME_SAT'}} = "checked='checked'";
-$checked{'TIME_SUN'}{'off'} = '';
-$checked{'TIME_SUN'}{'on'} = '';
-$checked{'TIME_SUN'}{$outfwsettings{'TIME_SUN'}} = "checked='checked'";
-
-if ($outfwsettings{'POLICY'} eq 'MODE0'){ $selected{'POLICY'}{'MODE0'} = 'selected'; } else { $selected{'POLICY'}{'MODE0'} = ''; }
-if ($outfwsettings{'POLICY'} eq 'MODE1'){ $selected{'POLICY'}{'MODE1'} = 'selected'; } else { $selected{'POLICY'}{'MODE1'} = ''; }
-if ($outfwsettings{'POLICY'} eq 'MODE2'){ $selected{'POLICY'}{'MODE2'} = 'selected'; } else { $selected{'POLICY'}{'MODE2'} = ''; }
-
-# This is a little hack if poeple don´t mark any date then all will be selected, because they might have forgotten to select
-# a valid day. A Rule without any matching day will never work, because the timeranges are new feature people might not notice
-# that they have to select a day for the rule.
-
-if ( $outfwsettings{'TIME_MON'} eq "" &&
-     $outfwsettings{'TIME_TUE'} eq "" &&
-        $outfwsettings{'TIME_WED'} eq "" &&
-        $outfwsettings{'TIME_THU'} eq "" &&
-        $outfwsettings{'TIME_FRI'} eq "" &&
-        $outfwsettings{'TIME_SAT'} eq "" &&
-        $outfwsettings{'TIME_SUN'} eq "" )
-        {
-               $outfwsettings{'TIME_MON'} = "on";
-               $outfwsettings{'TIME_TUE'} = "on";
-               $outfwsettings{'TIME_WED'} = "on";
-               $outfwsettings{'TIME_THU'} = "on";
-               $outfwsettings{'TIME_FRI'} = "on";
-               $outfwsettings{'TIME_SAT'} = "on";
-               $outfwsettings{'TIME_SUN'} = "on";
-        }
-
-&Header::openpage($Lang::tr{'outgoing firewall'}, 1, '');
-&Header::openbigbox('100%', 'left', '', $errormessage);
-
-############################################################################################################################
-############################################################################################################################
-
-if ($outfwsettings{'ACTION'} eq $Lang::tr{'reset'})
-{
-       $outfwsettings{'POLICY'}='MODE0';
-       unlink $configfile;
-       system("/usr/bin/touch $configfile");
-       my $MODE = $outfwsettings{'POLICY'};
-       %outfwsettings = ();
-       $outfwsettings{'POLICY'} = "$MODE";
-       &General::writehash("${General::swroot}/outgoing/settings", \%outfwsettings);
-}
-if ($outfwsettings{'ACTION'} eq $Lang::tr{'save'})
-{
-       my $MODE = $outfwsettings{'POLICY'};
-       my $MODE1LOG = $outfwsettings{'MODE1LOG'};
-       %outfwsettings = ();
-       $outfwsettings{'POLICY'} = "$MODE";
-       $outfwsettings{'MODE1LOG'} = "$MODE1LOG";
-       &General::writehash("${General::swroot}/outgoing/settings", \%outfwsettings);
-       system("/usr/local/bin/outgoingfwctrl");
-}
-if ($outfwsettings{'ACTION'} eq 'enable')
-{
-       open( FILE, "< $p2pfile" ) or die "Unable to read $p2pfile";
-       @p2ps = <FILE>;
-       close FILE;
-       open( FILE, "> $p2pfile" ) or die "Unable to write $p2pfile";
-       foreach $p2pentry (sort @p2ps)
-       {
-               @p2pline = split( /\;/, $p2pentry );
-               if ($p2pline[1] eq $outfwsettings{'P2PROT'}) {
-                       print FILE "$p2pline[0];$p2pline[1];on;\n";
-               } else {
-                       print FILE "$p2pline[0];$p2pline[1];$p2pline[2];\n";
-               }
-       }
-       close FILE;
-       system("/usr/local/bin/outgoingfwctrl");
-}
-if ($outfwsettings{'ACTION'} eq 'disable')
-{
-       open( FILE, "< $p2pfile" ) or die "Unable to read $p2pfile";
-       @p2ps = <FILE>;
-       close FILE;
-       open( FILE, "> $p2pfile" ) or die "Unable to write $p2pfile";
-       foreach $p2pentry (sort @p2ps)
-       {
-               @p2pline = split( /\;/, $p2pentry );
-               if ($p2pline[1] eq $outfwsettings{'P2PROT'}) {
-                       print FILE "$p2pline[0];$p2pline[1];off;\n";
-               } else {
-                       print FILE "$p2pline[0];$p2pline[1];$p2pline[2];\n";
-               }
-       }
-       close FILE;
-       system("/usr/local/bin/outgoingfwctrl");
-}
-if ($outfwsettings{'ACTION'} eq $Lang::tr{'edit'})
-{
-       open( FILE, "< $configfile" ) or die "Unable to read $configfile";
-       @configs = <FILE>;
-       close FILE;
-       open( FILE, "> $configfile" ) or die "Unable to write $configfile";
-       foreach $configentry (sort @configs)
-       {
-               @configline = split( /\;/, $configentry );
-               
-               $configline[10] =  "on" if not exists $configline[11];
-               $configline[11] =  "on" if not exists $configline[11];
-               $configline[12] =  "on" if not exists $configline[12];
-               $configline[13] =  "on" if not exists $configline[13];
-               $configline[14] =  "on" if not exists $configline[14];
-               $configline[15] =  "on" if not exists $configline[15];
-               $configline[16] =  "on" if not exists $configline[16];
-               $configline[17] =  "00:00" if not exists $configline[17];
-               $configline[18] =  "00:00" if not exists $configline[18];
-
-               unless  (($configline[0] eq $outfwsettings{'STATE'}) && 
-                       ($configline[1] eq $outfwsettings{'ENABLED'}) && 
-                       ($configline[2] eq $outfwsettings{'SNET'}) && 
-                       ($configline[3] eq $outfwsettings{'PROT'}) && 
-                       ($configline[4] eq $outfwsettings{'NAME'}) && 
-                       ($configline[5] eq $outfwsettings{'SIP'}) && 
-                       ($configline[6] eq $outfwsettings{'SMAC'}) && 
-                       ($configline[7] eq $outfwsettings{'DIP'}) &&
-                       ($configline[9] eq $outfwsettings{'LOG'}) &&       
-                       ($configline[8] eq $outfwsettings{'DPORT'}) &&
-                       ($configline[10] eq $outfwsettings{'TIME_MON'}) &&       
-                       ($configline[11] eq $outfwsettings{'TIME_TUE'}) &&       
-                       ($configline[12] eq $outfwsettings{'TIME_WED'}) &&       
-                       ($configline[13] eq $outfwsettings{'TIME_THU'}) &&       
-                       ($configline[14] eq $outfwsettings{'TIME_FRI'}) &&       
-                       ($configline[15] eq $outfwsettings{'TIME_SAT'}) &&       
-                       ($configline[16] eq $outfwsettings{'TIME_SUN'}) &&       
-                       ($configline[17] eq $outfwsettings{'TIME_FROM'}) &&       
-                       ($configline[18] eq $outfwsettings{'TIME_TO'}))
-               {
-                       print FILE $configentry;
-               }
-       }
-       close FILE;
-       $selected{'SNET'}{"$outfwsettings{'SNET'}"} = 'selected';
-       $selected{'PROT'}{"$outfwsettings{'PROT'}"} = 'selected';
-       $selected{'LOG'}{"$outfwsettings{'LOG'}"} = 'selected';
-       &addrule();
-       &Header::closebigbox();
-       &Header::closepage();
-       exit
-  system("/usr/local/bin/outgoingfwctrl");     
-}
-if ($outfwsettings{'ACTION'} eq $Lang::tr{'delete'})
-{
-       open( FILE, "< $configfile" ) or die "Unable to read $configfile";
-       @configs = <FILE>;
-       close FILE;
-       open( FILE, "> $configfile" ) or die "Unable to write $configfile";
-       foreach $configentry (sort @configs)
-       {
-               @configline = split( /\;/, $configentry );
-               
-               $configline[10] =  "on" if not exists $configline[11];
-               $configline[11] =  "on" if not exists $configline[11];
-               $configline[12] =  "on" if not exists $configline[12];
-               $configline[13] =  "on" if not exists $configline[13];
-               $configline[14] =  "on" if not exists $configline[14];
-               $configline[15] =  "on" if not exists $configline[15];
-               $configline[16] =  "on" if not exists $configline[16];
-               $configline[17] =  "00:00" if not exists $configline[17];
-               $configline[18] =  "00:00" if not exists $configline[18];
-                               
-               unless  (($configline[0] eq $outfwsettings{'STATE'}) && 
-                       ($configline[1] eq $outfwsettings{'ENABLED'}) && 
-                       ($configline[2] eq $outfwsettings{'SNET'}) && 
-                       ($configline[3] eq $outfwsettings{'PROT'}) && 
-                       ($configline[4] eq $outfwsettings{'NAME'}) && 
-                       ($configline[5] eq $outfwsettings{'SIP'}) && 
-                       ($configline[6] eq $outfwsettings{'SMAC'}) && 
-                       ($configline[7] eq $outfwsettings{'DIP'}) && 
-                       ($configline[9] eq $outfwsettings{'LOG'}) &&
-                       ($configline[8] eq $outfwsettings{'DPORT'}) &&
-                       ($configline[10] eq $outfwsettings{'TIME_MON'}) &&       
-                       ($configline[11] eq $outfwsettings{'TIME_TUE'}) &&       
-                       ($configline[12] eq $outfwsettings{'TIME_WED'}) &&       
-                       ($configline[13] eq $outfwsettings{'TIME_THU'}) &&       
-                       ($configline[14] eq $outfwsettings{'TIME_FRI'}) &&       
-                       ($configline[15] eq $outfwsettings{'TIME_SAT'}) &&       
-                       ($configline[16] eq $outfwsettings{'TIME_SUN'}) &&       
-                       ($configline[17] eq $outfwsettings{'TIME_FROM'}) &&       
-                       ($configline[18] eq $outfwsettings{'TIME_TO'}))
-               {
-                       print FILE $configentry;
-               }
-       }
-       close FILE;
-       system("/usr/local/bin/outgoingfwctrl");
-}
-if ($outfwsettings{'ACTION'} eq $Lang::tr{'add'})
-{
-       if ( $outfwsettings{'VALID'} eq 'yes' ) {
-
-               if ( $outfwsettings{'SNET'} eq "all" ) {
-                       $outfwsettings{'SIP'} ="";
-                       $outfwsettings{'SMAC'}="";
-               }
-               open( FILE, ">> $configfile" ) or die "Unable to write $configfile";
-               print FILE <<END
-$outfwsettings{'STATE'};$outfwsettings{'ENABLED'};$outfwsettings{'SNET'};$outfwsettings{'PROT'};$outfwsettings{'NAME'};$outfwsettings{'SIP'};$outfwsettings{'SMAC'};$outfwsettings{'DIP'};$outfwsettings{'DPORT'};$outfwsettings{'LOG'};$outfwsettings{'TIME_MON'};$outfwsettings{'TIME_TUE'};$outfwsettings{'TIME_WED'};$outfwsettings{'TIME_THU'};$outfwsettings{'TIME_FRI'};$outfwsettings{'TIME_SAT'};$outfwsettings{'TIME_SUN'};$outfwsettings{'TIME_FROM'};$outfwsettings{'TIME_TO'};
-END
-;
-               close FILE;
-               system("/usr/local/bin/outgoingfwctrl");
-       } else {
-               $outfwsettings{'ACTION'} = 'Add rule';
-       }
-}
-if ($outfwsettings{'ACTION'} eq $Lang::tr{'Add Rule'})
-{
-       &addrule();
-       exit
-}
-
-&General::readhash("${General::swroot}/outgoing/settings", \%outfwsettings);
-
-if ($errormessage) {
-       &Header::openbox('100%', 'left', $Lang::tr{'error messages'});
-       print "<class name='base'>$errormessage\n";
-       print "&nbsp;</class>\n";
-       &Header::closebox();
-}
-
-############################################################################################################################
-############################################################################################################################
-
-if ($outfwsettings{'POLICY'} ne 'MODE0'){
-       &Header::openbox('100%', 'center', 'Rules');
-               print <<END
-       <form method='post' action='$ENV{'SCRIPT_NAME'}'>
-               <input type='submit' name='ACTION' value='$Lang::tr{'Add Rule'}' />
-       </form>
-END
-;
-       open( FILE, "< $configfile" ) or die "Unable to read $configfile";
-       @configs = <FILE>;
-       close FILE;
-       if (@configs) {
-               print <<END
-               <hr />
-               <table border='0' width='100%' cellspacing='0'>
-               <tr bgcolor='$color{'color22'}'>
-                   <td width='14%' align='center'><b>$Lang::tr{'protocol'}</b></td>
-                   <td width='14%' align='center'><b>$Lang::tr{'network'}</b></td>
-                   <td width='14%' align='center'><b>$Lang::tr{'destination'}</b></td>
-                   <td width='14%' align='center'><b>$Lang::tr{'description'}</b></td>
-                   <td width='14%' align='center'><b>$Lang::tr{'policy'}</b></td>
-                   <td width='16%' align='center'><b>$Lang::tr{'logging'}</b></td>
-                   <td width='14%' align='center'><b>$Lang::tr{'action'}</b></td>
-END
-;
-               foreach $configentry (sort @configs)
-                       {
-                               @configline = split( /\;/, $configentry );
-                               $outfwsettings{'STATE'} = $configline[0];
-                               $outfwsettings{'ENABLED'} = $configline[1];
-                               $outfwsettings{'SNET'} = $configline[2];
-                               $outfwsettings{'PROT'} = $configline[3];
-                               $outfwsettings{'NAME'} = $configline[4];
-                               $outfwsettings{'SIP'} = $configline[5];
-                               $outfwsettings{'SMAC'} = $configline[6];
-                               $outfwsettings{'DIP'} = $configline[7];
-                               $outfwsettings{'DPORT'} = $configline[8];
-                               $outfwsettings{'LOG'} = $configline[9];
-                               
-                               $configline[10] =  "on" if not exists $configline[11];
-                               $configline[11] =  "on" if not exists $configline[11];
-                               $configline[12] =  "on" if not exists $configline[12];
-                               $configline[13] =  "on" if not exists $configline[13];
-                               $configline[14] =  "on" if not exists $configline[14];
-                               $configline[15] =  "on" if not exists $configline[15];
-                               $configline[16] =  "on" if not exists $configline[16];
-                               $configline[17] =  "00:00" if not exists $configline[17];
-                               $configline[18] =  "00:00" if not exists $configline[18];
-                               
-                               $outfwsettings{'TIME_MON'} =  $configline[10];
-                               $outfwsettings{'TIME_TUE'} =  $configline[11];
-                               $outfwsettings{'TIME_WED'} =  $configline[12];
-                               $outfwsettings{'TIME_THU'} =  $configline[13];
-                               $outfwsettings{'TIME_FRI'} =  $configline[14];
-                               $outfwsettings{'TIME_SAT'} =  $configline[15];
-                               $outfwsettings{'TIME_SUN'} =  $configline[16];
-                               $outfwsettings{'TIME_FROM'} =  $configline[17];
-                               $outfwsettings{'TIME_TO'} =  $configline[18];
-
-                               if ($outfwsettings{'DIP'} eq ''){ $outfwsettings{'DISPLAY_DIP'} = 'ALL'; } else { $outfwsettings{'DISPLAY_DIP'} = $outfwsettings{'DIP'}; }
-                               if ($outfwsettings{'DPORT'} eq ''){ $outfwsettings{'DISPLAY_DPORT'} = 'ALL'; } else { $outfwsettings{'DISPLAY_DPORT'} = $outfwsettings{'DPORT'}; }
-                               if ($outfwsettings{'STATE'} eq 'DENY'){ $outfwsettings{'DISPLAY_STATE'} = "<img src='/images/stock_stop.png' alt='DENY' />"; }
-                               if ($outfwsettings{'STATE'} eq 'ALLOW'){ $outfwsettings{'DISPLAY_STATE'} = "<img src='/images/stock_ok.png' alt='ALLOW' />"; }
-                               if ((($outfwsettings{'POLICY'} eq 'MODE1') && ($outfwsettings{'STATE'} eq 'ALLOW')) || (($outfwsettings{'POLICY'} eq 'MODE2') && ($outfwsettings{'STATE'} eq 'DENY'))){
-                               if ( $outfwsettings{'ENABLED'} eq "on" ){
-                                       print "<tr bgcolor='$color{'color20'}'>";
-                               } else {
-                                       print "<tr bgcolor='$color{'color18'}'>";
-                               }
-                                       print <<END
-                                           <td align='center'>$outfwsettings{'PROT'}
-                                           <td align='center'>$outfwsettings{'SNET'}
-                                           <td align='center'>$outfwsettings{'DISPLAY_DIP'}:$outfwsettings{'DISPLAY_DPORT'}
-                                           <td align='center'>$outfwsettings{'NAME'}
-                                           <td align='center'>$outfwsettings{'DISPLAY_STATE'}
-                                           <td align='center'>$outfwsettings{'LOG'}
-                                           <td align='center'>
-                                            <table border='0' cellpadding='0' cellspacing='0'><tr>
-                                               <td><form method='post' action='$ENV{'SCRIPT_NAME'}'>
-                                                       <input type='hidden' name='PROT' value='$outfwsettings{'PROT'}' />
-                                                       <input type='hidden' name='STATE' value='$outfwsettings{'STATE'}' />
-                                                       <input type='hidden' name='SNET' value='$outfwsettings{'SNET'}' />
-                                                       <input type='hidden' name='DPORT' value='$outfwsettings{'DPORT'}' />
-                                                       <input type='hidden' name='DIP' value='$outfwsettings{'DIP'}' />
-                                                       <input type='hidden' name='SIP' value='$outfwsettings{'SIP'}' />
-                                                       <input type='hidden' name='NAME' value='$outfwsettings{'NAME'}' />
-                                                       <input type='hidden' name='SMAC' value='$outfwsettings{'SMAC'}' />
-                                                       <input type='hidden' name='ENABLED' value='$outfwsettings{'ENABLED'}' />
-                                                       <input type='hidden' name='LOG' value='$outfwsettings{'LOG'}' />
-                                                       <input type='hidden' name='TIME_MON' value='$outfwsettings{'TIME_MON'}' />
-                                                       <input type='hidden' name='TIME_TUE' value='$outfwsettings{'TIME_TUE'}' />
-                                                       <input type='hidden' name='TIME_WED' value='$outfwsettings{'TIME_WED'}' />
-                                                       <input type='hidden' name='TIME_THU' value='$outfwsettings{'TIME_THU'}' />
-                                                       <input type='hidden' name='TIME_FRI' value='$outfwsettings{'TIME_FRI'}' />
-                                                       <input type='hidden' name='TIME_SAT' value='$outfwsettings{'TIME_SAT'}' />
-                                                       <input type='hidden' name='TIME_SUN' value='$outfwsettings{'TIME_SUN'}' />
-                                                       <input type='hidden' name='TIME_FROM' value='$outfwsettings{'TIME_FROM'}' />
-                                                       <input type='hidden' name='TIME_TO' value='$outfwsettings{'TIME_TO'}' />
-                                                       <input type='hidden' name='ACTION' value=$Lang::tr{'edit'} />
-                                                       <input type='image' src='/images/edit.gif' width="20" height="20" alt=$Lang::tr{'edit'} />
-                                               </form>
-                                               <td><form method='post' action='$ENV{'SCRIPT_NAME'}'>
-                                                       <input type='hidden' name='PROT' value='$outfwsettings{'PROT'}' />
-                                                       <input type='hidden' name='STATE' value='$outfwsettings{'STATE'}' />
-                                                       <input type='hidden' name='SNET' value='$outfwsettings{'SNET'}' />
-                                                       <input type='hidden' name='DPORT' value='$outfwsettings{'DPORT'}' />
-                                                       <input type='hidden' name='DIP' value='$outfwsettings{'DIP'}' />
-                                                       <input type='hidden' name='SIP' value='$outfwsettings{'SIP'}' />
-                                                       <input type='hidden' name='NAME' value='$outfwsettings{'NAME'}' />
-                                                       <input type='hidden' name='SMAC' value='$outfwsettings{'SMAC'}' />
-                                                       <input type='hidden' name='ENABLED' value='$outfwsettings{'ENABLED'}' />
-                                                       <input type='hidden' name='LOG' value='$outfwsettings{'LOG'}' />
-                                                       <input type='hidden' name='TIME_MON' value='$outfwsettings{'TIME_MON'}' />
-                                                       <input type='hidden' name='TIME_TUE' value='$outfwsettings{'TIME_TUE'}' />
-                                                       <input type='hidden' name='TIME_WED' value='$outfwsettings{'TIME_WED'}' />
-                                                       <input type='hidden' name='TIME_THU' value='$outfwsettings{'TIME_THU'}' />
-                                                       <input type='hidden' name='TIME_FRI' value='$outfwsettings{'TIME_FRI'}' />
-                                                       <input type='hidden' name='TIME_SAT' value='$outfwsettings{'TIME_SAT'}' />
-                                                       <input type='hidden' name='TIME_SUN' value='$outfwsettings{'TIME_SUN'}' />
-                                                       <input type='hidden' name='TIME_FROM' value='$outfwsettings{'TIME_FROM'}' />
-                                                       <input type='hidden' name='TIME_TO' value='$outfwsettings{'TIME_TO'}' />
-                                                       <input type='hidden' name='ACTION' value=$Lang::tr{'delete'} />
-                                                       <input type='image' src='/images/delete.gif' width="20" height="20" alt=$Lang::tr{'delete'} />
-                                               </form></table>
-END
-;
-                                       if (($outfwsettings{'SIP'}) || ($outfwsettings{'SMAC'})) {
-
-                                               unless ($outfwsettings{'SIP'}) {
-                                                       $outfwsettings{'DISPLAY_SIP'} = 'ALL';
-                                               } else {
-                                                       $outfwsettings{'DISPLAY_SIP'} = $outfwsettings{'SIP'};
-                                               }
-
-                                               unless ($outfwsettings{'SMAC'}) {
-                                                       $outfwsettings{'DISPLAY_SMAC'} = 'ALL';
-                                                       print "<tr><td /><td align='left'>$Lang::tr{'source ip or net'}: </td>";
-                                                       print "<td align='left' colspan='2'>$outfwsettings{'DISPLAY_SIP'}</td>";
-                                               } else {
-                                                       $outfwsettings{'DISPLAY_SMAC'} = $outfwsettings{'SMAC'};
-                                                       print "<tr><td /><td align='left'>$Lang::tr{'source'} $Lang::tr{'mac address'}: </td>";
-                                                       print "<td align='left' colspan='2'>$outfwsettings{'DISPLAY_SMAC'}</td>";
-                                               }
-                                       }
-                                               print <<END
-                                               <tr><td width='14%' align='right'>$Lang::tr{'time'} -  </td>
-                                                   <td width='14%' align='left'>
-END
-;
-                                                       if ($outfwsettings{'TIME_MON'} eq 'on') { print "<font color='$Header::colourgreen'>";}
-                                                       else { print "<font color='$Header::colourred'>";}
-                                                               print "$Lang::tr{'advproxy monday'}</font>,"; 
-                                                       if ($outfwsettings{'TIME_TUE'} eq 'on') { print "<font color='$Header::colourgreen'>";}
-                                                       else { print "<font color='$Header::colourred'>";}
-                                                               print "$Lang::tr{'advproxy tuesday'}</font>,"; 
-                                                       if ($outfwsettings{'TIME_WED'} eq 'on') { print "<font color='$Header::colourgreen'>";}
-                                                       else { print "<font color='$Header::colourred'>";}
-                                                               print "$Lang::tr{'advproxy wednesday'}</font>,"; 
-                                                       if ($outfwsettings{'TIME_THU'} eq 'on') { print "<font color='$Header::colourgreen'>";}
-                                                       else { print "<font color='$Header::colourred'>";}
-                                                               print "$Lang::tr{'advproxy thursday'}</font>,"; 
-                                                       if ($outfwsettings{'TIME_FRI'} eq 'on') { print "<font color='$Header::colourgreen'>";}
-                                                       else { print "<font color='$Header::colourred'>";}
-                                                               print "$Lang::tr{'advproxy friday'}</font>,"; 
-                                                       if ($outfwsettings{'TIME_SAT'} eq 'on') { print "<font color='$Header::colourgreen'>";}
-                                                       else { print "<font color='$Header::colourred'>";}
-                                                               print "$Lang::tr{'advproxy saturday'}</font>,"; 
-                                                       if ($outfwsettings{'TIME_SUN'} eq 'on') { print "<font color='$Header::colourgreen'>";}
-                                                       else { print "<font color='$Header::colourred'>";}
-                                                               print "$Lang::tr{'advproxy sunday'}</font>";            
-                                                       print <<END
-                                                       </td>
-                                                   <td width='22%' align='center'>$Lang::tr{'advproxy from'} $outfwsettings{'TIME_FROM'}</td>
-                                                       <td width='22%' align='center'>$Lang::tr{'advproxy to'} $outfwsettings{'TIME_TO'}</td>
-                                       </form>
-END
-;
-                               }
-                       }
-if ($outfwsettings{'POLICY'} eq 'MODE1'){
-print <<END
-                                       <tr bgcolor='$color{'color20'}'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
-                                           <td align='center'>all
-                                           <td align='center'>all
-                                           <td align='center'>ALL
-                                           <td align='center'>drop
-                                           <td align='center'><img src='/images/stock_stop.png' alt='DENY' />
-                                           <td align='center'>on <input type='radio' name='MODE1LOG' value='on' $checked{'MODE1LOG'}{'on'} /><input type='radio' name='MODE1LOG' value='off' $checked{'MODE1LOG'}{'off'} /> off
-                                           <td align='center'><input type='hidden' name='ACTION' value=$Lang::tr{'save'} /><input type='image' src='/images/media-floppy.png' width="18" height="18" alt=$Lang::tr{'save'} /></form></tr>
-                                            <table border='0' cellpadding='0' cellspacing='0'><tr>
-                                               <td>
-                                               <td></table>
-END
-;
-}
-               print <<END
-               </table>
-END
-;
-
-       }
-       &Header::closebox();
-}
-
-if ($outfwsettings{'POLICY'} ne 'MODE0'){
-       open( FILE, "< $p2pfile" ) or die "Unable to read $p2pfile";
-       @p2ps = <FILE>;
-       close FILE;
-       &Header::openbox('100%', 'center', 'P2P-Block');
-       print <<END
-       <table width='40%'>
-               <tr bgcolor='$color{'color22'}'><td width='66%' align=center><b>$Lang::tr{'protocol'}</b>
-                   <td width='33%' align=center><b>$Lang::tr{'status'}</b>
-END
-;
-       my $id = 1;
-       foreach $p2pentry (sort @p2ps)
-       {
-               @p2pline = split( /\;/, $p2pentry );
-               print <<END
-                       <form method='post' action='$ENV{'SCRIPT_NAME'}'>
-END
-;
-                       print "\t\t\t<tr bgcolor='$color{'color20'}'>\n"; 
-               print <<END
-                       <td width='66%' align='center'>$p2pline[0]:     
-                       <td width='33%' align='center'><input type='hidden' name='P2PROT' value='$p2pline[1]' />
-END
-;
-               if ($p2pline[2] eq 'on') {
-                       print <<END
-                               <input type='hidden' name='ACTION' value='disable' />
-                               <input type='image' name='submit' src='/images/stock_ok.png' alt='$Lang::tr{'outgoing firewall p2p allow'}' title='$Lang::tr{'outgoing firewall p2p allow'}'/>
-END
-;
-               } else {
-                       print <<END
-                               <input type='hidden' name='ACTION' value='enable' />
-                               <input type='image' name='submit' src='/images/stock_stop.png' alt='$Lang::tr{'outgoing firewall p2p deny'}' title='$Lang::tr{'outgoing firewall p2p deny'}' />
-END
-;
-               }
-               print <<END
-                       </form>
-END
-;
-       }
-       print <<END
-       </table>
-  <br />$Lang::tr{'outgoing firewall p2p description 1'} <img src='/images/stock_ok.png' align='absmiddle' alt='$Lang::tr{'outgoing firewall p2p deny'}'> $Lang::tr{'outgoing firewall p2p description 2'} <img src='/images/stock_stop.png' align='absmiddle' alt='$Lang::tr{'outgoing firewall p2p deny'}'> $Lang::tr{'outgoing firewall p2p description 3'}
-END
-;
-       &Header::closebox();
-}
-
-&Header::openbox('100%', 'center', 'Policy');
-print <<END
-       <form method='post' action='$ENV{'SCRIPT_NAME'}'>
-       <table width='100%'>
-               <tr><td width='10%' align='left'><b>$Lang::tr{'mode'} 0:</b><td width='90%' align='left' colspan='2'>$Lang::tr{'outgoing firewall mode0'}</td></tr>
-               <tr><td width='10%' align='left'><b>$Lang::tr{'mode'} 1:</b><td width='90%' align='left' colspan='2'>$Lang::tr{'outgoing firewall mode1'}</td></tr>
-               <tr><td width='10%' align='left'><b>$Lang::tr{'mode'} 2:</b><td width='90%' align='left' colspan='2'>$Lang::tr{'outgoing firewall mode2'}</td></tr>
-               <tr><td colspan='3'><hr /></td></tr>
-               <tr><td width='10%' align='left'>       <select name='POLICY' style="width: 85px"><option value='MODE0' $selected{'POLICY'}{'MODE0'}>$Lang::tr{'mode'} 0</option><option value='MODE1' $selected{'POLICY'}{'MODE1'}>$Lang::tr{'mode'} 1</option><option value='MODE2' $selected{'POLICY'}{'MODE2'}>$Lang::tr{'mode'} 2</option></select>
-                   <td width='45%' align='left'><input type='submit' name='ACTION' value=$Lang::tr{'save'} />
-                   <td width='45%' align='left'>
-END
-;
-       if ($outfwsettings{'POLICY'} ne 'MODE0') {
-               print <<END
-                   $Lang::tr{'outgoing firewall reset'}: <input type='submit' name='ACTION' value=$Lang::tr{'reset'} />
-END
-;
-       }
-print <<END
-       </table>
-       </form>
-END
-;
-&Header::closebox();
-
-############################################################################################################################
-############################################################################################################################
-
-sub addrule
-{
-       &Header::openbox('100%', 'center', $Lang::tr{'Add Rule'});
-       if ($outfwsettings{'ENABLED'} eq 'on') { $selected{'ENABLED'} = 'checked'; }
-       $selected{'TIME_FROM'}{$outfwsettings{'TIME_FROM'}} = "selected='selected'";
-       $selected{'TIME_TO'}{$outfwsettings{'TIME_TO'}} = "selected='selected'";
-print <<END
-       <form method='post' action='$ENV{'SCRIPT_NAME'}'>
-       <table width='80%'>
-               <tr>
-                       <td width='20%' align='right'>$Lang::tr{'description'}: <img src='/blob.gif' /></td>
-                       <td width='30%' align='left'><input type='text' name='NAME' maxlength='30' value='$outfwsettings{'NAME'}' /></td>
-                       <td width='20%' align='right' colspan='2'>$Lang::tr{'active'}:</td>
-                       <td width='30%' align='left' colspan='2'><input type='checkbox' name='ENABLED' $selected{'ENABLED'} /></td>
-               </tr>
-               <tr>
-                       <td width='20%' align='right'>$Lang::tr{'protocol'}</td>
-                       <td width='30%' align='left'>
-                               <select name='PROT'>
-                                       <option value='all' $selected{'PROT'}{'all'}>All</option>
-                                       <option value='tcp' $selected{'PROT'}{'tcp'}>TCP</option>
-                                       <option value='udp' $selected{'PROT'}{'udp'}>UDP</option>
-                                       <option value='gre' $selected{'PROT'}{'gre'}>GRE</option>
-                                       <option value='esp' $selected{'PROT'}{'esp'}>ESP</option>
-                               </select>
-                       </td>
-                       <td width='20%' align='right' colspan='2'>$Lang::tr{'policy'}:</td>
-                       <td width='30%' align='left' colspan='2'>
-END
-;
-       if ($outfwsettings{'POLICY'} eq 'MODE1'){
-               print "\t\t\t\tALLOW<input type='hidden' name='STATE' value='ALLOW' />\n";
-       } elsif ($outfwsettings{'POLICY'} eq 'MODE2'){
-               print "\t\t\t\tDENY<input type='hidden' name='STATE' value='DENY' />\n";
-       }
-       print <<END
-                       </td>
-               </tr>
-               <tr>
-                       <td width='20%' align='right'>$Lang::tr{'source'}:</td>
-                       <td width='30%' align='left'>
-                               <select name='SNET'>
-                                       <optgroup label='---'>
-                                               <option value='all' $selected{'SNET'}{'ALL'}>$Lang::tr{'all'}</option>
-                                       <optgroup label='$Lang::tr{'mac address'}'>
-                                               <option value='mac' $selected{'SNET'}{'mac'}>$Lang::tr{'source'} $Lang::tr{'mac address'}</option>
-                                       </optgroup>
-                                       <optgroup label='$Lang::tr{'ip address'}'>
-                                               <option value='ip' $selected{'SNET'}{'ip'}>$Lang::tr{'source ip or net'}</option>
-                                               <option value='red' $selected{'SNET'}{'red'}>$Lang::tr{'red'} IP</option>
-                                       </optgroup>
-                                       <optgroup label='$Lang::tr{'alt vpn'}'>
-                                               <option value='ovpn' $selected{'SNET'}{'ovpn'}>OpenVPN $Lang::tr{'interface'}</option>
-                                       </optgroup>
-                                       <optgroup label='$Lang::tr{'network'}'>
-                                               <option value='green' $selected{'SNET'}{'green'}>$Lang::tr{'green'}</option>
-END
-;
-       if (&Header::blue_used()){
-               print "\t\t\t\t\t<option value='blue' $selected{'SNET'}{'blue'}>$Lang::tr{'wireless'}</option>\n";
-       }
-       if (&Header::orange_used()){
-               print "\t\t\t\t\t<option value='orange' $selected{'SNET'}{'orange'}>$Lang::tr{'dmz'}</option>\n";
-       }
-       print <<END
-                                       </optgroup>
-                                       <optgroup label='IP $Lang::tr{'advproxy NCSA group'}'>
-END
-;
-       my @ipgroups = qx(ls $configpath/ipgroups/);
-       foreach (sort @ipgroups){
-               chomp($_);
-               print "\t\t\t\t\t<option value='$_' $selected{'SNET'}{$_}>$_</option>\n";
-       }
-       print <<END
-                                       </optgroup>
-                                       <optgroup label='MAC $Lang::tr{'advproxy NCSA group'}'>
-END
-;
-       my @macgroups = qx(ls $configpath/macgroups/);
-       foreach (sort @macgroups){
-               chomp($_);
-               print "\t\t\t\t\t<option value='$_' $selected{'SNET'}{$_}>$_</option>\n";
-       }
-       print <<END
-                                       </optgroup>
-                               </select>
-                       </td>
-                       <td align='right' colspan='4'><font color='red'>$Lang::tr{'outgoing firewall warning'}</font></td>
-               </tr>
-               <tr>
-                       <td align='right' colspan='4' >$Lang::tr{'source ip or net'}<img src='/blob.gif' /></td>
-                       <td align='left' colspan='4' ><input type='text' name='SIP' value='$outfwsettings{'SIP'}' /></td>
-               </tr>
-               <tr>
-                       <td align='right' colspan='4' >$Lang::tr{'source'} $Lang::tr{'mac address'}: <img src='/blob.gif' />
-                       <td align='left' colspan='4' ><input type='text' name='SMAC' maxlength='23' value='$outfwsettings{'SMAC'}' />
-               </tr>
-               <tr>
-                       <td width='20%' align='right'>$Lang::tr{'logging'}:</td>
-                       <td width='30%' align='left'>
-                               <select name='LOG'>
-                                       <option value='$Lang::tr{'active'}' $selected{'LOG'}{$Lang::tr{'active'}}>$Lang::tr{'active'}</option>
-                                       <option value='$Lang::tr{'inactive'}' $selected{'LOG'}{$Lang::tr{'inactive'}}>$Lang::tr{'inactive'}</option>
-                               </select>
-                       </td>
-                       <td width='20%' align='right' colspan='2' />
-                       <td width='30%' align='left' colspan='2' />
-               <tr>
-                       <td width='20%' align='right'>$Lang::tr{'destination ip or net'}: <img src='/blob.gif' /></td>
-                       <td width='30%' align='left'><input type='text' name='DIP'  value='$outfwsettings{'DIP'}' /></td>
-                       <td width='20%' align='right' colspan='2'>$Lang::tr{'destination port'}(s) <img src='/blob.gif' /></td>
-                       <td width='30%' align='left' colspan='2'><input type='text' name='DPORT' value='$outfwsettings{'DPORT'}' /></td>
-               </tr>
-               <tr>
-                       <td width='20%' align='right'>$Lang::tr{'time'}:</td>
-                       <td width='30%' align='left'>$Lang::tr{'advproxy monday'} $Lang::tr{'advproxy tuesday'} $Lang::tr{'advproxy wednesday'} $Lang::tr{'advproxy thursday'} $Lang::tr{'advproxy friday'} $Lang::tr{'advproxy saturday'} $Lang::tr{'advproxy sunday'}</td>
-                       <td width='20%' align='right' colspan='2' />
-                       <td width='15%' align='left'>$Lang::tr{'advproxy from'}</td>
-                       <td width='15%' align='left'>$Lang::tr{'advproxy to'}</td>
-               </tr>
-               <tr>
-                       <td width='20%' align='right'></td>
-                       <td width='30%' align='left'>
-                               <input type='checkbox' name='TIME_MON' $checked{'TIME_MON'}{'on'} />
-                               <input type='checkbox' name='TIME_TUE' $checked{'TIME_TUE'}{'on'} />
-                               <input type='checkbox' name='TIME_WED' $checked{'TIME_WED'}{'on'} />
-                               <input type='checkbox' name='TIME_THU' $checked{'TIME_THU'}{'on'} />
-                               <input type='checkbox' name='TIME_FRI' $checked{'TIME_FRI'}{'on'} />
-                               <input type='checkbox' name='TIME_SAT' $checked{'TIME_SAT'}{'on'} />
-                               <input type='checkbox' name='TIME_SUN' $checked{'TIME_SUN'}{'on'} />
-                       </td>
-                       <td width='20%' align='right' colspan='2' />
-                       <td width='15%' align='left'>
-                               <select name='TIME_FROM'>
-END
-;
-for (my $i=0;$i<=23;$i++) {
-       $i = sprintf("%02s",$i);
-       for (my $j=0;$j<=45;$j+=15) {
-               $j = sprintf("%02s",$j);
-               my $time = $i.":".$j;
-               print "\t\t\t\t\t<option $selected{'TIME_FROM'}{$time}>$i:$j</option>\n";
-       }
-}
-print <<END    
-                               </select>
-                       </td>
-                       <td width='15%' align='left'><select name='TIME_TO'>
-END
-;
-for (my $i=0;$i<=23;$i++) {
-       $i = sprintf("%02s",$i);
-       for (my $j=0;$j<=45;$j+=15) {
-               $j = sprintf("%02s",$j);
-               my $time = $i.":".$j;
-               print "\t\t\t\t\t<option $selected{'TIME_TO'}{$time}>$i:$j</option>\n";
-       }
-}
-print <<END    
-                               </select>
-                       </td>
-               </tr>
-               <tr>
-                       <td colspan='6' />
-               <tr>
-               <tr>
-                       <td width='40%' align='right' colspan='2'><img src='/blob.gif' />$Lang::tr{'this field may be blank'}</td>
-                       <td width='60%' align='left' colspan='4'><input type='submit' name='ACTION' value=$Lang::tr{'add'} /></td>
-       </table></form>
-END
-;
-       &Header::closebox();
-
-if ($outfwsettings{'POLICY'} eq 'MODE1' || $outfwsettings{'POLICY'} eq 'MODE2')
-{
-&Header::openbox('100%', 'center', 'Quick Add');
-
-       open( FILE, "< /var/ipfire/outgoing/defaultservices" ) or die "Unable to read default services";
-       my @defservices = <FILE>;
-       close FILE;
-
-print "<table width='100%'><tr bgcolor='$color{'color20'}'><td><b>$Lang::tr{'service'}</b></td><td><b>$Lang::tr{'description'}</b></td><td><b>$Lang::tr{'port'}</b></td><td><b>$Lang::tr{'protocol'}</b></td><td><b>$Lang::tr{'source net'}</b></td><td><b>$Lang::tr{'logging'}</b></td><td><b>$Lang::tr{'action'}</b></td></tr>";
-foreach my $serviceline(@defservices)
-       {
-       my @service = split(/,/,$serviceline);
-       print <<END
-       <tr><form method='post' action='$ENV{'SCRIPT_NAME'}'>
-                                                                                               <td>$service[0]<input type='hidden' name='NAME' value='@service[0]' /></td>
-                                                                                               <td>$service[3]</td>
-                                                                                               <td><a href='http://isc.sans.org/port_details.php?port=$service[1]' target='top'>$service[1]</a><input type='hidden' name='DPORT' value='@service[1]' /></td>
-                                                                                               <td>$service[2]<input type='hidden' name='PROT' value='@service[2]' /></td>
-                                                                                               <td><select name='SNET'><option value='all' $selected{'SNET'}{'ALL'}>$Lang::tr{'all'}</option><option value='green' $selected{'SNET'}{'green'}>$Lang::tr{'green'}</option>
-END
-;
-       if (&Header::blue_used()){
-               print "<option value='blue' $selected{'SNET'}{'blue'}>$Lang::tr{'wireless'}</option>";
-       }
-       if (&Header::orange_used()){
-               print "<option value='orange' $selected{'SNET'}{'orange'}>$Lang::tr{'dmz'}</option>";
-       }
-       print <<END
-                                       </select></td>
-          <td><select name='LOG'><option value='$Lang::tr{'active'}'>$Lang::tr{'active'}</option><option value='$Lang::tr{'inactive'}' 'selected'>$Lang::tr{'inactive'}</option></select></td><td>
-                                       <input type='hidden' name='ACTION' value=$Lang::tr{'add'} />
-                                       <input type='image' alt='$Lang::tr{'add'}' src='/images/add.gif' />
-                                       <input type='hidden' name='ENABLED' value='on' />
-END
-;
-       if ($outfwsettings{'POLICY'} eq 'MODE1'){       print "<input type='hidden' name='STATE' value='ALLOW' /></form></td></tr>";}
-       elsif ($outfwsettings{'POLICY'} eq 'MODE2'){print "<input type='hidden' name='STATE' value='DENY' /></form></td></tr>";}
-       }
-       print "</table>";
-       &Header::closebox();
-  }
-}
-
-&Header::closebigbox();
-&Header::closepage();
index 73e610bfdfeaa82783403252cd8d4723dc602290..7eccf988ee4b4165df18ea15d8ff5dba7e847e15 100644 (file)
@@ -30,6 +30,7 @@ use File::Copy;
 use File::Temp qw/ tempfile tempdir /;
 use strict;
 use Archive::Zip qw(:ERROR_CODES :CONSTANTS);
+use Sort::Naturally;
 require '/var/ipfire/general-functions.pl';
 require "${General::swroot}/lang.pl";
 require "${General::swroot}/header.pl";
@@ -165,49 +166,29 @@ sub deletebackupcert
                unlink ("${General::swroot}/ovpn/certs/$hexvalue.pem");
        }
 }
-
 sub checkportfw {
-    my $KEY2 = $_[0]; # key2
-    my $SRC_PORT = $_[1]; # src_port
-    my $PROTOCOL = $_[2]; # protocol
-    my $SRC_IP = $_[3]; # sourceip
-
-    my $pfwfilename = "${General::swroot}/portfw/config";
-    open(FILE, $pfwfilename) or die 'Unable to open config file.';
-    my @pfwcurrent = <FILE>;
-    close(FILE);
-    my $pfwkey1 = 0; # used for finding last sequence number used 
-    foreach my $pfwline (@pfwcurrent)
-    {
-       my @pfwtemp = split(/\,/,$pfwline);
-
-       chomp ($pfwtemp[8]);
-       if ($KEY2 eq "0"){ # if key2 is 0 then it is a portfw addition
-               if ( $SRC_PORT eq $pfwtemp[3] &&
-                       $PROTOCOL eq $pfwtemp[2] &&
-                       $SRC_IP eq $pfwtemp[7])
-               {
-                        $errormessage = "$Lang::tr{'source port in use'} $SRC_PORT";
-               }
-               # Check if key2 = 0, if it is then it is a port forward entry and we want the sequence number
-               if ( $pfwtemp[1] eq "0") {
-                       $pfwkey1=$pfwtemp[0];
-               }
-               # Darren Critchley - Duplicate or overlapping Port range check
-               if ($pfwtemp[1] eq "0" && 
-                       $PROTOCOL eq $pfwtemp[2] &&
-                       $SRC_IP eq $pfwtemp[7] &&
-                       $errormessage eq '') 
-               {
-                       &portchecks($SRC_PORT, $pfwtemp[5]);            
-#                      &portchecks($pfwtemp[3], $pfwtemp[5]);
-#                      &portchecks($pfwtemp[3], $SRC_IP);
+       my $DPORT = shift;
+       my $DPROT = shift;
+       my %natconfig =();
+       my $confignat = "${General::swroot}/firewall/config";
+       $DPROT= uc ($DPROT);
+       &General::readhasharray($confignat, \%natconfig);
+       foreach my $key (sort keys %natconfig){
+               my @portarray = split (/\|/,$natconfig{$key}[30]);
+               foreach my $value (@portarray){
+                       if ($value =~ /:/i){
+                               my ($a,$b) = split (":",$value);
+                               if ($DPROT eq $natconfig{$key}[12] && $DPORT gt $a && $DPORT lt $b){
+                                       $errormessage= "$Lang::tr{'source port in use'} $DPORT";
+                               }
+                       }else{
+                               if ($DPROT eq $natconfig{$key}[12] && $DPORT eq $value){
+                                       $errormessage= "$Lang::tr{'source port in use'} $DPORT";
+                               }
+                       }
                }
        }
-    }
-#    $errormessage="$KEY2 $SRC_PORT $PROTOCOL $SRC_IP";
-
-    return;
+       return;
 }
 
 sub checkportoverlap
@@ -239,32 +220,6 @@ sub checkportinc
                return 0; 
        }
 }
-# Darren Critchley - Duplicate or overlapping Port range check
-sub portchecks
-{
-       my $p1 = $_[0]; # New port range
-       my $p2 = $_[1]; # existing port range
-#      $_ = $_[0];
-       our ($prtrange1, $prtrange2);
-       $prtrange1 = 0;
-#      if (m/:/ && $prtrange1 == 1) { # comparing two port ranges
-#              unless (&checkportoverlap($p1,$p2)) {
-#                      $errormessage = "$Lang::tr{'source port overlaps'} $p1";
-#              }
-#      }
-       if (m/:/ && $prtrange1 == 0 && $errormessage eq '') { # compare one port to a range
-               unless (&checkportinc($p2,$p1)) {
-                       $errormessage = "$Lang::tr{'srcprt within existing'} $p1";
-               }
-       }
-       $prtrange1 = 1;
-       if (! m/:/ && $prtrange1 == 1 && $errormessage eq '') { # compare one port to a range
-               unless (&checkportinc($p1,$p2)) {
-                       $errormessage = "$Lang::tr{'srcprt range overlaps'} $p2";
-               }
-       }
-       return;
-}
 
 # Darren Critchley - certain ports are reserved for IPFire 
 # TCP 67,68,81,222,445
@@ -1144,7 +1099,7 @@ if ($cgiparams{'ACTION'} eq $Lang::tr{'save'} && $cgiparams{'TYPE'} eq '' && $cg
     
     
     if ($cgiparams{'ENABLED'} eq 'on'){
-       &checkportfw(0,$cgiparams{'DDEST_PORT'},$cgiparams{'DPROTOCOL'},'0.0.0.0');
+       &checkportfw($cgiparams{'DDEST_PORT'},$cgiparams{'DPROTOCOL'});
     }
        
     if ($errormessage) { goto SETTINGS_ERROR; }
@@ -4895,11 +4850,10 @@ END
 </tr>
 END
        ;
-        my $id = 0;
-        my $gif;
-        foreach my $key (sort { uc($confighash{$a}[1]) cmp uc($confighash{$b}[1]) } keys %confighash) {
-       if ($confighash{$key}[0] eq 'on') { $gif = 'on.gif'; } else { $gif = 'off.gif'; }
-
+    my $id = 0;
+    my $gif;
+    foreach my $key (sort { ncmp ($confighash{$a}[1],$confighash{$b}[1]) } keys %confighash) {
+       if ($confighash{$key}[0] eq 'on') { $gif = 'on.gif'; } else { $gif = 'off.gif'; }
        if ($id % 2) {
            print "<tr bgcolor='$color{'color20'}'>\n";
        } else {
diff --git a/html/cgi-bin/p2p-block.cgi b/html/cgi-bin/p2p-block.cgi
new file mode 100755 (executable)
index 0000000..aab2d3d
--- /dev/null
@@ -0,0 +1,142 @@
+#!/usr/bin/perl
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2013                                                          #
+#                                                                             #
+# This program is free software: you can redistribute it and/or modify        #
+# it under the terms of the GNU General Public License as published by        #
+# the Free Software Foundation, either version 3 of the License, or           #
+# (at your option) any later version.                                         #
+#                                                                             #
+# This program is distributed in the hope that it will be useful,             #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
+# GNU General Public License for more details.                                #
+#                                                                             #
+# You should have received a copy of the GNU General Public License           #
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+# Author: Alexander Marx (Amarx@ipfire.org)                                   #
+###############################################################################
+
+use strict;
+no warnings 'uninitialized';
+# enable only the following on debugging purpose
+#use warnings;
+#use CGI::Carp 'fatalsToBrowser';
+
+require '/var/ipfire/general-functions.pl';
+require "${General::swroot}/lang.pl";
+require "${General::swroot}/header.pl";
+
+my $errormessage = '';
+my $p2pfile = "${General::swroot}/firewall/p2protocols";
+
+my @p2ps = ();
+my %fwdfwsettings = ();
+my %color = ();
+my %mainsettings = ();
+
+&General::readhash("${General::swroot}/main/settings", \%mainsettings);
+&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+
+&Header::showhttpheaders();
+&Header::getcgihash(\%fwdfwsettings);
+&Header::openpage($Lang::tr{'p2p block'}, 1, '');
+&Header::openbigbox('100%', 'center', $errormessage);
+
+if ($fwdfwsettings{'ACTION'} eq 'togglep2p') {
+       open( FILE, "<$p2pfile") or die "Unable to read $p2pfile";
+       @p2ps = <FILE>;
+       close FILE;
+       open( FILE, ">$p2pfile") or die "Unable to write $p2pfile";
+       foreach my $p2pentry (sort @p2ps) {
+               my @p2pline = split( /\;/, $p2pentry);
+               if ($p2pline[1] eq $fwdfwsettings{'P2PROT'}) {
+                       if ($p2pline[2] eq 'on') {
+                               $p2pline[2] = 'off';
+                       } else {
+                               $p2pline[2] = 'on';
+                       }
+               }
+               print FILE "$p2pline[0];$p2pline[1];$p2pline[2];\n";
+       }
+       close FILE;
+
+       &General::firewall_config_changed();
+       &p2pblock();
+} else {
+       &p2pblock();
+}
+
+sub p2pblock {
+       my $gif;
+
+       open(FILE, "<$p2pfile") or die "Unable to read $p2pfile";
+       @p2ps = <FILE>;
+       close FILE;
+
+       &Header::openbox('100%', 'center', $Lang::tr{'p2p block'});
+       print <<END;
+               <table width='35%' border='0'>
+                       <tr bgcolor='$color{'color22'}'>
+                               <td align=center colspan='2' >
+                                       <b>$Lang::tr{'protocol'}</b>
+                               </td>
+                               <td align='center'>
+                                       <b>$Lang::tr{'status'}</b>
+                               </td>
+                       </tr>
+END
+
+       foreach my $p2pentry (sort @p2ps) {
+               my @p2pline = split( /\;/, $p2pentry);
+               if ($p2pline[2] eq 'on') {
+                       $gif = "/images/on.gif"
+               } else {
+                       $gif = "/images/off.gif"
+               }
+
+               print <<END;
+                       <tr bgcolor='$color{'color20'}'>
+                               <td align='center' colspan='2'>
+                                       $p2pline[0]:
+                               </td>
+                               <td align='center'>
+                                       <form method='post' action='$ENV{'SCRIPT_NAME'}'>
+                                               <input type='hidden' name='P2PROT' value='$p2pline[1]'>
+                                               <input type='image' img src='$gif' alt='$Lang::tr{'click to disable'}' title='$Lang::tr{'fwdfw toggle'}' style='padding-top: 0px; padding-left: 0px; padding-bottom: 0px ;padding-right: 0px ;display: block;'>
+                                               <input type='hidden' name='ACTION' value='togglep2p'>
+                                       </form>
+                               </td>
+                       </tr>
+END
+       }
+
+       print <<END;
+                       <tr>
+                               <td>
+                                       <img src='/images/on.gif'>
+                               </td>
+                               <td>
+                                       $Lang::tr{'outgoing firewall p2p allow'}
+                               </td>
+                       </tr>
+                       <tr>
+                               <td>
+                                       <img src='/images/off.gif'>
+                               </td>
+                               <td>
+                                       $Lang::tr{'outgoing firewall p2p deny'}
+                               </td>
+                       </tr>
+               </table>
+END
+
+       &Header::closebox();
+}
+
+&Header::closebigbox();
+&Header::closepage();
diff --git a/html/cgi-bin/portfw.cgi b/html/cgi-bin/portfw.cgi
deleted file mode 100644 (file)
index 199682f..0000000
+++ /dev/null
@@ -1,1177 +0,0 @@
-#!/usr/bin/perl
-###############################################################################
-#                                                                             #
-# IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007  Michael Tremer & Christian Schmidt                      #
-#                                                                             #
-# This program is free software: you can redistribute it and/or modify        #
-# it under the terms of the GNU General Public License as published by        #
-# the Free Software Foundation, either version 3 of the License, or           #
-# (at your option) any later version.                                         #
-#                                                                             #
-# This program is distributed in the hope that it will be useful,             #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
-# GNU General Public License for more details.                                #
-#                                                                             #
-# You should have received a copy of the GNU General Public License           #
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
-#                                                                             #
-###############################################################################
-
-use strict;
-
-# enable only the following on debugging purpose
-#use warnings;
-#use CGI::Carp 'fatalsToBrowser';
-
-require '/var/ipfire/general-functions.pl';
-require "${General::swroot}/lang.pl";
-require "${General::swroot}/header.pl";
-
-#workaround to suppress a warning when a variable is used only once
-my @dummy = ( ${Header::colouryellow} );
-undef (@dummy);
-
-my %color = ();
-my %mainsettings = ();
-&General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
-
-my %cgiparams=();
-my %selected=();
-my %checked=();
-my $prtrange1=0;
-my $prtrange2=0;
-my $errormessage = '';
-my $filename = "${General::swroot}/portfw/config";
-my $aliasfile = "${General::swroot}/ethernet/aliases";
-
-&Header::showhttpheaders();
-
-$cgiparams{'ENABLED'} = 'off';
-$cgiparams{'KEY1'} = '0';
-$cgiparams{'KEY2'} = '0';
-$cgiparams{'PROTOCOL'} = '';
-$cgiparams{'SRC_PORT'} = '';
-$cgiparams{'DEST_IP'} = '';
-$cgiparams{'DEST_PORT'} = '';
-$cgiparams{'SRC_IP'} = '';
-$cgiparams{'ORIG_IP'} = '';
-$cgiparams{'REMARK'} = '';
-$cgiparams{'OVERRIDE'} = 'off';
-$cgiparams{'ACTION'} = '';
-
-&Header::getcgihash(\%cgiparams);
-
-my $disable_all = "0";
-my $enable_all = "0";
-
-if ($cgiparams{'ACTION'} eq $Lang::tr{'add'})
-{
-       &valaddupdate();
-       
-       # Darren Critchley - if there is an error, don't waste any more time processing
-       if ($errormessage) { goto ERROR; }
-       
-       open(FILE, $filename) or die 'Unable to open config file.';
-       my @current = <FILE>;
-       close(FILE);
-       my $key1 = 0; # used for finding last sequence number used 
-       foreach my $line (@current)
-       {
-               my @temp = split(/\,/,$line);
-
-               chomp ($temp[8]);
-               if ($cgiparams{'KEY2'} eq "0"){ # if key2 is 0 then it is a portfw addition
-                       if ( $cgiparams{'SRC_PORT'} eq $temp[3] &&
-                               $cgiparams{'PROTOCOL'} eq $temp[2] &&
-                               $cgiparams{'SRC_IP'} eq $temp[7])
-                       {
-                                $errormessage =  
-                                       "$Lang::tr{'source port in use'} $cgiparams{'SRC_PORT'}";
-                       }
-                       # Check if key2 = 0, if it is then it is a port forward entry and we want the sequence number
-                       if ( $temp[1] eq "0") {
-                               $key1=$temp[0];
-                       }
-                       # Darren Critchley - Duplicate or overlapping Port range check
-                       if ($temp[1] eq "0" && 
-                               $cgiparams{'PROTOCOL'} eq $temp[2] &&
-                               $cgiparams{'SRC_IP'} eq $temp[7] &&
-                               $errormessage eq '') 
-                       {
-                               &portchecks($temp[3], $temp[5]);
-                       }
-               } else {
-                       if ( $cgiparams{'KEY1'} eq $temp[0] &&
-                               $cgiparams{'ORIG_IP'} eq $temp[8])
-                       {
-                                $errormessage =  
-                                       "$Lang::tr{'source ip in use'} $cgiparams{'ORIG_IP'}";
-                       }
-               }
-       }
-
-ERROR:
-       unless ($errormessage)
-       {
-               # Darren Critchley - we only want to store ranges with Colons
-               $cgiparams{'SRC_PORT'} =~ tr/-/:/; 
-               $cgiparams{'DEST_PORT'} =~ tr/-/:/;
-
-               if ($cgiparams{'KEY1'} eq "0") { # 0 in KEY1 indicates it is a portfw add
-                       $key1++; # Add one to last sequence number
-                       open(FILE,">>$filename") or die 'Unable to open config file.';
-                       flock FILE, 2;
-                               if ($cgiparams{'ORIG_IP'} eq '0.0.0.0/0') {
-                                       # if the default/all is taken, then write it to the rule
-                                               print FILE "$key1,0,$cgiparams{'PROTOCOL'},$cgiparams{'SRC_PORT'},$cgiparams{'DEST_IP'},$cgiparams{'DEST_PORT'},$cgiparams{'ENABLED'},$cgiparams{'SRC_IP'},$cgiparams{'ORIG_IP'},$cgiparams{'REMARK'}\n";
-                       } else { # else create an extra record so it shows up 
-                                       print FILE "$key1,0,$cgiparams{'PROTOCOL'},$cgiparams{'SRC_PORT'},$cgiparams{'DEST_IP'},$cgiparams{'DEST_PORT'},$cgiparams{'ENABLED'},$cgiparams{'SRC_IP'},0,$cgiparams{'REMARK'}\n";
-                                               print FILE "$key1,1,$cgiparams{'PROTOCOL'},0,$cgiparams{'DEST_IP'},$cgiparams{'DEST_PORT'},$cgiparams{'ENABLED'},0,$cgiparams{'ORIG_IP'},$cgiparams{'REMARK'}\n";
-                                       }                       
-                       close(FILE);
-                       undef %cgiparams;
-                       &General::log($Lang::tr{'forwarding rule added'});
-                       system('/usr/local/bin/setportfw');
-               } else { # else key1 eq 0
-                       my $insertpoint = ($cgiparams{'KEY2'} - 1);
-                       open(FILE, ">$filename") or die 'Unable to open config file.';
-                       flock FILE, 2;
-                       foreach my $line (@current) {
-                               chomp($line);
-                               my @temp = split(/\,/,$line);
-                               if ($cgiparams{'KEY1'} eq $temp[0] && $insertpoint eq $temp[1]) {
-                                       if ($temp[1] eq "0") { # this is the first xtaccess rule, therefore modify the portfw rule
-                                               $temp[8] = '0';
-                                       }
-                                       print FILE "$temp[0],$temp[1],$temp[2],$temp[3],$temp[4],$temp[5],$temp[6],$temp[7],$temp[8],$temp[9]\n";
-                                       print FILE "$cgiparams{'KEY1'},$cgiparams{'KEY2'},$cgiparams{'PROTOCOL'},0,$cgiparams{'DEST_IP'},$cgiparams{'DEST_PORT'},$cgiparams{'ENABLED'},0,$cgiparams{'ORIG_IP'},$cgiparams{'REMARK'}\n";
-                               } else {
-                                       print FILE "$line\n";
-                               }
-                       }
-                       close(FILE);
-                       undef %cgiparams;
-                       &General::log($Lang::tr{'external access rule added'});
-                       system('/usr/local/bin/setportfw');
-               } # end if if KEY1 eq 0
-       } # end unless($errormessage)
-}
-
-if ($cgiparams{'ACTION'} eq $Lang::tr{'update'})
-{
-       &valaddupdate();
-       
-       # Darren Critchley - If there is an error don't waste any more processing time
-       if ($errormessage) { $cgiparams{'ACTION'} = $Lang::tr{'edit'}; goto UPD_ERROR; }
-
-       open(FILE, $filename) or die 'Unable to open config file.';
-       my @current = <FILE>;
-       close(FILE);
-       my $disabledpfw = '0';
-       my $lastpfw = '';
-       my $xtaccessdel = '0';
-       
-       foreach my $line (@current)
-       {
-               my @temp = split(/\,/,$line);
-               if ( $temp[1] eq "0" ) { # keep track of the last portfw and if it is enabled
-                       $disabledpfw = $temp[6];
-                       $lastpfw = $temp[0];
-               }               
-               chomp ($temp[8]);
-               if ( $cgiparams{'SRC_PORT'} eq $temp[3] &&
-                       $cgiparams{'PROTOCOL'} eq $temp[2] &&
-                       $cgiparams{'SRC_IP'} eq $temp[7])
-               {
-                        if ($cgiparams{'KEY1'} ne $temp[0] && $cgiparams{'KEY2'} eq "0")
-                        { 
-                        $errormessage =  
-                               "$Lang::tr{'source port in use'} $cgiparams{'SRC_PORT'}";
-                        }
-               }
-               if ($cgiparams{'ORIG_IP'} eq $temp[8]) 
-               {
-                        if ($cgiparams{'KEY1'} eq $temp[0] && $cgiparams{'KEY2'} ne $temp[1])
-                        # If we have the same source ip within a portfw group, then we have a problem!
-                        {
-                               $errormessage =  "$Lang::tr{'source ip in use'} $cgiparams{'ORIG_IP'}";
-                               $cgiparams{'ACTION'} = $Lang::tr{'edit'};
-                        }
-               }
-               
-               # Darren Critchley - Flag when a user disables an xtaccess
-               if ($cgiparams{'KEY1'} eq $temp[0] &&
-                               $cgiparams{'KEY2'} eq $temp[1] &&
-                               $cgiparams{'KEY2'} ne "0" && # if KEY2 is 0 then it is a portfw
-                               $cgiparams{'ENABLED'} eq "off" &&
-                               $temp[6] eq "on") { # we have determined that someone has turned an xtaccess off
-                       $xtaccessdel = "1";             
-               }
-               
-               # Darren Critchley - Portfw enabled, then enable xtaccess for all associated xtaccess records
-               if ($cgiparams{'ENABLED'} eq "on" && $cgiparams{'KEY2'} eq "0" && $cgiparams{'ENABLED'} ne $temp[6]) 
-               {
-                       $enable_all = "1";
-               } else {
-                       $enable_all = "0";
-               }
-               # Darren Critchley - Portfw disabled, then disable xtaccess for all associated xtaccess records
-               if ($cgiparams{'ENABLED'} eq "off" && $cgiparams{'KEY2'} eq "0") 
-               {
-                       $disable_all = "1";
-               } else {
-                       $disable_all = "0";
-               }
-
-               # Darren Critchley - if we are enabling an xtaccess, only allow if the associated Portfw is enabled
-               if ($cgiparams{'KEY1'} eq $lastpfw && $cgiparams{'KEY2'} ne "0") { # identifies an xtaccess record in the group
-                       if ($cgiparams{'ENABLED'} eq "on" && $cgiparams{'ENABLED'} ne $temp[6] ){ # a change has been made
-                               if ($disabledpfw eq "off")
-                               { 
-                                       $errormessage =  "$Lang::tr{'cant enable xtaccess'}";
-                                       $cgiparams{'ACTION'} = $Lang::tr{'edit'};
-                               }
-                       }
-               }
-               
-               # Darren Critchley - rule to stop someone from entering ALL into a external access rule, 
-               # the portfw is the only place that ALL can be specified
-               if ($cgiparams{'KEY2'} ne "0" && $cgiparams{'ORIG_IP'} eq "0.0.0.0/0") {
-                       $errormessage =  "$Lang::tr{'xtaccess all error'}";
-                       $cgiparams{'ACTION'} = $Lang::tr{'edit'};
-               }
-               
-               # Darren Critchley - Duplicate or overlapping Port range check
-               if ($temp[1] eq "0" &&
-                       $cgiparams{'KEY1'} ne $temp[0] && 
-                       $cgiparams{'PROTOCOL'} eq $temp[2] &&
-                       $cgiparams{'SRC_IP'} eq $temp[7] &&
-                       $errormessage eq '') 
-               {
-                               &portchecks($temp[3], $temp[5]);
-               } # end port testing
-               
-       }
-       
-       # Darren Critchley - if an xtaccess was disabled, now we need to check to see if it was the only xtaccess
-       if($xtaccessdel eq "1") {
-               my $xctr = 0;
-               foreach my $line (@current)
-               {
-                       my @temp = split(/\,/,$line);
-                       if($temp[0] eq $cgiparams{'KEY1'} &&
-                               $temp[6] eq "on") { # we only want to count the enabled xtaccess's
-                               $xctr++;
-                       }
-               }
-               if ($xctr == 2){
-                       $disable_all = "1";
-               }
-       }
-
-UPD_ERROR:
-       unless ($errormessage)
-       {
-               # Darren Critchley - we only want to store ranges with Colons
-               $cgiparams{'SRC_PORT'} =~ tr/-/:/; 
-               $cgiparams{'DEST_PORT'} =~ tr/-/:/;
-
-               open(FILE, ">$filename") or die 'Unable to open config file.';
-               flock FILE, 2;
-               foreach my $line (@current) {
-                       chomp($line);
-                       my @temp = split(/\,/,$line);
-                       if ($cgiparams{'KEY1'} eq $temp[0] && $cgiparams{'KEY2'} eq $temp[1]) {
-               print FILE "$cgiparams{'KEY1'},$cgiparams{'KEY2'},$cgiparams{'PROTOCOL'},$cgiparams{'SRC_PORT'},$cgiparams{'DEST_IP'},$cgiparams{'DEST_PORT'},$cgiparams{'ENABLED'},$cgiparams{'SRC_IP'},$cgiparams{'ORIG_IP'},$cgiparams{'REMARK'}\n";
-                       } else {
-                               # Darren Critchley - If it is a port forward record, then chances are good that a change was made to 
-                               # Destination Ip or Port, and we need to update all the associated external access records
-                               if ($cgiparams{'KEY2'} eq "0" && $cgiparams{'KEY1'} eq $temp[0]) {
-                                       $temp[4] = $cgiparams{'DEST_IP'};
-                                       $temp[5] = $cgiparams{'DEST_PORT'};
-                                       $temp[2] = $cgiparams{'PROTOCOL'};
-                               }
-                               
-                               # Darren Critchley - If a Portfw has been disabled, then set all associated xtaccess as disabled
-                               if ( $disable_all eq "1" && $cgiparams{'KEY1'} eq $temp[0] ) {
-                                       $temp[6] = 'off';
-                               }
-                               if ( $enable_all eq "1" && $cgiparams{'KEY1'} eq $temp[0] ) {
-                                       $temp[6] = 'on';
-                               }
-                               # Darren Critchley - Deal with the override to allow ALL
-                               if ( $cgiparams{'OVERRIDE'} eq "on" && $temp[1] ne "0" && $cgiparams{'KEY1'} eq $temp[0] ) {
-                                       $temp[6] = 'off';
-                               }
-                       print FILE "$temp[0],$temp[1],$temp[2],$temp[3],$temp[4],$temp[5],$temp[6],$temp[7],$temp[8],$temp[9]\n";
-                       }
-               }
-               close(FILE);
-               undef %cgiparams;
-               &General::log($Lang::tr{'forwarding rule updated'});
-               system('/usr/local/bin/setportfw');
-       } 
-       if ($errormessage) {
-       $cgiparams{'ACTION'} = $Lang::tr{'edit'};
-       }
-}
-
-# Darren Critchley - Allows rules to be enabled and disabled
-if ($cgiparams{'ACTION'} eq $Lang::tr{'toggle enable disable'})
-{
-       open(FILE, $filename) or die 'Unable to open config file.';
-       my @current = <FILE>;
-       close(FILE);
-       my $disabledpfw = '0';
-       my $lastpfw = '';
-       my $xtaccessdel = '0';
-       
-       foreach my $line (@current)
-       {
-               my @temp = split(/\,/,$line);
-               if ( $temp[1] eq "0" ) { # keep track of the last portfw and if it is enabled
-                       $disabledpfw = $temp[6];
-                       $lastpfw = $temp[0];
-               }               
-               # Darren Critchley - Flag when a user disables an xtaccess
-               if ($cgiparams{'KEY1'} eq $temp[0] &&
-                               $cgiparams{'KEY2'} eq $temp[1] &&
-                               $cgiparams{'KEY2'} ne "0" && # if KEY2 is 0 then it is a portfw
-                               $cgiparams{'ENABLED'} eq "off" &&
-                               $temp[6] eq "on") { # we have determined that someone has turned an xtaccess off
-                       $xtaccessdel = "1";             
-               }
-               
-               # Darren Critchley - Portfw enabled, then enable xtaccess for all associated xtaccess records
-               if ($cgiparams{'ENABLED'} eq "on" && $cgiparams{'KEY2'} eq "0" && $cgiparams{'ENABLED'} ne $temp[6]) 
-               {
-                       $enable_all = "1";
-               } else {
-                       $enable_all = "0";
-               }
-               # Darren Critchley - Portfw disabled, then disable xtaccess for all associated xtaccess records
-               if ($cgiparams{'ENABLED'} eq "off" && $cgiparams{'KEY2'} eq "0") 
-               {
-                       $disable_all = "1";
-               } else {
-                       $disable_all = "0";
-               }
-
-               # Darren Critchley - if we are enabling an xtaccess, only allow if the associated Portfw is enabled
-               if ($cgiparams{'KEY1'} eq $lastpfw && $cgiparams{'KEY2'} ne "0") { # identifies an xtaccess record in the group
-                       if ($cgiparams{'ENABLED'} eq "on" && $cgiparams{'ENABLED'} ne $temp[6] ){ # a change has been made
-                               if ($disabledpfw eq "off")
-                               { 
-                                       $errormessage =  "$Lang::tr{'cant enable xtaccess'}";
-                                       goto TOGGLEEXIT;
-                               }
-                       }
-               }
-       }
-       
-       # Darren Critchley - if an xtaccess was disabled, now we need to check to see if it was the only xtaccess
-       if($xtaccessdel eq "1") {
-               my $xctr = 0;
-               foreach my $line (@current)
-               {
-                       my @temp = split(/\,/,$line);
-                       if($temp[0] eq $cgiparams{'KEY1'} &&
-                               $temp[6] eq "on") { # we only want to count the enabled xtaccess's
-                               $xctr++;
-                       }
-               }
-               if ($xctr == 2){
-                       $disable_all = "1";
-               }
-       }
-
-       open(FILE, ">$filename") or die 'Unable to open config file.';
-       flock FILE, 2;
-       foreach my $line (@current) {
-               chomp($line);
-               my @temp = split(/\,/,$line);
-               if ($cgiparams{'KEY1'} eq $temp[0] && $cgiparams{'KEY2'} eq $temp[1]) {
-               print FILE "$cgiparams{'KEY1'},$cgiparams{'KEY2'},$temp[2],$temp[3],$temp[4],$temp[5],$cgiparams{'ENABLED'},$temp[7],$temp[8],$temp[9]\n";
-               } else {
-                       # Darren Critchley - If a Portfw has been disabled, then set all associated xtaccess as disabled
-                       if ( $disable_all eq "1" && $cgiparams{'KEY1'} eq $temp[0] ) {
-                               $temp[6] = 'off';
-                       }
-                       if ( $enable_all eq "1" && $cgiparams{'KEY1'} eq $temp[0] ) {
-                               $temp[6] = 'on';
-                       }
-               print FILE "$temp[0],$temp[1],$temp[2],$temp[3],$temp[4],$temp[5],$temp[6],$temp[7],$temp[8],$temp[9]\n";
-               }
-       }
-       close(FILE);
-       &General::log($Lang::tr{'forwarding rule updated'});
-       system('/usr/local/bin/setportfw');
-TOGGLEEXIT:
-       undef %cgiparams;
-} 
-
-
-# Darren Critchley - broke out Edit routine from the delete routine - Edit routine now just puts values in fields
-if ($cgiparams{'ACTION'} eq $Lang::tr{'edit'})
-{
-       open(FILE, "$filename") or die 'Unable to open config file.';
-       my @current = <FILE>;
-       close(FILE);
-
-       unless ($errormessage)
-       {
-               foreach my $line (@current)
-               {
-                       chomp($line);
-                       my @temp = split(/\,/,$line);
-                       if ($cgiparams{'KEY1'} eq $temp[0] && $cgiparams{'KEY2'} eq $temp[1] ) {
-                               $cgiparams{'PROTOCOL'} = $temp[2];
-                               $cgiparams{'SRC_PORT'} = $temp[3];
-                               $cgiparams{'DEST_IP'} = $temp[4];
-                               $cgiparams{'DEST_PORT'} = $temp[5];
-                               $cgiparams{'ENABLED'} = $temp[6];
-                               $cgiparams{'SRC_IP'} = $temp[7];
-                               $cgiparams{'ORIG_IP'} = $temp[8];
-                               $cgiparams{'REMARK'} = $temp[9];
-                       }
-                       
-               }
-       }
-}
-
-# Darren Critchley - broke out Remove routine as the logic is getting too complex to be combined with the Edit
-if ($cgiparams{'ACTION'} eq $Lang::tr{'remove'})
-{
-       open(FILE, "$filename") or die 'Unable to open config file.';
-       my @current = <FILE>;
-       close(FILE);
-       
-       # If the record being deleted is an xtaccess record, and it is the only one for a portfw record
-       # then we need to adjust the portfw record to be open to ALL ip addressess or an error will occur
-       # in setportfw.c
-       my $fixportfw = '0';
-       if ($cgiparams{'KEY2'} ne "0") {
-               my $counter = 0;
-               foreach my $line (@current)
-               {
-                       chomp($line);
-                       my @temp = split(/\,/,$line);
-                       if ($temp[0] eq $cgiparams{'KEY1'}) {
-                               $counter++;
-                       }
-               } 
-               if ($counter eq 2) {
-                       $fixportfw = '1';
-               }
-       }
-       
-       unless ($errormessage)
-       {
-               open(FILE, ">$filename") or die 'Unable to open config file.';
-               flock FILE, 2;
-               my $linedeleted = 0;
-               foreach my $line (@current)
-               {
-                       chomp($line);
-                       my @temp = split(/\,/,$line);
-
-                       if ($cgiparams{'KEY1'} eq $temp[0] && $cgiparams{'KEY2'} eq $temp[1] ||
-                               $cgiparams{'KEY1'} eq $temp[0] && $cgiparams{'KEY2'} eq "0" ) 
-                       {
-                               $linedeleted = 1;
-                       } else {
-                               if ($temp[0] eq $cgiparams{'KEY1'} && $temp[1] eq "0" && $fixportfw eq "1") {
-                                       $temp[8] = '0.0.0.0/0';
-                               }
-                       print FILE "$temp[0],$temp[1],$temp[2],$temp[3],$temp[4],$temp[5],$temp[6],$temp[7],$temp[8],$temp[9]\n";
-#                              print FILE "$line\n";
-                       }
-               }
-               close(FILE);
-               if ($linedeleted == 1) {
-                       &General::log($Lang::tr{'forwarding rule removed'});
-                       undef %cgiparams;
-               }
-               system('/usr/local/bin/setportfw');
-       }
-}
-
-# Darren Critchley - Added routine to allow external access rules to be added
-if ($cgiparams{'ACTION'} eq $Lang::tr{'add xtaccess'})
-{
-       open(FILE, $filename) or die 'Unable to open config file.';
-       my @current = <FILE>;
-       close(FILE);
-       my $key = 0; # used for finding last sequence number used 
-       foreach my $line (@current)
-       {
-               my @temp = split(/\,/,$line);
-               if ($temp[0] eq $cgiparams{'KEY1'}) {
-                       $key = $temp[1]
-               }
-               if ($cgiparams{'KEY1'} eq $temp[0] && $cgiparams{'KEY2'} eq $temp[1] ) {
-                       $cgiparams{'PROTOCOL'} = $temp[2];
-                       $cgiparams{'SRC_PORT'} = $temp[3];
-                       $cgiparams{'DEST_IP'} = $temp[4];
-                       $cgiparams{'DEST_PORT'} = $temp[5];
-                       $cgiparams{'ENABLED'} = $temp[6];
-                       $cgiparams{'SRC_IP'} = $temp[7];
-                       $cgiparams{'ORIG_IP'} = '';
-                       $cgiparams{'REMARK'} = $temp[9];
-               }
-       }
-       $key++;
-       $cgiparams{'KEY2'} = $key;
-       # Until the ADD button is hit, there needs to be no change to portfw rules
-}
-
-if ($cgiparams{'ACTION'} eq $Lang::tr{'reset'})
-{
-       undef %cgiparams;
-}
-
-if ($cgiparams{'ACTION'} eq '')
-{
-       $cgiparams{'PROTOCOL'} = 'tcp';
-       $cgiparams{'ENABLED'} = 'on';
-       $cgiparams{'SRC_IP'} = '0.0.0.0';
-}
-
-$selected{'PROTOCOL'}{'udp'} = '';
-$selected{'PROTOCOL'}{'tcp'} = '';
-$selected{'PROTOCOL'}{'gre'} = '';
-$selected{'PROTOCOL'}{$cgiparams{'PROTOCOL'}} = "selected='selected'";
-
-$selected{'SRC_IP'}{$cgiparams{'SRC_IP'}} = "selected='selected'";
-
-$checked{'ENABLED'}{'off'} = '';
-$checked{'ENABLED'}{'on'} = '';  
-$checked{'ENABLED'}{$cgiparams{'ENABLED'}} = "checked='checked'";
-
-&Header::openpage($Lang::tr{'port forwarding configuration'}, 1, '');
-
-&Header::openbigbox('100%', 'left', '', $errormessage);
-
-if ($errormessage) {
-       &Header::openbox('100%', 'left', $Lang::tr{'error messages'});
-       print "<class name='base'><font color='${Header::colourred}'>$errormessage\n</font>";
-       print "&nbsp;</class>\n";
-       &Header::closebox();
-}
-
-print "<form method='post' action='$ENV{'SCRIPT_NAME'}'>\n";
-
-if ($cgiparams{'ACTION'} eq $Lang::tr{'edit'}){
-       &Header::openbox('100%', 'left', $Lang::tr{'edit a rule'});
-} else {
-       &Header::openbox('100%', 'left', $Lang::tr{'add a new rule'});
-}
-
-if ($cgiparams{'ACTION'} eq $Lang::tr{'edit'} && $cgiparams{'KEY2'} ne "0" || $cgiparams{'ACTION'} eq $Lang::tr{'add xtaccess'}){ 
-# if it is not a port forward record, don't validate as the fields are disabled
-       my $PROT = "\U$cgiparams{'PROTOCOL'}\E";
-       # Darren Critchley - Format the source and destination ports
-       my $dstprt = $cgiparams{'DEST_PORT'};
-       $dstprt =~ s/-/ - /;
-       $dstprt =~ s/:/ - /;
-
-print <<END
-<table>
-       <tr>
-               <td class='base'>$Lang::tr{'protocol'}: <b>$PROT</b></td>
-               <td width='20'>&nbsp;</td>
-               <td class='base' align='right'>$Lang::tr{'destination ip'}:&nbsp;</td>
-               <td><b>$cgiparams{'DEST_IP'}</b></td>
-               <td width='20'>&nbsp;</td>
-               <td class='base' align='right'>$Lang::tr{'destination port'}:&nbsp;</td>
-               <td><b>$dstprt</b></td>
-       </tr>
-</table>
-
-<input type='hidden' name='PROTOCOL' value='$cgiparams{'PROTOCOL'}' />
-<input type='hidden' name='SRC_IP' value='$cgiparams{'SRC_IP'}' />
-<input type='hidden' name='SRC_PORT' value='$cgiparams{'SRC_PORT'}' />
-<input type='hidden' name='DEST_IP' value='$cgiparams{'DEST_IP'}' />
-<input type='hidden' name='DEST_PORT' value='$cgiparams{'DEST_PORT'}' />
-END
-;
-} else {
-print <<END
-<table width='100%'>
-       <tr>
-               <td width='10%'>$Lang::tr{'protocol'}:&nbsp;</td>
-               <td width='15%'> 
-               <select name='PROTOCOL'>
-                       <option value='tcp' $selected{'PROTOCOL'}{'tcp'}>TCP</option>
-                       <option value='udp' $selected{'PROTOCOL'}{'udp'}>UDP</option>
-                       <option value='gre' $selected{'PROTOCOL'}{'gre'}>GRE</option>
-               </select>
-               </td>
-               <td class='base' width='20%'><font color='${Header::colourred}'>$Lang::tr{'alias ip'}:</font></td>
-               <td>
-                       <select name='SRC_IP'>
-                       <option value='0.0.0.0' $selected{'SRC_IP'}{'0.0.0.0'}>DEFAULT IP</option>
-END
-;
-open(ALIASES, "$aliasfile") or die 'Unable to open aliases file.';
-while (<ALIASES>)
-{
-       chomp($_);
-       my @temp = split(/\,/,$_);
-       if ($temp[1] eq 'on') {
-               print "<option value='$temp[0]' $selected{'SRC_IP'}{$temp[0]}>$temp[0]";
-               if (defined $temp[2] and ($temp[2] ne '')) { print " ($temp[2])"; }
-               print "</option>\n";
-       }
-}
-close(ALIASES);
-print <<END
-                       </select>
-               </td>
-               <td class='base' width='20%'><font color='${Header::colourred}'>$Lang::tr{'source port'}:</font></td>
-               <td width='10%'><input type='text' name='SRC_PORT' value='$cgiparams{'SRC_PORT'}' size='8' /></td>
-       </tr>
-       <tr>
-               <td class='base'>&nbsp;</td>
-               <td>&nbsp;</td>
-               <td class='base'>$Lang::tr{'destination ip'}:</td>
-               <td><input type='text' name='DEST_IP' value='$cgiparams{'DEST_IP'}' size='15' /></td>
-               <td class='base'>$Lang::tr{'destination port'}:</td>
-               <td><input type='text' name='DEST_PORT' value='$cgiparams{'DEST_PORT'}' size='8' /></td>
-       </tr>
-</table>
-END
-;
-}
-
-print <<END
-<table>
-       <tr>
-               <td class='base'>$Lang::tr{'remark title'}&nbsp;<img src='/blob.gif' alt='*' />&nbsp;</td>
-               <td><input type='text' name='REMARK' value='$cgiparams{'REMARK'}' size='55' maxlength='50' /></td>
-END
-;
-unless ($cgiparams{'ACTION'} eq $Lang::tr{'add xtaccess'} && $cgiparams{'ENABLED'} eq "off") {
-       print "<td width='20'>&nbsp;</td>";
-       print "<td>$Lang::tr{'enabled'}&nbsp;</td><td><input type='checkbox' name='ENABLED' $checked{'ENABLED'}{'on'} /></td>\n";
-}
-print <<END
-       </tr>
-</table>
-END
-;
-
-if ($cgiparams{'ACTION'} eq $Lang::tr{'edit'} && $cgiparams{'KEY2'} eq "0" && ($cgiparams{'ORIG_IP'} eq "0" || $cgiparams{'ORIG_IP'} eq "0.0.0.0/0")){ 
-# if it is a port forward rule with a 0 in the orig_port field, this means there are xtaccess records, and we
-# don't want to allow a person to change the orig_ip field as it will mess other logic up
-       print "<input type='hidden' name='ORIG_IP' value='$cgiparams{'ORIG_IP'}' />\n";
-} else {
-print <<END
-<table>
-       <tr>
-               <td class='base'><font class='boldbase' color='${Header::colourred}'>$Lang::tr{'source network'}</font>&nbsp;<img src='/blob.gif' alt='*' />&nbsp;</td>
-               <td><input type='text' name='ORIG_IP' value='$cgiparams{'ORIG_IP'}' size='15' /></td>
-       </tr>
-</table>
-END
-;
-}
-
-print <<END
-<table width='100%'>
-       <hr />
-       <tr>
-               <td class='base' width='25%'><img src='/blob.gif' alt ='*' align='top' />&nbsp;<font class='base'>$Lang::tr{'this field may be blank'}</font></td>
-END
-;
-
-
-if ($cgiparams{'ACTION'} eq $Lang::tr{'edit'}){
-       if($cgiparams{'KEY2'} eq "0"){
-               print "<td width='35%' align='right'>$Lang::tr{'open to all'}:&nbsp;</td><td width='5%'><input type='checkbox' name='OVERRIDE' $checked{'OVERRIDE'}{'on'} /></td>\n";
-       } else {
-               print "<td width='40%'>&nbsp;</td>\n";
-       }
-       print "<td align='center' width='15%'><input type='submit' name='ACTION' value='$Lang::tr{'update'}' />";
-       print "<input type='hidden' name='KEY1' value='$cgiparams{'KEY1'}' />";
-       print "<input type='hidden' name='KEY2' value='$cgiparams{'KEY2'}' /></TD>";
-       print "<td align='center' width='15%'><input type='submit' name='ACTION' value='$Lang::tr{'reset'}' /></td>";
-       # on an edit and an xtaccess add, for some reason the "Reset" button stops working, so I make it a submit button
-} else {
-       print "<td width='30%'>&nbsp;</td>\n";
-       print "<td align='center' width='15%'><input type='submit' name='ACTION' value='$Lang::tr{'add'}' /></td>";
-       if ($cgiparams{'ACTION'} eq $Lang::tr{'add xtaccess'}) {
-               print "<td align='center' width='15%'><input type='hidden' name='KEY1' value='$cgiparams{'KEY1'}' />";
-               print "<input type='hidden' name='KEY2' value='$cgiparams{'KEY2'}' />";
-               print "<input type='submit' name='ACTION' value='$Lang::tr{'reset'}' /></td>";
-       } elsif ($errormessage ne '') {
-               print "<td align='center' width='15%'><input type='submit' name='ACTION' value='$Lang::tr{'reset'}' /></td>";
-       } else {
-               print "<td align='center' width='15%'><input type='reset' name='ACTION' value='$Lang::tr{'reset'}' /></td>";
-       }
-}
-print <<END
-       <td width='5%' align='right'>&nbsp;</td>
-       </tr>
-</table>
-END
-;
-&Header::closebox();
-
-print "</form>\n";
-
-&Header::openbox('100%', 'left', $Lang::tr{'current rules'});
-print <<END
-<table width='100%'>
-<tr>
-<td width='7%' class='boldbase' align='center'><b>$Lang::tr{'proto'}</b></td>
-<td width='31%' class='boldbase' align='center'><b>$Lang::tr{'source'}</b></td>
-<td width='2%' class='boldbase' align='center'>&nbsp;</td>
-<td width='31%' class='boldbase' align='center'><b>$Lang::tr{'destination'}</b></td>
-<td width='24%' class='boldbase' align='center'><b>$Lang::tr{'remark'}</b></td>
-<td width='4%' class='boldbase' colspan='4' align='center'><b>$Lang::tr{'action'}</b></td>
-</tr>
-END
-;
-
-my $id = 0;
-my $xtaccesscolor = '#F6F4F4';
-open(RULES, "$filename") or die 'Unable to open config file.';
-while (<RULES>)
-{
-       my $protocol = '';
-       my $gif = '';
-       my $gdesc = '';
-       my $toggle = '';
-       chomp($_);
-       my @temp = split(/\,/,$_);
-       $temp[9] ='' unless defined $temp[9];# Glles ESpinasse : suppress warning on page init
-       if ($temp[2] eq 'udp') {
-               $protocol = 'UDP'; }
-       elsif ($temp[2] eq 'gre') {
-               $protocol = 'GRE' }
-       else {
-               $protocol = 'TCP' }
-       # Change bgcolor when a new portfw rule is added
-       if ($temp[1] eq "0"){
-               $id++;
-       }
-       # Darren Critchley highlight the row we are editing
-       if ( $cgiparams{'ACTION'} eq $Lang::tr{'edit'} && $cgiparams{'KEY1'} eq $temp[0] && $cgiparams{'KEY2'} eq $temp[1] ) { 
-               print "<tr bgcolor='${Header::colouryellow}'>\n";
-       } else {
-               if ($id % 2) {
-                       print "<tr bgcolor='$color{'color22'}'>\n"; 
-               }
-               else {
-                       print "<tr bgcolor='$color{'color20'}'>\n";
-               }
-       }
-       
-       if ($temp[6] eq 'on') { $gif = 'on.gif'; $toggle='off'; $gdesc=$Lang::tr{'click to disable'};}
-               else { $gif = 'off.gif'; $toggle='on'; $gdesc=$Lang::tr{'click to enable'}; }
-
-               # Darren Critchley - this code no longer works - should we remove?
-       # catch for 'old-style' rules file - assume default ip if
-       # none exists
-       if (!&General::validip($temp[7]) || $temp[7] eq '0.0.0.0') {
-               $temp[7] = 'DEFAULT IP'; }
-               if ($temp[1] eq '0') { # Port forwarding entry
-
-               # Darren Critchley - Format the source and destintation ports
-               my $srcprt = $temp[3];
-               $srcprt =~ s/-/ - /;
-               $srcprt =~ s/:/ - /;
-               my $dstprt = $temp[5];
-               $dstprt =~ s/-/ - /;
-               $dstprt =~ s/:/ - /;
-
-               # Darren Critchley - Get Port Service Name if we can - code borrowed from firewalllog.dat
-               $_=$temp[3];
-               if (/^\d+$/) {
-                       my $servi = uc(getservbyport($temp[3], lc($temp[2])));
-                       if ($servi ne '' && $temp[3] < 1024) {
-                               $srcprt = "$srcprt($servi)"; }
-               }
-               $_=$temp[5];
-               if (/^\d+$/) {
-                       my $servi = uc(getservbyport($temp[5], lc($temp[2])));
-                       if ($servi ne '' && $temp[5] < 1024) {
-                               $dstprt = "$dstprt($servi)"; }
-               }
-
-               # Darren Critchley - If the line is too long, wrap the port numbers
-               my $srcaddr = "$temp[7] : $srcprt";
-               if (length($srcaddr) > 22) {
-                       $srcaddr = "$temp[7] :<br /> $srcprt";
-               }
-               my $dstaddr = "$temp[4] : $dstprt";
-               if (length($dstaddr) > 26) {
-                       $dstaddr = "$temp[4] :<br /> $dstprt";
-               }
-print <<END
-<td align='center'>$protocol</td>
-<td align='center'>$srcaddr</td>
-<td align='center'><img src='/images/forward.gif' alt='=&gt;' /></td>
-<td align='center'>$dstaddr</td>
-<td align='left'>&nbsp;$temp[9]</td>
-<td align='center'>
-       <form method='post' name='frm$temp[0]c' action='$ENV{'SCRIPT_NAME'}'>
-       <input type='image' name='$Lang::tr{'toggle enable disable'}' src='/images/$gif' alt='$gdesc' title='$gdesc' />
-       <input type='hidden' name='ACTION' value='$Lang::tr{'toggle enable disable'}' />
-       <input type='hidden' name='KEY1' value='$temp[0]' />
-       <input type='hidden' name='KEY2' value='$temp[1]' />
-       <input type='hidden' name='ENABLED' value='$toggle' />
-       </form>
-</td>
-
-<td align='center'>
-       <form method='post' name='frm$temp[0]' action='$ENV{'SCRIPT_NAME'}'>
-       <input type='hidden' name='ACTION' value='$Lang::tr{'add xtaccess'}' />
-       <input type='image' name='$Lang::tr{'add xtaccess'}' src='/images/add.gif' alt='$Lang::tr{'add xtaccess'}' title='$Lang::tr{'add xtaccess'}' />
-       <input type='hidden' name='KEY1' value='$temp[0]' />
-       <input type='hidden' name='KEY2' value='$temp[1]' />
-       </form>
-</td>
-
-<td align='center'>
-       <form method='post' name='frm$temp[0]' action='$ENV{'SCRIPT_NAME'}'>
-       <input type='hidden' name='ACTION' value='$Lang::tr{'edit'}' />
-       <input type='image' name='$Lang::tr{'edit'}' src='/images/edit.gif' alt='$Lang::tr{'edit'}' title='$Lang::tr{'edit'}' />
-       <input type='hidden' name='KEY1' value='$temp[0]' />
-       <input type='hidden' name='KEY2' value='$temp[1]' />
-       </form>
-</td>
-
-<td align='center'>
-       <form method='post' name='frm$temp[0]b' action='$ENV{'SCRIPT_NAME'}'>
-       <input type='hidden' name='ACTION' value='$Lang::tr{'remove'}' />
-       <input type='image' name='$Lang::tr{'remove'}' src='/images/delete.gif' alt='$Lang::tr{'remove'}' title='$Lang::tr{'remove'}' />
-       <input type='hidden' name='KEY1' value='$temp[0]' />
-       <input type='hidden' name='KEY2' value='$temp[1]' />
-       </form>
-</td>
-
-</tr>
-END
-       ;
-       } else { # external access entry
-print <<END
-<td align='center'>&nbsp;</td>
-
-<td align='left' colspan='4'>&nbsp;<font color='${Header::colourred}'>$Lang::tr{'access allowed'}</font> $temp[8]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;($temp[9])</td>
-
-<td align='center'>
-       <form method='post' name='frm$temp[0]$temp[1]t' action='$ENV{'SCRIPT_NAME'}'>
-       <input type='image' name='$Lang::tr{'toggle enable disable'}' src='/images/$gif' alt='$Lang::tr{'toggle enable disable'}' title='$Lang::tr{'toggle enable disable'}' />
-       <input type='hidden' name='ACTION' value='$Lang::tr{'toggle enable disable'}' />
-       <input type='hidden' name='KEY1' value='$temp[0]' />
-       <input type='hidden' name='KEY2' value='$temp[1]' />
-       <input type='hidden' name='ENABLED' value='$toggle' />
-       </form>
-</td>
-
-<td align='center'>&nbsp;</td>
-
-<td align='center'>
-       <form method='post' name='frm$temp[0]$temp[1]' action='$ENV{'SCRIPT_NAME'}'>
-       <input type='hidden' name='ACTION' value='$Lang::tr{'edit'}' />
-       <input type='image' name='$Lang::tr{'edit'}' src='/images/edit.gif' alt='$Lang::tr{'edit'}' title='$Lang::tr{'edit'}' />
-       <input type='hidden' name='KEY1' value='$temp[0]' />
-       <input type='hidden' name='KEY2' value='$temp[1]' />
-       </form>
-</td>
-
-<td align='center'>
-       <form method='post' name='frm$temp[0]b$temp[1]b' action='$ENV{'SCRIPT_NAME'}'>
-       <input type='hidden' name='ACTION' value='$Lang::tr{'remove'}' />
-       <input type='image' name='$Lang::tr{'remove'}' src='/images/delete.gif' alt='$Lang::tr{'remove'}' title='$Lang::tr{'remove'}' />
-       <input type='hidden' name='KEY1' value='$temp[0]' />
-       <input type='hidden' name='KEY2' value='$temp[1]' />
-       </form>
-</td>
-
-</tr>
-END
-       ;
-       }
-}
-
-close(RULES);
-
-print "</table>";
-
-# If the fixed lease file contains entries, print Key to action icons
-if ( ! -z "$filename") {
-print <<END
-<table>
-<tr>
-       <td class='boldbase'>&nbsp;<b>$Lang::tr{'legend'}:&nbsp;</b></td>
-       <td><img src='/images/on.gif' alt='$Lang::tr{'click to disable'}' /></td>
-       <td class='base'>$Lang::tr{'click to disable'}</td>
-       <td>&nbsp;&nbsp;</td>
-       <td><img src='/images/off.gif' alt='$Lang::tr{'click to enable'}' /></td>
-       <td class='base'>$Lang::tr{'click to enable'}</td>
-       <td>&nbsp;&nbsp;</td>
-       <td><img src='/images/add.gif' alt='$Lang::tr{'add xtaccess'}' /></td>
-       <td class='base'>$Lang::tr{'add xtaccess'}</td>
-       <td>&nbsp;&nbsp;</td>
-       <td><img src='/images/edit.gif' alt='$Lang::tr{'edit'}' /></td>
-       <td class='base'>$Lang::tr{'edit'}</td>
-       <td>&nbsp;&nbsp;</td>
-       <td><img src='/images/delete.gif' alt='$Lang::tr{'remove'}' /></td>
-       <td class='base'>$Lang::tr{'remove'}</td>
-</tr>
-</table>
-END
-;
-}
-
-&Header::closebox();
-
-&Header::closebigbox();
-
-&Header::closepage();
-
-# Validate Field Entries
-sub validateparams 
-{
-       # Darren Critchley - Get rid of dashes in port ranges
-       $cgiparams{'DEST_PORT'}=~ tr/-/:/;
-       $cgiparams{'SRC_PORT'}=~ tr/-/:/;
-       
-       # Darren Critchley - code to substitue wildcards
-       if ($cgiparams{'SRC_PORT'} eq "*") {
-               $cgiparams{'SRC_PORT'} = "1:65535";
-       }
-       if ($cgiparams{'SRC_PORT'} =~ /^(\D)\:(\d+)$/) {
-               $cgiparams{'SRC_PORT'} = "1:$2";
-       }
-       if ($cgiparams{'SRC_PORT'} =~ /^(\d+)\:(\D)$/) {
-               $cgiparams{'SRC_PORT'} = "$1:65535";
-       }
-       if ($cgiparams{'DEST_PORT'} eq "*") {
-               $cgiparams{'DEST_PORT'} = "1:65535";
-       }
-       if ($cgiparams{'DEST_PORT'} =~ /^(\D)\:(\d+)$/) {
-               $cgiparams{'DEST_PORT'} = "1:$2";
-       }
-       if ($cgiparams{'DEST_PORT'} =~ /^(\d+)\:(\D)$/) {
-               $cgiparams{'DEST_PORT'} = "$1:65535";
-       }
-
-       # Darren Critchley - Add code for GRE protocol - we want to ignore ports, but we need a place holder
-       if ($cgiparams{'PROTOCOL'} eq 'gre') {
-               $cgiparams{'SRC_PORT'} = "GRE";
-               $cgiparams{'DEST_PORT'} = "GRE";
-       }
-
-       unless($cgiparams{'PROTOCOL'} =~ /^(tcp|udp|gre)$/) { $errormessage = $Lang::tr{'invalid input'}; }
-       # Darren Critchley - Changed how the error routine works a bit - for the validportrange check, we need to 
-       # pass in src or dest to determine which side we are working with.
-       # the routine returns the complete error or ''
-       if ($cgiparams{'PROTOCOL'} ne 'gre') {
-               $errormessage = &General::validportrange($cgiparams{'SRC_PORT'}, 'src');
-       }
-       if( ($cgiparams{'ORIG_IP'} ne "0" && $cgiparams{'KEY2'} ne "0") || $cgiparams{'ACTION'} eq $Lang::tr{'add'}) { 
-       # if it is a port forward record with 0 in orig_ip then ignore checking this field
-               unless(&General::validipormask($cgiparams{'ORIG_IP'}))
-               {
-                       if ($cgiparams{'ORIG_IP'} ne '') {
-                               $errormessage = $Lang::tr{'source ip bad'}; }
-                       else {
-                               $cgiparams{'ORIG_IP'} = '0.0.0.0/0'; }
-               }
-       }
-       # Darren Critchey - New rule that sets destination same as source if dest_port is blank.
-       if ($cgiparams{'DEST_PORT'} eq ''){
-               $cgiparams{'DEST_PORT'} = $cgiparams{'SRC_PORT'};
-       }
-       # Darren Critchey - Just in case error message is already set, this routine would wipe it out if
-       # we don't do a test here
-       if ($cgiparams{'PROTOCOL'} ne 'gre') {
-               unless($errormessage) {$errormessage = &General::validportrange($cgiparams{'DEST_PORT'}, 'dest');}
-       }
-       unless(&General::validip($cgiparams{'DEST_IP'})) { $errormessage = $Lang::tr{'destination ip bad'}; }
-       return;
-}
-
-# Darren Critchley - we want to make sure that a port range does not overlap another port range
-sub checkportoverlap
-{
-       my $portrange1 = $_[0]; # New port range
-       my $portrange2 = $_[1]; # existing port range
-       my @tempr1 = split(/\:/,$portrange1);
-       my @tempr2 = split(/\:/,$portrange2);
-
-       unless (&checkportinc($tempr1[0], $portrange2)){ return 0;}
-       unless (&checkportinc($tempr1[1], $portrange2)){ return 0;}
-       
-       unless (&checkportinc($tempr2[0], $portrange1)){ return 0;}
-       unless (&checkportinc($tempr2[1], $portrange1)){ return 0;}
-
-       return 1; # Everything checks out!
-}
-
-# Darren Critchley - we want to make sure that a port entry is not within an already existing range
-sub checkportinc
-{
-       my $port1 = $_[0]; # Port
-       my $portrange2 = $_[1]; # Port range
-       my @tempr1 = split(/\:/,$portrange2);
-
-       if ($port1 < $tempr1[0] || $port1 > $tempr1[1]) {
-               return 1; 
-       } else {
-               return 0; 
-       }
-}
-
-# Darren Critchley - certain ports are reserved for Ipcop 
-# TCP 67,68,81,222,445
-# UDP 67,68
-# Params passed in -> port, rangeyn, protocol
-sub disallowreserved
-{
-       # port 67 and 68 same for tcp and udp, don't bother putting in an array
-       my $msg = "";
-       my @tcp_reserved = ();
-       my $prt = $_[0]; # the port or range
-       my $ryn = $_[1]; # tells us whether or not it is a port range
-       my $prot = $_[2]; # protocol
-       my $srcdst = $_[3]; # source or destination
-       
-       if ($ryn) { # disect port range
-               if ($srcdst eq "src") {
-                       $msg = "$Lang::tr{'rsvd src port overlap'}";
-               } else {
-                       $msg = "$Lang::tr{'rsvd dst port overlap'}";
-               }
-               my @tmprng = split(/\:/,$prt);
-               unless (67 < $tmprng[0] || 67 > $tmprng[1]) { $errormessage="$msg 67"; return; }
-               unless (68 < $tmprng[0] || 68 > $tmprng[1]) { $errormessage="$msg 68"; return; }
-               if ($prot eq "tcp") {
-                       foreach my $prange (@tcp_reserved) {
-                               unless ($prange < $tmprng[0] || $prange > $tmprng[1]) { $errormessage="$msg $prange"; return; }
-                       }
-               }
-       } else {
-               if ($srcdst eq "src") {
-                       $msg = "$Lang::tr{'reserved src port'}";
-               } else {
-                       $msg = "$Lang::tr{'reserved dst port'}";
-               }
-               if ($prt == 67) { $errormessage="$msg 67"; return; }
-               if ($prt == 68) { $errormessage="$msg 68"; return; }
-               if ($prot eq "tcp") {
-                       foreach my $prange (@tcp_reserved) {
-                               if ($prange == $prt) { $errormessage="$msg $prange"; return; }
-                       }
-               }
-       }
-       return;
-}
-
-# Darren Critchley - Attempt to combine Add/Update validation as they are almost the same
-sub valaddupdate
-{
-       if ($cgiparams{'KEY2'} eq "0"){ # if it is a port forward rule, then validate properly
-               &validateparams();
-       } else { # it is an xtaccess rule, just check for a valid ip
-               unless(&General::validipormask($cgiparams{'ORIG_IP'}))
-               {
-                       if ($cgiparams{'ORIG_IP'} ne '') {
-                               $errormessage = $Lang::tr{'source ip bad'}; }
-                       else { # this rule stops someone from adding an ALL xtaccess record
-                               $errormessage = $Lang::tr{'xtaccess all error'}; 
-                               $cgiparams{'ACTION'} = $Lang::tr{'add xtaccess'};
-                       }
-               }
-               # Darren Critchley - check for 0.0.0.0/0 - not allowed for xtaccess
-               if ($cgiparams{'ORIG_IP'} eq "0.0.0.0/0" || $cgiparams{'ORIG_IP'} eq "0.0.0.0") {
-                       $errormessage = $Lang::tr{'xtaccess all error'}; 
-                       $cgiparams{'ACTION'} = $Lang::tr{'add xtaccess'};
-               }
-       }
-       # Darren Critchley - Remove commas from remarks
-       $cgiparams{'REMARK'} = &Header::cleanhtml($cgiparams{'REMARK'});
-
-       # Darren Critchley - Check to see if we are working with port ranges
-       our ($prtrange1, $prtrange2);
-       $_ = $cgiparams{'SRC_PORT'};
-       if ($cgiparams{'KEY2'} eq "0" && m/:/){
-               $prtrange1 = 1;
-       }
-       if ($cgiparams{'SRC_IP'} eq '0.0.0.0') { # Dave Roberts - only check if using DEFAULT IP
-               if ($prtrange1 == 1){ # check for source ports reserved for Ipcop
-                       &disallowreserved($cgiparams{'SRC_PORT'},1,$cgiparams{'PROTOCOL'},"src");
-                       if ($errormessage) { goto EXITSUB; }
-               } else { # check for source port reserved for Ipcop
-                       &disallowreserved($cgiparams{'SRC_PORT'},0,$cgiparams{'PROTOCOL'},"src");
-                       if ($errormessage) { goto EXITSUB; }
-               }
-       }
-       
-       $_ = $cgiparams{'DEST_PORT'};
-       if ($cgiparams{'KEY2'} eq "0" && m/:/){
-               $prtrange2 = 1;
-       }
-       if ($cgiparams{'SRC_IP'} eq '0.0.0.0') { # Dave Roberts - only check if using DEFAULT IP
-               if ($prtrange2 == 1){ # check for destination ports reserved for IPFire
-                       &disallowreserved($cgiparams{'DEST_PORT'},1,$cgiparams{'PROTOCOL'},"dst");
-                       if ($errormessage) { goto EXITSUB; }
-               } else { # check for destination port reserved for IPFire
-                       &disallowreserved($cgiparams{'DEST_PORT'},0,$cgiparams{'PROTOCOL'},"dst");
-                       if ($errormessage) { goto EXITSUB; }
-               }
-       }
-       
-
-EXITSUB:
-       return;
-}
-
-# Darren Critchley - Duplicate or overlapping Port range check
-sub portchecks
-{
-       $_ = $_[0];
-       our ($prtrange1, $prtrange2);
-       if (m/:/ && $prtrange1 == 1) { # comparing two port ranges
-               unless (&checkportoverlap($cgiparams{'SRC_PORT'},$_[0])) {
-                       $errormessage = "$Lang::tr{'source port overlaps'} $_[0]";
-               }
-       }
-       if (m/:/ && $prtrange1 == 0 && $errormessage eq '') { # compare one port to a range
-               unless (&checkportinc($cgiparams{'SRC_PORT'}, $_[0])) {
-                       $errormessage = "$Lang::tr{'srcprt within existing'} $_[0]";
-               }
-       }
-       if (! m/:/ && $prtrange1 == 1 && $errormessage eq '') { # compare one port to a range
-               unless (&checkportinc($_[0], $cgiparams{'SRC_PORT'})) {
-                       $errormessage = "$Lang::tr{'srcprt range overlaps'} $_[0]";
-               }
-       }
-
-       if ($errormessage eq ''){
-               $_ = $_[1];
-               if (m/:/ && $prtrange2 == 1) { # if true then there is a port range
-                       unless (&checkportoverlap($cgiparams{'DEST_PORT'},$_[1])) {
-                               $errormessage = "$Lang::tr{'destination port overlaps'} $_[1]";
-                       }
-               }
-               if (m/:/ && $prtrange2 == 0 && $errormessage eq '') { # compare one port to a range
-                       unless (&checkportinc($cgiparams{'DEST_PORT'}, $_[1])) {
-                               $errormessage = "$Lang::tr{'dstprt within existing'} $_[1]";
-                       }
-               }
-               if (! m/:/ && $prtrange2 == 1 && $errormessage eq '') { # compare one port to a range
-                       unless (&checkportinc($_[1], $cgiparams{'DEST_PORT'})) {
-                               $errormessage = "$Lang::tr{'dstprt range overlaps'} $_[1]";
-                       }
-               }
-       }
-       return;
-}
index 25e935bf05778a0eb5d283395622304158e71407..6dd900ffda0faaab1aa0bdae295a29de497b3429 100644 (file)
@@ -180,8 +180,8 @@ close(FILE);
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
 
 my $green_cidr = &General::ipcidr("$netsettings{'GREEN_NETADDRESS'}\/$netsettings{'GREEN_NETMASK'}");
-my $blue_cidr = "# Blue not defined";
-if ($netsettings{'BLUE_DEV'}) {
+my $blue_cidr = "";
+if (&Header::blue_used() && $netsettings{'BLUE_DEV'}) {
        $blue_cidr = &General::ipcidr("$netsettings{'BLUE_NETADDRESS'}\/$netsettings{'BLUE_NETMASK'}");
 }
 
index b714d679cf4fa0fea72d6e0ad881499d5100af03..4468abd900804ba60d0388124cb877b6b07a3025 100644 (file)
@@ -36,9 +36,8 @@ foreach $field (@fields) {
        }
 }
 
-
-my $interface = `cat /var/ipfire/red/iface`;
-my @data_now = `ip -s link show $interface`;
+my $interface = `cat /var/ipfire/red/iface 2>/dev/null`;
+my @data_now = `ip -s link show $interface 2>/dev/null`;
 
 my $lastline;
 my $rxb_now = 0;
index 8d2666ec75be4292aac4611dbf5efe8becf2438e..2b03eff8adba575533a227866d7df6f76eabfe5d 100644 (file)
@@ -82,7 +82,7 @@ if ($upnpsettings{'ACTION'} eq $Lang::tr{'save'})
 debug_mode = $upnpsettings{'DEBUGMODE'}
 insert_forward_rules = $upnpsettings{'FORWARDRULES'}
 forward_chain_name = FORWARD
-prerouting_chain_name = PORTFW
+prerouting_chain_name = UPNPFW
 upstream_bitrate = $upnpsettings{'DOWNSTREAM'}
 downstream_bitrate = $upnpsettings{'UPSTREAM'}
 description_document_name = $upnpsettings{'DESCRIPTION'}
index 58645c39c2cf8a85156582b78ecd6c73ea84e6db..2d9058d0523dad099fbd079565a4d06799f2ff9b 100644 (file)
@@ -23,7 +23,7 @@ use Net::DNS;
 use File::Copy;
 use File::Temp qw/ tempfile tempdir /;
 use strict;
-
+use Sort::Naturally;
 # enable only the following on debugging purpose
 #use warnings;
 #use CGI::Carp 'fatalsToBrowser';
@@ -61,11 +61,11 @@ my %mainsettings = ();
 
 my $green_cidr = &General::ipcidr("$netsettings{'GREEN_NETADDRESS'}/$netsettings{'GREEN_NETMASK'}");
 my $blue_cidr = "# Blue not defined";
-if ($netsettings{'BLUE_DEV'}) {
+if (&Header::blue_used() && $netsettings{'BLUE_DEV'}) {
        $blue_cidr = &General::ipcidr("$netsettings{'BLUE_NETADDRESS'}/$netsettings{'BLUE_NETMASK'}");
 }
 my $orange_cidr = "# Orange not defined";
-if ($netsettings{'ORANGE_DEV'}) {
+if (&Header::orange_used() && $netsettings{'ORANGE_DEV'}) {
        $orange_cidr = &General::ipcidr("$netsettings{'ORANGE_NETADDRESS'}/$netsettings{'ORANGE_NETMASK'}");
 }
 
@@ -2491,7 +2491,7 @@ END
     ;
     my $id = 0;
     my $gif;
-    foreach my $key (keys %confighash) {
+    foreach my $key (sort { ncmp ($confighash{$a}[1],$confighash{$b}[1]) } keys %confighash) {
        if ($confighash{$key}[0] eq 'on') { $gif = 'on.gif'; } else { $gif = 'off.gif'; }
 
        if ($id % 2) {
diff --git a/html/html/include/jquery-1.9.1.min.js b/html/html/include/jquery-1.9.1.min.js
deleted file mode 100644 (file)
index 006e953..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-/*! jQuery v1.9.1 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license
-//@ sourceMappingURL=jquery.min.map
-*/(function(e,t){var n,r,i=typeof t,o=e.document,a=e.location,s=e.jQuery,u=e.$,l={},c=[],p="1.9.1",f=c.concat,d=c.push,h=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=p.trim,b=function(e,t){return new b.fn.init(e,t,r)},x=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,w=/\S+/g,T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^[\],:{}\s]*$/,E=/(?:^|:|,)(?:\s*\[)+/g,S=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,A=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,j=/^-ms-/,D=/-([\da-z])/gi,L=function(e,t){return t.toUpperCase()},H=function(e){(o.addEventListener||"load"===e.type||"complete"===o.readyState)&&(q(),b.ready())},q=function(){o.addEventListener?(o.removeEventListener("DOMContentLoaded",H,!1),e.removeEventListener("load",H,!1)):(o.detachEvent("onreadystatechange",H),e.detachEvent("onload",H))};b.fn=b.prototype={jquery:p,constructor:b,init:function(e,n,r){var i,a;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof b?n[0]:n,b.merge(this,b.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:o,!0)),C.test(i[1])&&b.isPlainObject(n))for(i in n)b.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(a=o.getElementById(i[2]),a&&a.parentNode){if(a.id!==i[2])return r.find(e);this.length=1,this[0]=a}return this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):b.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),b.makeArray(e,this))},selector:"",length:0,size:function(){return this.length},toArray:function(){return h.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=b.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return b.each(this,e,t)},ready:function(e){return b.ready.promise().done(e),this},slice:function(){return this.pushStack(h.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(b.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:d,sort:[].sort,splice:[].splice},b.fn.init.prototype=b.fn,b.extend=b.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},u=1,l=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},u=2),"object"==typeof s||b.isFunction(s)||(s={}),l===u&&(s=this,--u);l>u;u++)if(null!=(o=arguments[u]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(b.isPlainObject(r)||(n=b.isArray(r)))?(n?(n=!1,a=e&&b.isArray(e)?e:[]):a=e&&b.isPlainObject(e)?e:{},s[i]=b.extend(c,a,r)):r!==t&&(s[i]=r));return s},b.extend({noConflict:function(t){return e.$===b&&(e.$=u),t&&e.jQuery===b&&(e.jQuery=s),b},isReady:!1,readyWait:1,holdReady:function(e){e?b.readyWait++:b.ready(!0)},ready:function(e){if(e===!0?!--b.readyWait:!b.isReady){if(!o.body)return setTimeout(b.ready);b.isReady=!0,e!==!0&&--b.readyWait>0||(n.resolveWith(o,[b]),b.fn.trigger&&b(o).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===b.type(e)},isArray:Array.isArray||function(e){return"array"===b.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if(!e||"object"!==b.type(e)||e.nodeType||b.isWindow(e))return!1;try{if(e.constructor&&!y.call(e,"constructor")&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||y.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=b.buildFragment([e],t,i),i&&b(i).remove(),b.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=b.trim(n),n&&k.test(n.replace(S,"@").replace(A,"]").replace(E,"")))?Function("return "+n)():(b.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||b.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&b.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(j,"ms-").replace(D,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:v&&!v.call("\ufeff\u00a0")?function(e){return null==e?"":v.call(e)}:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?b.merge(n,"string"==typeof e?[e]:e):d.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(g)return g.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return f.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),b.isFunction(e)?(r=h.call(arguments,2),i=function(){return e.apply(n||this,r.concat(h.call(arguments)))},i.guid=e.guid=e.guid||b.guid++,i):t},access:function(e,n,r,i,o,a,s){var u=0,l=e.length,c=null==r;if("object"===b.type(r)){o=!0;for(u in r)b.access(e,n,u,r[u],!0,a,s)}else if(i!==t&&(o=!0,b.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(b(e),n)})),n))for(;l>u;u++)n(e[u],r,s?i:i.call(e[u],u,n(e[u],r)));return o?e:c?n.call(e):l?n(e[0],r):a},now:function(){return(new Date).getTime()}}),b.ready.promise=function(t){if(!n)if(n=b.Deferred(),"complete"===o.readyState)setTimeout(b.ready);else if(o.addEventListener)o.addEventListener("DOMContentLoaded",H,!1),e.addEventListener("load",H,!1);else{o.attachEvent("onreadystatechange",H),e.attachEvent("onload",H);var r=!1;try{r=null==e.frameElement&&o.documentElement}catch(i){}r&&r.doScroll&&function a(){if(!b.isReady){try{r.doScroll("left")}catch(e){return setTimeout(a,50)}q(),b.ready()}}()}return n.promise(t)},b.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=b.type(e);return b.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=b(o);var _={};function F(e){var t=_[e]={};return b.each(e.match(w)||[],function(e,n){t[n]=!0}),t}b.Callbacks=function(e){e="string"==typeof e?_[e]||F(e):b.extend({},e);var n,r,i,o,a,s,u=[],l=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=u.length,n=!0;u&&o>a;a++)if(u[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,u&&(l?l.length&&c(l.shift()):r?u=[]:p.disable())},p={add:function(){if(u){var t=u.length;(function i(t){b.each(t,function(t,n){var r=b.type(n);"function"===r?e.unique&&p.has(n)||u.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=u.length:r&&(s=t,c(r))}return this},remove:function(){return u&&b.each(arguments,function(e,t){var r;while((r=b.inArray(t,u,r))>-1)u.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?b.inArray(e,u)>-1:!(!u||!u.length)},empty:function(){return u=[],this},disable:function(){return u=l=r=t,this},disabled:function(){return!u},lock:function(){return l=t,r||p.disable(),this},locked:function(){return!l},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!u||i&&!l||(n?l.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},b.extend({Deferred:function(e){var t=[["resolve","done",b.Callbacks("once memory"),"resolved"],["reject","fail",b.Callbacks("once memory"),"rejected"],["notify","progress",b.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return b.Deferred(function(n){b.each(t,function(t,o){var a=o[0],s=b.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&b.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?b.extend(e,r):r}},i={};return r.pipe=r.then,b.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=h.call(arguments),r=n.length,i=1!==r||e&&b.isFunction(e.promise)?r:0,o=1===i?e:b.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?h.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,u,l;if(r>1)for(s=Array(r),u=Array(r),l=Array(r);r>t;t++)n[t]&&b.isFunction(n[t].promise)?n[t].promise().done(a(t,l,n)).fail(o.reject).progress(a(t,u,s)):--i;return i||o.resolveWith(l,n),o.promise()}}),b.support=function(){var t,n,r,a,s,u,l,c,p,f,d=o.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*"),r=d.getElementsByTagName("a")[0],!n||!r||!n.length)return{};s=o.createElement("select"),l=s.appendChild(o.createElement("option")),a=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={getSetAttribute:"t"!==d.className,leadingWhitespace:3===d.firstChild.nodeType,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:"/a"===r.getAttribute("href"),opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:!!a.value,optSelected:l.selected,enctype:!!o.createElement("form").enctype,html5Clone:"<:nav></:nav>"!==o.createElement("nav").cloneNode(!0).outerHTML,boxModel:"CSS1Compat"===o.compatMode,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},a.checked=!0,t.noCloneChecked=a.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!l.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}a=o.createElement("input"),a.setAttribute("value",""),t.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),t.radioValue="t"===a.value,a.setAttribute("checked","t"),a.setAttribute("name","t"),u=o.createDocumentFragment(),u.appendChild(a),t.appendChecked=a.checked,t.checkClone=u.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;return d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip,b(function(){var n,r,a,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",u=o.getElementsByTagName("body")[0];u&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",u.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",a=d.getElementsByTagName("td"),a[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===a[0].offsetHeight,a[0].style.display="",a[1].style.display="none",t.reliableHiddenOffsets=p&&0===a[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=4===d.offsetWidth,t.doesNotIncludeMarginInBodyOffset=1!==u.offsetTop,e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(o.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(u.style.zoom=1)),u.removeChild(n),n=d=a=r=null)}),n=s=u=l=r=a=null,t}();var O=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,B=/([A-Z])/g;function P(e,n,r,i){if(b.acceptData(e)){var o,a,s=b.expando,u="string"==typeof n,l=e.nodeType,p=l?b.cache:e,f=l?e[s]:e[s]&&s;if(f&&p[f]&&(i||p[f].data)||!u||r!==t)return f||(l?e[s]=f=c.pop()||b.guid++:f=s),p[f]||(p[f]={},l||(p[f].toJSON=b.noop)),("object"==typeof n||"function"==typeof n)&&(i?p[f]=b.extend(p[f],n):p[f].data=b.extend(p[f].data,n)),o=p[f],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[b.camelCase(n)]=r),u?(a=o[n],null==a&&(a=o[b.camelCase(n)])):a=o,a}}function R(e,t,n){if(b.acceptData(e)){var r,i,o,a=e.nodeType,s=a?b.cache:e,u=a?e[b.expando]:b.expando;if(s[u]){if(t&&(o=n?s[u]:s[u].data)){b.isArray(t)?t=t.concat(b.map(t,b.camelCase)):t in o?t=[t]:(t=b.camelCase(t),t=t in o?[t]:t.split(" "));for(r=0,i=t.length;i>r;r++)delete o[t[r]];if(!(n?$:b.isEmptyObject)(o))return}(n||(delete s[u].data,$(s[u])))&&(a?b.cleanData([e],!0):b.support.deleteExpando||s!=s.window?delete s[u]:s[u]=null)}}}b.extend({cache:{},expando:"jQuery"+(p+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?b.cache[e[b.expando]]:e[b.expando],!!e&&!$(e)},data:function(e,t,n){return P(e,t,n)},removeData:function(e,t){return R(e,t)},_data:function(e,t,n){return P(e,t,n,!0)},_removeData:function(e,t){return R(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&b.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),b.fn.extend({data:function(e,n){var r,i,o=this[0],a=0,s=null;if(e===t){if(this.length&&(s=b.data(o),1===o.nodeType&&!b._data(o,"parsedAttrs"))){for(r=o.attributes;r.length>a;a++)i=r[a].name,i.indexOf("data-")||(i=b.camelCase(i.slice(5)),W(o,i,s[i]));b._data(o,"parsedAttrs",!0)}return s}return"object"==typeof e?this.each(function(){b.data(this,e)}):b.access(this,function(n){return n===t?o?W(o,e,b.data(o,e)):null:(this.each(function(){b.data(this,e,n)}),t)},null,n,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function W(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(B,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:O.test(r)?b.parseJSON(r):r}catch(o){}b.data(e,n,r)}else r=t}return r}function $(e){var t;for(t in e)if(("data"!==t||!b.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}b.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=b._data(e,n),r&&(!i||b.isArray(r)?i=b._data(e,n,b.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=b.queue(e,t),r=n.length,i=n.shift(),o=b._queueHooks(e,t),a=function(){b.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),o.cur=i,i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return b._data(e,n)||b._data(e,n,{empty:b.Callbacks("once memory").add(function(){b._removeData(e,t+"queue"),b._removeData(e,n)})})}}),b.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?b.queue(this[0],e):n===t?this:this.each(function(){var t=b.queue(this,e,n);b._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&b.dequeue(this,e)})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(e,t){return e=b.fx?b.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=b.Deferred(),a=this,s=this.length,u=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=b._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(u));return u(),o.promise(n)}});var I,z,X=/[\t\r\n]/g,U=/\r/g,V=/^(?:input|select|textarea|button|object)$/i,Y=/^(?:a|area)$/i,J=/^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,G=/^(?:checked|selected)$/i,Q=b.support.getSetAttribute,K=b.support.input;b.fn.extend({attr:function(e,t){return b.access(this,b.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,t){return b.access(this,b.prop,e,t,arguments.length>1)},removeProp:function(e){return e=b.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,u="string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=b.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,u=0===arguments.length||"string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?b.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return b.isFunction(e)?this.each(function(n){b(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var o,a=0,s=b(this),u=t,l=e.match(w)||[];while(o=l[a++])u=r?u:!s.hasClass(o),s[u?"addClass":"removeClass"](o)}else(n===i||"boolean"===n)&&(this.className&&b._data(this,"__className__",this.className),this.className=this.className||e===!1?"":b._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(X," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=b.isFunction(e),this.each(function(n){var o,a=b(this);1===this.nodeType&&(o=i?e.call(this,n,a.val()):e,null==o?o="":"number"==typeof o?o+="":b.isArray(o)&&(o=b.map(o,function(e){return null==e?"":e+""})),r=b.valHooks[this.type]||b.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=b.valHooks[o.type]||b.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(U,""):null==n?"":n)}}}),b.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,u=0>i?s:o?i:0;for(;s>u;u++)if(n=r[u],!(!n.selected&&u!==i||(b.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&b.nodeName(n.parentNode,"optgroup"))){if(t=b(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n=b.makeArray(t);return b(e).find("option").each(function(){this.selected=b.inArray(b(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attr:function(e,n,r){var o,a,s,u=e.nodeType;if(e&&3!==u&&8!==u&&2!==u)return typeof e.getAttribute===i?b.prop(e,n,r):(a=1!==u||!b.isXMLDoc(e),a&&(n=n.toLowerCase(),o=b.attrHooks[n]||(J.test(n)?z:I)),r===t?o&&a&&"get"in o&&null!==(s=o.get(e,n))?s:(typeof e.getAttribute!==i&&(s=e.getAttribute(n)),null==s?t:s):null!==r?o&&a&&"set"in o&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r):(b.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(w);if(o&&1===e.nodeType)while(n=o[i++])r=b.propFix[n]||n,J.test(n)?!Q&&G.test(n)?e[b.camelCase("default-"+n)]=e[r]=!1:e[r]=!1:b.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!b.support.radioValue&&"radio"===t&&b.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!b.isXMLDoc(e),a&&(n=b.propFix[n]||n,o=b.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):V.test(e.nodeName)||Y.test(e.nodeName)&&e.href?0:t}}}}),z={get:function(e,n){var r=b.prop(e,n),i="boolean"==typeof r&&e.getAttribute(n),o="boolean"==typeof r?K&&Q?null!=i:G.test(n)?e[b.camelCase("default-"+n)]:!!i:e.getAttributeNode(n);return o&&o.value!==!1?n.toLowerCase():t},set:function(e,t,n){return t===!1?b.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&b.propFix[n]||n,n):e[b.camelCase("default-"+n)]=e[n]=!0,n}},K&&Q||(b.attrHooks.value={get:function(e,n){var r=e.getAttributeNode(n);return b.nodeName(e,"input")?e.defaultValue:r&&r.specified?r.value:t},set:function(e,n,r){return b.nodeName(e,"input")?(e.defaultValue=n,t):I&&I.set(e,n,r)}}),Q||(I=b.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&("id"===n||"name"===n||"coords"===n?""!==r.value:r.specified)?r.value:t},set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},b.attrHooks.contenteditable={get:I.get,set:function(e,t,n){I.set(e,""===t?!1:t,n)}},b.each(["width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}})})),b.support.hrefNormalized||(b.each(["href","src","width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return null==r?t:r}})}),b.each(["href","src"],function(e,t){b.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}})),b.support.style||(b.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),b.support.optSelected||(b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),b.support.enctype||(b.propFix.enctype="encoding"),b.support.checkOn||b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return null===e.getAttribute("value")?"on":e.value}}}),b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,n){return b.isArray(n)?e.checked=b.inArray(b(e).val(),n)>=0:t}})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}b.event={global:{},add:function(e,n,r,o,a){var s,u,l,c,p,f,d,h,g,m,y,v=b._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=b.guid++),(u=v.events)||(u=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof b===i||e&&b.event.triggered===e.type?t:b.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(w)||[""],l=n.length;while(l--)s=rt.exec(n[l])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),p=b.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=b.event.special[g]||{},d=b.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&b.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=u[g])||(h=u[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),b.event.global[g]=!0;e=null}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,p,f,d,h,g,m=b.hasData(e)&&b._data(e);if(m&&(c=m.events)){t=(t||"").match(w)||[""],l=t.length;while(l--)if(s=rt.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=b.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),u=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));u&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||b.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)b.event.remove(e,d+t[l],n,r,!0);b.isEmptyObject(c)&&(delete m.handle,b._removeData(e,"events"))}},trigger:function(n,r,i,a){var s,u,l,c,p,f,d,h=[i||o],g=y.call(n,"type")?n.type:n,m=y.call(n,"namespace")?n.namespace.split("."):[];if(l=f=i=i||o,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+b.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),u=0>g.indexOf(":")&&"on"+g,n=n[b.expando]?n:new b.Event(g,"object"==typeof n&&n),n.isTrigger=!0,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:b.makeArray(r,[n]),p=b.event.special[g]||{},a||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!a&&!p.noBubble&&!b.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(l=l.parentNode);l;l=l.parentNode)h.push(l),f=l;f===(i.ownerDocument||o)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((l=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(b._data(l,"events")||{})[n.type]&&b._data(l,"handle"),s&&s.apply(l,r),s=u&&l[u],s&&b.acceptData(l)&&s.apply&&s.apply(l,r)===!1&&n.preventDefault();if(n.type=g,!(a||n.isDefaultPrevented()||p._default&&p._default.apply(i.ownerDocument,r)!==!1||"click"===g&&b.nodeName(i,"a")||!b.acceptData(i)||!u||!i[g]||b.isWindow(i))){f=i[u],f&&(i[u]=null),b.event.triggered=g;try{i[g]()}catch(v){}b.event.triggered=t,f&&(i[u]=f)}return n.result}},dispatch:function(e){e=b.event.fix(e);var n,r,i,o,a,s=[],u=h.call(arguments),l=(b._data(this,"events")||{})[e.type]||[],c=b.event.special[e.type]||{};if(u[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=b.event.handlers.call(this,e,l),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((b.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,u),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],u=n.delegateCount,l=e.target;if(u&&l.nodeType&&(!e.button||"click"!==e.type))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(l.disabled!==!0||"click"!==e.type)){for(o=[],a=0;u>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?b(r,this).index(l)>=0:b.find(r,this,null,[l]).length),o[r]&&o.push(i);o.length&&s.push({elem:l,handlers:o})}return n.length>u&&s.push({elem:this,handlers:n.slice(u)}),s},fix:function(e){if(e[b.expando])return e;var t,n,r,i=e.type,a=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new b.Event(a),t=r.length;while(t--)n=r[t],e[n]=a[n];return e.target||(e.target=a.srcElement||o),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,a):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,a,s=n.button,u=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||o,a=i.documentElement,r=i.body,e.pageX=n.clientX+(a&&a.scrollLeft||r&&r.scrollLeft||0)-(a&&a.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(a&&a.scrollTop||r&&r.scrollTop||0)-(a&&a.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&u&&(e.relatedTarget=u===e.target?n.toElement:u),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},click:{trigger:function(){return b.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t}},focus:{trigger:function(){if(this!==o.activeElement&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===o.activeElement&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=b.extend(new b.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?b.event.trigger(i,null,t):b.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},b.removeEvent=o.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},b.Event=function(e,n){return this instanceof b.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&b.extend(this,n),this.timeStamp=e&&e.timeStamp||b.now(),this[b.expando]=!0,t):new b.Event(e,n)},b.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){b.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;
-return(!i||i!==r&&!b.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),b.support.submitBubbles||(b.event.special.submit={setup:function(){return b.nodeName(this,"form")?!1:(b.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=b.nodeName(n,"input")||b.nodeName(n,"button")?n.form:t;r&&!b._data(r,"submitBubbles")&&(b.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),b._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&b.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return b.nodeName(this,"form")?!1:(b.event.remove(this,"._submit"),t)}}),b.support.changeBubbles||(b.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(b.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),b.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),b.event.simulate("change",this,e,!0)})),!1):(b.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!b._data(t,"changeBubbles")&&(b.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||b.event.simulate("change",this.parentNode,e,!0)}),b._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return b.event.remove(this,"._change"),!Z.test(this.nodeName)}}),b.support.focusinBubbles||b.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){b.event.simulate(t,e.target,b.event.fix(e),!0)};b.event.special[t]={setup:function(){0===n++&&o.addEventListener(e,r,!0)},teardown:function(){0===--n&&o.removeEventListener(e,r,!0)}}}),b.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return b().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=b.guid++)),this.each(function(){b.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,b(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){b.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){b.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?b.event.trigger(e,n,r,!0):t}}),function(e,t){var n,r,i,o,a,s,u,l,c,p,f,d,h,g,m,y,v,x="sizzle"+-new Date,w=e.document,T={},N=0,C=0,k=it(),E=it(),S=it(),A=typeof t,j=1<<31,D=[],L=D.pop,H=D.push,q=D.slice,M=D.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},_="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=F.replace("w","w#"),B="([*^$|!~]?=)",P="\\["+_+"*("+F+")"+_+"*(?:"+B+_+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+O+")|)|)"+_+"*\\]",R=":("+F+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+P.replace(3,8)+")*)|.*)\\)|)",W=RegExp("^"+_+"+|((?:^|[^\\\\])(?:\\\\.)*)"+_+"+$","g"),$=RegExp("^"+_+"*,"+_+"*"),I=RegExp("^"+_+"*([\\x20\\t\\r\\n\\f>+~])"+_+"*"),z=RegExp(R),X=RegExp("^"+O+"$"),U={ID:RegExp("^#("+F+")"),CLASS:RegExp("^\\.("+F+")"),NAME:RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:RegExp("^("+F.replace("w","w*")+")"),ATTR:RegExp("^"+P),PSEUDO:RegExp("^"+R),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+_+"*(even|odd|(([+-]|)(\\d*)n|)"+_+"*(?:([+-]|)"+_+"*(\\d+)|))"+_+"*\\)|)","i"),needsContext:RegExp("^"+_+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+_+"*((?:-\\d)?\\d*)"+_+"*\\)|)(?=[^-]|$)","i")},V=/[\x20\t\r\n\f]*[+~]/,Y=/^[^{]+\{\s*\[native code/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,G=/^(?:input|select|textarea|button)$/i,Q=/^h\d$/i,K=/'|\\/g,Z=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,et=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,tt=function(e,t){var n="0x"+t-65536;return n!==n?t:0>n?String.fromCharCode(n+65536):String.fromCharCode(55296|n>>10,56320|1023&n)};try{q.call(w.documentElement.childNodes,0)[0].nodeType}catch(nt){q=function(e){var t,n=[];while(t=this[e++])n.push(t);return n}}function rt(e){return Y.test(e+"")}function it(){var e,t=[];return e=function(n,r){return t.push(n+=" ")>i.cacheLength&&delete e[t.shift()],e[n]=r}}function ot(e){return e[x]=!0,e}function at(e){var t=p.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}}function st(e,t,n,r){var i,o,a,s,u,l,f,g,m,v;if((t?t.ownerDocument||t:w)!==p&&c(t),t=t||p,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(!d&&!r){if(i=J.exec(e))if(a=i[1]){if(9===s){if(o=t.getElementById(a),!o||!o.parentNode)return n;if(o.id===a)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(a))&&y(t,o)&&o.id===a)return n.push(o),n}else{if(i[2])return H.apply(n,q.call(t.getElementsByTagName(e),0)),n;if((a=i[3])&&T.getByClassName&&t.getElementsByClassName)return H.apply(n,q.call(t.getElementsByClassName(a),0)),n}if(T.qsa&&!h.test(e)){if(f=!0,g=x,m=t,v=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){l=ft(e),(f=t.getAttribute("id"))?g=f.replace(K,"\\$&"):t.setAttribute("id",g),g="[id='"+g+"'] ",u=l.length;while(u--)l[u]=g+dt(l[u]);m=V.test(e)&&t.parentNode||t,v=l.join(",")}if(v)try{return H.apply(n,q.call(m.querySelectorAll(v),0)),n}catch(b){}finally{f||t.removeAttribute("id")}}}return wt(e.replace(W,"$1"),t,n,r)}a=st.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},c=st.setDocument=function(e){var n=e?e.ownerDocument||e:w;return n!==p&&9===n.nodeType&&n.documentElement?(p=n,f=n.documentElement,d=a(n),T.tagNameNoComments=at(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),T.attributes=at(function(e){e.innerHTML="<select></select>";var t=typeof e.lastChild.getAttribute("multiple");return"boolean"!==t&&"string"!==t}),T.getByClassName=at(function(e){return e.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",e.getElementsByClassName&&e.getElementsByClassName("e").length?(e.lastChild.className="e",2===e.getElementsByClassName("e").length):!1}),T.getByName=at(function(e){e.id=x+0,e.innerHTML="<a name='"+x+"'></a><div name='"+x+"'></div>",f.insertBefore(e,f.firstChild);var t=n.getElementsByName&&n.getElementsByName(x).length===2+n.getElementsByName(x+0).length;return T.getIdNotName=!n.getElementById(x),f.removeChild(e),t}),i.attrHandle=at(function(e){return e.innerHTML="<a href='#'></a>",e.firstChild&&typeof e.firstChild.getAttribute!==A&&"#"===e.firstChild.getAttribute("href")})?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},T.getIdNotName?(i.find.ID=function(e,t){if(typeof t.getElementById!==A&&!d){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){return e.getAttribute("id")===t}}):(i.find.ID=function(e,n){if(typeof n.getElementById!==A&&!d){var r=n.getElementById(e);return r?r.id===e||typeof r.getAttributeNode!==A&&r.getAttributeNode("id").value===e?[r]:t:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){var n=typeof e.getAttributeNode!==A&&e.getAttributeNode("id");return n&&n.value===t}}),i.find.TAG=T.tagNameNoComments?function(e,n){return typeof n.getElementsByTagName!==A?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},i.find.NAME=T.getByName&&function(e,n){return typeof n.getElementsByName!==A?n.getElementsByName(name):t},i.find.CLASS=T.getByClassName&&function(e,n){return typeof n.getElementsByClassName===A||d?t:n.getElementsByClassName(e)},g=[],h=[":focus"],(T.qsa=rt(n.querySelectorAll))&&(at(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||h.push("\\["+_+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||h.push(":checked")}),at(function(e){e.innerHTML="<input type='hidden' i=''/>",e.querySelectorAll("[i^='']").length&&h.push("[*^$]="+_+"*(?:\"\"|'')"),e.querySelectorAll(":enabled").length||h.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),h.push(",.*:")})),(T.matchesSelector=rt(m=f.matchesSelector||f.mozMatchesSelector||f.webkitMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&at(function(e){T.disconnectedMatch=m.call(e,"div"),m.call(e,"[s!='']:x"),g.push("!=",R)}),h=RegExp(h.join("|")),g=RegExp(g.join("|")),y=rt(f.contains)||f.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},v=f.compareDocumentPosition?function(e,t){var r;return e===t?(u=!0,0):(r=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t))?1&r||e.parentNode&&11===e.parentNode.nodeType?e===n||y(w,e)?-1:t===n||y(w,t)?1:0:4&r?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return u=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:0;if(o===a)return ut(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?ut(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},u=!1,[0,0].sort(v),T.detectDuplicates=u,p):p},st.matches=function(e,t){return st(e,null,null,t)},st.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&c(e),t=t.replace(Z,"='$1']"),!(!T.matchesSelector||d||g&&g.test(t)||h.test(t)))try{var n=m.call(e,t);if(n||T.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(r){}return st(t,p,null,[e]).length>0},st.contains=function(e,t){return(e.ownerDocument||e)!==p&&c(e),y(e,t)},st.attr=function(e,t){var n;return(e.ownerDocument||e)!==p&&c(e),d||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):d||T.attributes?e.getAttribute(t):((n=e.getAttributeNode(t))||e.getAttribute(t))&&e[t]===!0?t:n&&n.specified?n.value:null},st.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},st.uniqueSort=function(e){var t,n=[],r=1,i=0;if(u=!T.detectDuplicates,e.sort(v),u){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e};function ut(e,t){var n=t&&e,r=n&&(~t.sourceIndex||j)-(~e.sourceIndex||j);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function lt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function ct(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function pt(e){return ot(function(t){return t=+t,ot(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}o=st.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},i=st.selectors={cacheLength:50,createPseudo:ot,match:U,find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(et,tt),e[3]=(e[4]||e[5]||"").replace(et,tt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||st.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&st.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return U.CHILD.test(e[0])?null:(e[4]?e[2]=e[4]:n&&z.test(n)&&(t=ft(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){return"*"===e?function(){return!0}:(e=e.replace(et,tt).toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[e+" "];return t||(t=RegExp("(^|"+_+")"+e+"("+_+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==A&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=st.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[x]||(m[x]={}),l=c[e]||[],d=l[0]===N&&l[1],f=l[0]===N&&l[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[N,d,f];break}}else if(v&&(l=(t[x]||(t[x]={}))[e])&&l[0]===N)f=l[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[x]||(p[x]={}))[e]=[N,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||st.error("unsupported pseudo: "+e);return r[x]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?ot(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=M.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ot(function(e){var t=[],n=[],r=s(e.replace(W,"$1"));return r[x]?ot(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:ot(function(e){return function(t){return st(e,t).length>0}}),contains:ot(function(e){return function(t){return(t.textContent||t.innerText||o(t)).indexOf(e)>-1}}),lang:ot(function(e){return X.test(e||"")||st.error("unsupported lang: "+e),e=e.replace(et,tt).toLowerCase(),function(t){var n;do if(n=d?t.getAttribute("xml:lang")||t.getAttribute("lang"):t.lang)return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return Q.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:pt(function(){return[0]}),last:pt(function(e,t){return[t-1]}),eq:pt(function(e,t,n){return[0>n?n+t:n]}),even:pt(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:pt(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:pt(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:pt(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}};for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[n]=lt(n);for(n in{submit:!0,reset:!0})i.pseudos[n]=ct(n);function ft(e,t){var n,r,o,a,s,u,l,c=E[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=i.preFilter;while(s){(!n||(r=$.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),u.push(o=[])),n=!1,(r=I.exec(s))&&(n=r.shift(),o.push({value:n,type:r[0].replace(W," ")}),s=s.slice(n.length));for(a in i.filter)!(r=U[a].exec(s))||l[a]&&!(r=l[a](r))||(n=r.shift(),o.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?st.error(e):E(e,u).slice(0)}function dt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function ht(e,t,n){var i=t.dir,o=n&&"parentNode"===i,a=C++;return t.first?function(t,n,r){while(t=t[i])if(1===t.nodeType||o)return e(t,n,r)}:function(t,n,s){var u,l,c,p=N+" "+a;if(s){while(t=t[i])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[i])if(1===t.nodeType||o)if(c=t[x]||(t[x]={}),(l=c[i])&&l[0]===p){if((u=l[1])===!0||u===r)return u===!0}else if(l=c[i]=[p],l[1]=e(t,n,s)||r,l[1]===!0)return!0}}function gt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function mt(e,t,n,r,i){var o,a=[],s=0,u=e.length,l=null!=t;for(;u>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),l&&t.push(s));return a}function yt(e,t,n,r,i,o){return r&&!r[x]&&(r=yt(r)),i&&!i[x]&&(i=yt(i,o)),ot(function(o,a,s,u){var l,c,p,f=[],d=[],h=a.length,g=o||xt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:mt(g,f,e,s,u),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,u),r){l=mt(y,d),r(l,[],s,u),c=l.length;while(c--)(p=l[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){l=[],c=y.length;while(c--)(p=y[c])&&l.push(m[c]=p);i(null,y=[],l,u)}c=y.length;while(c--)(p=y[c])&&(l=i?M.call(o,p):f[c])>-1&&(o[l]=!(a[l]=p))}}else y=mt(y===a?y.splice(h,y.length):y),i?i(null,a,y,u):H.apply(a,y)})}function vt(e){var t,n,r,o=e.length,a=i.relative[e[0].type],s=a||i.relative[" "],u=a?1:0,c=ht(function(e){return e===t},s,!0),p=ht(function(e){return M.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;o>u;u++)if(n=i.relative[e[u].type])f=[ht(gt(f),n)];else{if(n=i.filter[e[u].type].apply(null,e[u].matches),n[x]){for(r=++u;o>r;r++)if(i.relative[e[r].type])break;return yt(u>1&&gt(f),u>1&&dt(e.slice(0,u-1)).replace(W,"$1"),n,r>u&&vt(e.slice(u,r)),o>r&&vt(e=e.slice(r)),o>r&&dt(e))}f.push(n)}return gt(f)}function bt(e,t){var n=0,o=t.length>0,a=e.length>0,s=function(s,u,c,f,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,T=l,C=s||a&&i.find.TAG("*",d&&u.parentNode||u),k=N+=null==T?1:Math.random()||.1;for(w&&(l=u!==p&&u,r=n);null!=(h=C[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,u,c)){f.push(h);break}w&&(N=k,r=++n)}o&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,o&&b!==v){g=0;while(m=t[g++])m(x,y,u,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=L.call(f));y=mt(y)}H.apply(f,y),w&&!s&&y.length>0&&v+t.length>1&&st.uniqueSort(f)}return w&&(N=k,l=T),x};return o?ot(s):s}s=st.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=ft(e)),n=t.length;while(n--)o=vt(t[n]),o[x]?r.push(o):i.push(o);o=S(e,bt(i,r))}return o};function xt(e,t,n){var r=0,i=t.length;for(;i>r;r++)st(e,t[r],n);return n}function wt(e,t,n,r){var o,a,u,l,c,p=ft(e);if(!r&&1===p.length){if(a=p[0]=p[0].slice(0),a.length>2&&"ID"===(u=a[0]).type&&9===t.nodeType&&!d&&i.relative[a[1].type]){if(t=i.find.ID(u.matches[0].replace(et,tt),t)[0],!t)return n;e=e.slice(a.shift().value.length)}o=U.needsContext.test(e)?0:a.length;while(o--){if(u=a[o],i.relative[l=u.type])break;if((c=i.find[l])&&(r=c(u.matches[0].replace(et,tt),V.test(a[0].type)&&t.parentNode||t))){if(a.splice(o,1),e=r.length&&dt(a),!e)return H.apply(n,q.call(r,0)),n;break}}}return s(e,p)(r,t,d,n,V.test(e)),n}i.pseudos.nth=i.pseudos.eq;function Tt(){}i.filters=Tt.prototype=i.pseudos,i.setFilters=new Tt,c(),st.attr=b.attr,b.find=st,b.expr=st.selectors,b.expr[":"]=b.expr.pseudos,b.unique=st.uniqueSort,b.text=st.getText,b.isXMLDoc=st.isXML,b.contains=st.contains}(e);var at=/Until$/,st=/^(?:parents|prev(?:Until|All))/,ut=/^.[^:#\[\.,]*$/,lt=b.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};b.fn.extend({find:function(e){var t,n,r,i=this.length;if("string"!=typeof e)return r=this,this.pushStack(b(e).filter(function(){for(t=0;i>t;t++)if(b.contains(r[t],this))return!0}));for(n=[],t=0;i>t;t++)b.find(e,this[t],n);return n=this.pushStack(i>1?b.unique(n):n),n.selector=(this.selector?this.selector+" ":"")+e,n},has:function(e){var t,n=b(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(b.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1))},filter:function(e){return this.pushStack(ft(this,e,!0))},is:function(e){return!!e&&("string"==typeof e?lt.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,o=[],a=lt.test(e)||"string"!=typeof e?b(e,t||this.context):0;for(;i>r;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&11!==n.nodeType){if(a?a.index(n)>-1:b.find.matchesSelector(n,e)){o.push(n);break}n=n.parentNode}}return this.pushStack(o.length>1?b.unique(o):o)},index:function(e){return e?"string"==typeof e?b.inArray(this[0],b(e)):b.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?b(e,t):b.makeArray(e&&e.nodeType?[e]:e),r=b.merge(this.get(),n);return this.pushStack(b.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),b.fn.andSelf=b.fn.addBack;function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}b.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(e,t,n){return b.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(e,t,n){return b.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return b.dir(e,"previousSibling",n)},siblings:function(e){return b.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.merge([],e.childNodes)}},function(e,t){b.fn[e]=function(n,r){var i=b.map(this,t,n);return at.test(e)||(r=n),r&&"string"==typeof r&&(i=b.filter(r,i)),i=this.length>1&&!ct[e]?b.unique(i):i,this.length>1&&st.test(e)&&(i=i.reverse()),this.pushStack(i)}}),b.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),1===t.length?b.find.matchesSelector(t[0],e)?[t[0]]:[]:b.find.matches(e,t)},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!b(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(t=t||0,b.isFunction(t))return b.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return b.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=b.grep(e,function(e){return 1===e.nodeType});if(ut.test(t))return b.filter(t,r,!n);t=b.filter(t,r)}return b.grep(e,function(e){return b.inArray(e,t)>=0===n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Nt=/^(?:checkbox|radio)$/i,Ct=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:b.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(o),Dt=jt.appendChild(o.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,b.fn.extend({text:function(e){return b.access(this,function(e){return e===t?b.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(b.isFunction(e))return this.each(function(t){b(this).wrapAll(e.call(this,t))});if(this[0]){var t=b(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return b.isFunction(e)?this.each(function(t){b(this).wrapInner(e.call(this,t))}):this.each(function(){var t=b(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=b.isFunction(e);return this.each(function(n){b(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){b.nodeName(this,"body")||b(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.insertBefore(e,this.firstChild)})},before:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=0;for(;null!=(n=this[r]);r++)(!e||b.filter(e,[n]).length>0)&&(t||1!==n.nodeType||b.cleanData(Ot(n)),n.parentNode&&(t&&b.contains(n.ownerDocument,n)&&Mt(Ot(n,"script")),n.parentNode.removeChild(n)));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&b.cleanData(Ot(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&b.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return b.clone(this,e,t)})},html:function(e){return b.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!b.support.htmlSerialize&&mt.test(e)||!b.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(b.cleanData(Ot(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){var t=b.isFunction(e);return t||"string"==typeof e||(e=b(e).not(this).detach()),this.domManip([e],!0,function(e){var t=this.nextSibling,n=this.parentNode;n&&(b(this).remove(),n.insertBefore(e,t))})},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=f.apply([],e);var i,o,a,s,u,l,c=0,p=this.length,d=this,h=p-1,g=e[0],m=b.isFunction(g);if(m||!(1>=p||"string"!=typeof g||b.support.checkClone)&&Ct.test(g))return this.each(function(i){var o=d.eq(i);m&&(e[0]=g.call(this,i,n?o.html():t)),o.domManip(e,n,r)});if(p&&(l=b.buildFragment(e,this[0].ownerDocument,!1,this),i=l.firstChild,1===l.childNodes.length&&(l=i),i)){for(n=n&&b.nodeName(i,"tr"),s=b.map(Ot(l,"script"),Ht),a=s.length;p>c;c++)o=l,c!==h&&(o=b.clone(o,!0,!0),a&&b.merge(s,Ot(o,"script"))),r.call(n&&b.nodeName(this[c],"table")?Lt(this[c],"tbody"):this[c],o,c);if(a)for(u=s[s.length-1].ownerDocument,b.map(s,qt),c=0;a>c;c++)o=s[c],kt.test(o.type||"")&&!b._data(o,"globalEval")&&b.contains(u,o)&&(o.src?b.ajax({url:o.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):b.globalEval((o.text||o.textContent||o.innerHTML||"").replace(St,"")));l=i=null}return this}});function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function Ht(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Mt(e,t){var n,r=0;for(;null!=(n=e[r]);r++)b._data(n,"globalEval",!t||b._data(t[r],"globalEval"))}function _t(e,t){if(1===t.nodeType&&b.hasData(e)){var n,r,i,o=b._data(e),a=b._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)b.event.add(t,n,s[n][r])}a.data&&(a.data=b.extend({},a.data))}}function Ft(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!b.support.noCloneEvent&&t[b.expando]){i=b._data(t);for(r in i.events)b.removeEvent(t,r,i.handle);t.removeAttribute(b.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),b.support.html5Clone&&e.innerHTML&&!b.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Nt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){b.fn[e]=function(e){var n,r=0,i=[],o=b(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),b(o[r])[t](n),d.apply(i,n.get());return this.pushStack(i)}});function Ot(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||b.nodeName(o,n)?s.push(o):b.merge(s,Ot(o,n));return n===t||n&&b.nodeName(e,n)?b.merge([e],s):s}function Bt(e){Nt.test(e.type)&&(e.defaultChecked=e.checked)}b.extend({clone:function(e,t,n){var r,i,o,a,s,u=b.contains(e.ownerDocument,e);if(b.support.html5Clone||b.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(b.support.noCloneEvent&&b.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||b.isXMLDoc(e)))for(r=Ot(o),s=Ot(e),a=0;null!=(i=s[a]);++a)r[a]&&Ft(i,r[a]);if(t)if(n)for(s=s||Ot(e),r=r||Ot(o),a=0;null!=(i=s[a]);a++)_t(i,r[a]);else _t(e,o);return r=Ot(o,"script"),r.length>0&&Mt(r,!u&&Ot(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,u,l,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===b.type(o))b.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),u=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[u]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!b.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!b.support.tbody){o="table"!==u||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)b.nodeName(l=o.childNodes[i],"tbody")&&!l.childNodes.length&&o.removeChild(l)
-}b.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),b.support.appendChecked||b.grep(Ot(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===b.inArray(o,r))&&(a=b.contains(o.ownerDocument,o),s=Ot(f.appendChild(o),"script"),a&&Mt(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,u=b.expando,l=b.cache,p=b.support.deleteExpando,f=b.event.special;for(;null!=(n=e[s]);s++)if((t||b.acceptData(n))&&(o=n[u],a=o&&l[o])){if(a.events)for(r in a.events)f[r]?b.event.remove(n,r):b.removeEvent(n,r,a.handle);l[o]&&(delete l[o],p?delete n[u]:typeof n.removeAttribute!==i?n.removeAttribute(u):n[u]=null,c.push(o))}}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+x+")(.*)$","i"),Yt=RegExp("^("+x+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+x+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===b.css(e,"display")||!b.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=b._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=b._data(r,"olddisplay",un(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&b._data(r,"olddisplay",i?n:b.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}b.fn.extend({css:function(e,n){return b.access(this,function(e,n,r){var i,o,a={},s=0;if(b.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=b.css(e,n[s],!1,o);return a}return r!==t?b.style(e,n,r):b.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:nn(this))?b(this).show():b(this).hide()})}}),b.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,u=b.camelCase(n),l=e.style;if(n=b.cssProps[u]||(b.cssProps[u]=tn(l,u)),s=b.cssHooks[n]||b.cssHooks[u],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:l[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(b.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||b.cssNumber[u]||(r+="px"),b.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(l[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{l[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,u=b.camelCase(n);return n=b.cssProps[u]||(b.cssProps[u]=tn(e.style,u)),s=b.cssHooks[n]||b.cssHooks[u],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||b.isNumeric(o)?o||0:a):a},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s.getPropertyValue(n)||s[n]:t,l=e.style;return s&&(""!==u||b.contains(e.ownerDocument,e)||(u=b.style(e,n)),Yt.test(u)&&Ut.test(n)&&(i=l.width,o=l.minWidth,a=l.maxWidth,l.minWidth=l.maxWidth=l.width=u,u=s.width,l.width=i,l.minWidth=o,l.maxWidth=a)),u}):o.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s[n]:t,l=e.style;return null==u&&l&&l[n]&&(u=l[n]),Yt.test(u)&&!zt.test(n)&&(i=l.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),l.left="fontSize"===n?"1em":u,u=l.pixelLeft+"px",l.left=i,a&&(o.left=a)),""===u?"auto":u});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=b.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=b.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=b.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=b.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=b.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(b.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function un(e){var t=o,n=Gt[e];return n||(n=ln(e,t),"none"!==n&&n||(Pt=(Pt||b("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=ln(e,t),Pt.detach()),Gt[e]=n),n}function ln(e,t){var n=b(t.createElement(e)).appendTo(t.body),r=b.css(n[0],"display");return n.remove(),r}b.each(["height","width"],function(e,n){b.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(b.css(e,"display"))?b.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,i),i):0)}}}),b.support.opacity||(b.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=b.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===b.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),b(function(){b.support.reliableMarginRight||(b.cssHooks.marginRight={get:function(e,n){return n?b.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!b.support.pixelPosition&&b.fn.position&&b.each(["top","left"],function(e,n){b.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?b(e).position()[n]+"px":r):t}}})}),b.expr&&b.expr.filters&&(b.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!b.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||b.css(e,"display"))},b.expr.filters.visible=function(e){return!b.expr.filters.hidden(e)}),b.each({margin:"",padding:"",border:"Width"},function(e,t){b.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(b.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;b.fn.extend({serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=b.prop(this,"elements");return e?b.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!b(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Nt.test(e))}).map(function(e,t){var n=b(this).val();return null==n?null:b.isArray(n)?b.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),b.param=function(e,n){var r,i=[],o=function(e,t){t=b.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=b.ajaxSettings&&b.ajaxSettings.traditional),b.isArray(e)||e.jquery&&!b.isPlainObject(e))b.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(b.isArray(t))b.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==b.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}b.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){b.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),b.fn.hover=function(e,t){return this.mouseenter(e).mouseleave(t||e)};var mn,yn,vn=b.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Nn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Cn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=b.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=a.href}catch(Ln){yn=o.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(w)||[];if(b.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(u){var l;return o[u]=!0,b.each(e[u]||[],function(e,u){var c=u(n,r,i);return"string"!=typeof c||a||o[c]?a?!(l=c):t:(n.dataTypes.unshift(c),s(c),!1)}),l}return s(n.dataTypes[0])||!o["*"]&&s("*")}function Mn(e,n){var r,i,o=b.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&b.extend(!0,e,r),e}b.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,u=e.indexOf(" ");return u>=0&&(i=e.slice(u,e.length),e=e.slice(0,u)),b.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&b.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?b("<div>").append(b.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},b.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){b.fn[t]=function(e){return this.on(t,e)}}),b.each(["get","post"],function(e,n){b[n]=function(e,r,i,o){return b.isFunction(r)&&(o=o||i,i=r,r=t),b.ajax({url:e,type:n,dataType:o,data:r,success:i})}}),b.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Nn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Mn(Mn(e,b.ajaxSettings),t):Mn(b.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,u,l,c,p=b.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?b(f):b.event,h=b.Deferred(),g=b.Callbacks("once memory"),m=p.statusCode||{},y={},v={},x=0,T="canceled",N={readyState:0,getResponseHeader:function(e){var t;if(2===x){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===x?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return x||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return x||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>x)for(t in e)m[t]=[m[t],e[t]];else N.always(e[N.status]);return this},abort:function(e){var t=e||T;return l&&l.abort(t),k(0,t),this}};if(h.promise(N).complete=g.add,N.success=N.done,N.error=N.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=b.trim(p.dataType||"*").toLowerCase().match(w)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?80:443))==(mn[3]||("http:"===mn[1]?80:443)))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=b.param(p.data,p.traditional)),qn(An,p,n,N),2===x)return N;u=p.global,u&&0===b.active++&&b.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Cn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(b.lastModified[o]&&N.setRequestHeader("If-Modified-Since",b.lastModified[o]),b.etag[o]&&N.setRequestHeader("If-None-Match",b.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&N.setRequestHeader("Content-Type",p.contentType),N.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)N.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,N,p)===!1||2===x))return N.abort();T="abort";for(i in{success:1,error:1,complete:1})N[i](p[i]);if(l=qn(jn,p,n,N)){N.readyState=1,u&&d.trigger("ajaxSend",[N,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){N.abort("timeout")},p.timeout));try{x=1,l.send(y,k)}catch(C){if(!(2>x))throw C;k(-1,C)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,C=n;2!==x&&(x=2,s&&clearTimeout(s),l=t,a=i||"",N.readyState=e>0?4:0,r&&(w=_n(p,N,r)),e>=200&&300>e||304===e?(p.ifModified&&(T=N.getResponseHeader("Last-Modified"),T&&(b.lastModified[o]=T),T=N.getResponseHeader("etag"),T&&(b.etag[o]=T)),204===e?(c=!0,C="nocontent"):304===e?(c=!0,C="notmodified"):(c=Fn(p,w),C=c.state,y=c.data,v=c.error,c=!v)):(v=C,(e||!C)&&(C="error",0>e&&(e=0))),N.status=e,N.statusText=(n||C)+"",c?h.resolveWith(f,[y,C,N]):h.rejectWith(f,[N,C,v]),N.statusCode(m),m=t,u&&d.trigger(c?"ajaxSuccess":"ajaxError",[N,p,c?y:v]),g.fireWith(f,[N,C]),u&&(d.trigger("ajaxComplete",[N,p]),--b.active||b.event.trigger("ajaxStop")))}return N},getScript:function(e,n){return b.get(e,t,n,"script")},getJSON:function(e,t,n){return b.get(e,t,n,"json")}});function _n(e,n,r){var i,o,a,s,u=e.contents,l=e.dataTypes,c=e.responseFields;for(s in c)s in r&&(n[c[s]]=r[s]);while("*"===l[0])l.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in u)if(u[s]&&u[s].test(o)){l.unshift(s);break}if(l[0]in r)a=l[0];else{for(s in r){if(!l[0]||e.converters[s+" "+l[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==l[0]&&l.unshift(a),r[a]):t}function Fn(e,t){var n,r,i,o,a={},s=0,u=e.dataTypes.slice(),l=u[0];if(e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u[1])for(i in e.converters)a[i.toLowerCase()]=e.converters[i];for(;r=u[++s];)if("*"!==r){if("*"!==l&&l!==r){if(i=a[l+" "+r]||a["* "+r],!i)for(n in a)if(o=n.split(" "),o[1]===r&&(i=a[l+" "+o[0]]||a["* "+o[0]])){i===!0?i=a[n]:a[n]!==!0&&(r=o[0],u.splice(s--,0,r));break}if(i!==!0)if(i&&e["throws"])t=i(t);else try{t=i(t)}catch(c){return{state:"parsererror",error:i?c:"No conversion from "+l+" to "+r}}}l=r}return{state:"success",data:t}}b.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return b.globalEval(e),e}}}),b.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),b.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=o.head||b("head")[0]||o.documentElement;return{send:function(t,i){n=o.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var On=[],Bn=/(=)\?(?=&|$)|\?\?/;b.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=On.pop()||b.expando+"_"+vn++;return this[e]=!0,e}}),b.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,u=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return u||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=b.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,u?n[u]=n[u].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||b.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,On.push(o)),s&&b.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}b.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=b.ajaxSettings.xhr(),b.support.cors=!!Rn&&"withCredentials"in Rn,Rn=b.support.ajax=!!Rn,Rn&&b.ajaxTransport(function(n){if(!n.crossDomain||b.support.cors){var r;return{send:function(i,o){var a,s,u=n.xhr();if(n.username?u.open(n.type,n.url,n.async,n.username,n.password):u.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)u[s]=n.xhrFields[s];n.mimeType&&u.overrideMimeType&&u.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)u.setRequestHeader(s,i[s])}catch(l){}u.send(n.hasContent&&n.data||null),r=function(e,i){var s,l,c,p;try{if(r&&(i||4===u.readyState))if(r=t,a&&(u.onreadystatechange=b.noop,$n&&delete Pn[a]),i)4!==u.readyState&&u.abort();else{p={},s=u.status,l=u.getAllResponseHeaders(),"string"==typeof u.responseText&&(p.text=u.responseText);try{c=u.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,l)},n.async?4===u.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},b(e).unload($n)),Pn[a]=r),u.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+x+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n,r,i=this.createTween(e,t),o=Yn.exec(t),a=i.cur(),s=+a||0,u=1,l=20;if(o){if(n=+o[2],r=o[3]||(b.cssNumber[e]?"":"px"),"px"!==r&&s){s=b.css(i.elem,e,!0)||n||1;do u=u||".5",s/=u,b.style(i.elem,e,s+r);while(u!==(u=i.cur()/a)&&1!==u&&--l)}i.unit=r,i.start=s,i.end=o[1]?s+(o[1]+1)*n:n}return i}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=b.now()}function Zn(e,t){b.each(t,function(t,n){var r=(Qn[t]||[]).concat(Qn["*"]),i=0,o=r.length;for(;o>i;i++)if(r[i].call(e,t,n))return})}function er(e,t,n){var r,i,o=0,a=Gn.length,s=b.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,o=1-r,a=0,u=l.tweens.length;for(;u>a;a++)l.tweens[a].run(o);return s.notifyWith(e,[l,o,n]),1>o&&u?n:(s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:b.extend({},t),opts:b.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=b.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)l.tweens[n].run(1);return t?s.resolveWith(e,[l,t]):s.rejectWith(e,[l,t]),this}}),c=l.props;for(tr(c,l.opts.specialEasing);a>o;o++)if(r=Gn[o].call(l,e,c,l.opts))return r;return Zn(l,c),b.isFunction(l.opts.start)&&l.opts.start.call(e,l),b.fx.timer(b.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function tr(e,t){var n,r,i,o,a;for(i in e)if(r=b.camelCase(i),o=t[r],n=e[i],b.isArray(n)&&(o=n[1],n=e[i]=n[0]),i!==r&&(e[r]=n,delete e[i]),a=b.cssHooks[r],a&&"expand"in a){n=a.expand(n),delete e[r];for(i in n)i in e||(e[i]=n[i],t[i]=o)}else t[r]=o}b.Animation=b.extend(er,{tweener:function(e,t){b.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,u,l,c,p,f=this,d=e.style,h={},g=[],m=e.nodeType&&nn(e);n.queue||(c=b._queueHooks(e,"fx"),null==c.unqueued&&(c.unqueued=0,p=c.empty.fire,c.empty.fire=function(){c.unqueued||p()}),c.unqueued++,f.always(function(){f.always(function(){c.unqueued--,b.queue(e,"fx").length||c.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[d.overflow,d.overflowX,d.overflowY],"inline"===b.css(e,"display")&&"none"===b.css(e,"float")&&(b.support.inlineBlockNeedsLayout&&"inline"!==un(e.nodeName)?d.zoom=1:d.display="inline-block")),n.overflow&&(d.overflow="hidden",b.support.shrinkWrapBlocks||f.always(function(){d.overflow=n.overflow[0],d.overflowX=n.overflow[1],d.overflowY=n.overflow[2]}));for(i in t)if(a=t[i],Vn.exec(a)){if(delete t[i],u=u||"toggle"===a,a===(m?"hide":"show"))continue;g.push(i)}if(o=g.length){s=b._data(e,"fxshow")||b._data(e,"fxshow",{}),"hidden"in s&&(m=s.hidden),u&&(s.hidden=!m),m?b(e).show():f.done(function(){b(e).hide()}),f.done(function(){var t;b._removeData(e,"fxshow");for(t in h)b.style(e,t,h[t])});for(i=0;o>i;i++)r=g[i],l=f.createTween(r,m?s[r]:0),h[r]=s[r]||b.style(e,r),r in s||(s[r]=l.start,m&&(l.end=l.start,l.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}b.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(b.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?b.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=b.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){b.fx.step[e.prop]?b.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[b.cssProps[e.prop]]||b.cssHooks[e.prop])?b.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},b.each(["toggle","show","hide"],function(e,t){var n=b.fn[t];b.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),b.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=b.isEmptyObject(e),o=b.speed(t,n,r),a=function(){var t=er(this,b.extend({},e),o);a.finish=function(){t.stop(!0)},(i||b._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=b.timers,a=b._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&b.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=b._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=b.timers,a=r?r.length:0;for(n.finish=!0,b.queue(this,e,[]),i&&i.cur&&i.cur.finish&&i.cur.finish.call(this),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}b.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){b.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),b.speed=function(e,t,n){var r=e&&"object"==typeof e?b.extend({},e):{complete:n||!n&&t||b.isFunction(e)&&e,duration:e,easing:n&&t||t&&!b.isFunction(t)&&t};return r.duration=b.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in b.fx.speeds?b.fx.speeds[r.duration]:b.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){b.isFunction(r.old)&&r.old.call(this),r.queue&&b.dequeue(this,r.queue)},r},b.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},b.timers=[],b.fx=rr.prototype.init,b.fx.tick=function(){var e,n=b.timers,r=0;for(Xn=b.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||b.fx.stop(),Xn=t},b.fx.timer=function(e){e()&&b.timers.push(e)&&b.fx.start()},b.fx.interval=13,b.fx.start=function(){Un||(Un=setInterval(b.fx.tick,b.fx.interval))},b.fx.stop=function(){clearInterval(Un),Un=null},b.fx.speeds={slow:600,fast:200,_default:400},b.fx.step={},b.expr&&b.expr.filters&&(b.expr.filters.animated=function(e){return b.grep(b.timers,function(t){return e===t.elem}).length}),b.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){b.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,b.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},b.offset={setOffset:function(e,t,n){var r=b.css(e,"position");"static"===r&&(e.style.position="relative");var i=b(e),o=i.offset(),a=b.css(e,"top"),s=b.css(e,"left"),u=("absolute"===r||"fixed"===r)&&b.inArray("auto",[a,s])>-1,l={},c={},p,f;u?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),b.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(l.top=t.top-o.top+p),null!=t.left&&(l.left=t.left-o.left+f),"using"in t?t.using.call(e,l):i.css(l)}},b.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===b.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),b.nodeName(e[0],"html")||(n=e.offset()),n.top+=b.css(e[0],"borderTopWidth",!0),n.left+=b.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-b.css(r,"marginTop",!0),left:t.left-n.left-b.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||o.documentElement;while(e&&!b.nodeName(e,"html")&&"static"===b.css(e,"position"))e=e.offsetParent;return e||o.documentElement})}}),b.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);b.fn[e]=function(i){return b.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?b(a).scrollLeft():o,r?o:b(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return b.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}b.each({Height:"height",Width:"width"},function(e,n){b.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){b.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return b.access(this,function(n,r,i){var o;return b.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?b.css(n,r,s):b.style(n,r,i,s)},n,a?i:t,a,null)}})}),e.jQuery=e.$=b,"function"==typeof define&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return b})})(window);
\ No newline at end of file
index c557e8b17b12d486e7566cc21c5204feadf38c60..2707593dbcd8e4a80c4dcf2e1f1881d1f45458da 100644 (file)
@@ -177,7 +177,7 @@ END
 ;
 if ($settings{'SPEED'} ne 'off') {
 print <<END
-    <script type="text/javascript" src="/include/jquery-1.9.1.min.js"></script>
+    <script type="text/javascript" src="/include/jquery.js"></script>
     <script type="text/javascript">
         var t_current;
         var t_last;
index 62bbf101e724e6f4e44ab72b04f94059c4b76c83..0bb1d6e70d625dbb67b03ef2a3b0007d29ae51f6 100644 (file)
@@ -177,7 +177,7 @@ END
 ;
 if ($settings{'SPEED'} ne 'off') {
 print <<END
-    <script type="text/javascript" src="/include/jquery-1.9.1.min.js"></script>
+    <script type="text/javascript" src="/include/jquery.js"></script>
     <script type="text/javascript">
         var t_current;
         var t_last;
index d85981f83ef9de3a1e702d319b1879520e281c40..92847cac055afa39045322479e8f85f47bbae231 100644 (file)
 'advproxy banned mac clients' => 'Gesperrte MAC-Adressen (eine pro Zeile)',
 'advproxy cache management' => 'Cacheverwaltung',
 'advproxy cache replacement policy' => 'Cache Ersetzungsrichtlinie',
-'advproxy cache-digest' => 'Cache-Digest-Erstellung aktivieren',
 'advproxy chgwebpwd ERROR' => 'F E H L E R :',
 'advproxy chgwebpwd SUCCESS' => 'E R F O L G :',
 'advproxy chgwebpwd change password' => 'Passwort ändern',
 'connection closed' => 'Nicht Verbunden...',
 'connection debugging' => 'Verbindungs-Debugging',
 'connection status and controlc' => 'Verbindungsstatus und -kontrolle:',
-'connection tracking' => 'IPTables-Verbindungsverfolgung',
+'connection tracking' => 'iptables-Verbindungsverfolgung',
 'connection type' => 'Verbindungstyp',
 'connection type is invalid' => 'Verbindungstyp ist ungültig',
 'connections' => 'Verbindungen',
 'download root certificate' => 'Root-Zertifikat herunterladen',
 'dpd action' => 'Aktion für Dead Peer Detection',
 'driver' => 'Treiber',
-'drop input' => 'Verworfene Input-Pakete loggen',
+'drop action' => 'Standardverhalten der (Forward) Firewall in Modus "Blocked"',
+'drop action1' => 'Standardverhalten der (Outgoing) Firewall in Modus "Blocked"',
+'drop action2' => 'Standardverhalten der (Input) Firewall',
+'drop forward' => 'Verworfene (Forward) Firewall-Pakete loggen',
+'drop input' => 'Verworfene Input Pakete loggen',
 'drop newnotsyn' => 'Verworfene New Not Syn Pakete loggen',
-'drop output' => 'Verworfene Output-Pakete loggen',
-'drop portscan' => 'Verworfene Portscan-Pakete loggen',
-'drop proxy' => 'Alle Pakete verwerfen, die nicht direkt an den Proxy gerichtet sind',
-'drop samba' => 'Alle Microsoft-Pakete verwerfen, Ports 135,137,138,139,445,1025',
+'drop outgoing' => 'Verworfene (Outgoing) Firewall-Pakete loggen',
+'drop portscan' => 'Verworfene Portscan Pakete loggen',
+'drop proxy' => 'Alle Pakete verwerfen die nicht direkt an den Proxy gerichtet sind',
+'drop samba' => 'Alle Microsoft Pakete verwerfen, Ports 135,137,138,139,445,1025',
 'drop wirelessforward' => 'Verworfene Wireless Forward Pakete loggen',
 'drop wirelessinput' => 'Verworfene Wireless Input Pakete loggen',
 'dst port' => 'Ziel-Port',
 'fixed ip lease removed' => 'Feste IP-Zuordnung gelöscht',
 'force update' => 'Aktualisierung erzwingen',
 'force user' => 'Standardbenutzer für das UNIX Dateisystem',
+'forward firewall' => 'Firewall',
 'forwarding rule added' => 'Weiterleitungsregel hinzugefügt. Starte Weiterleitung neu',
 'forwarding rule removed' => 'Weiterleitungsregel entfernt. Starte Weiterleitung neu',
 'forwarding rule updated' => 'Weiterleitungsregel aktualisiert; starte Weiterleitung neu',
 'from email user' => 'Von Email Benutzer',
 'from warn email bad' => 'Von Email Adresse ist nicht gültig',
 'fw blue' => 'Firewall-Optionen für das Blaue Interface',
+'fw default drop' => 'Firewall Policy',
 'fw logging' => 'Firewall-Logging',
+'fw settings' => 'Firewall-Einstellungen',
+'fw settings color' => 'Farben in Regeltabelle anzeigen',
+'fw settings dropdown' => 'Alle Netzwerke auf Regelerstellungsseite anzeigen',
+'fw settings remark' => 'Anmerkungen in Regeltabelle anzeigen',
+'fw settings ruletable' => 'Leere Regeltabellen anzeigen',
+'fwdfw ACCEPT' => 'Akzeptieren (ACCEPT)',
+'fwdfw DROP' => 'Verwerfen (DROP)',
+'fwdfw MODE1' => 'Alle Pakete verwerfen',
+'fwdfw MODE2' => 'Alle Pakete annehmen',
+'fwdfw REJECT' => 'Verweigern (REJECT)',
+'fwdfw action' => 'Aktion',
+'fwdfw additional' => 'Weitere Einstellungen',
+'fwdfw addrule' => 'Regel hinzufügen/ändern:',
+'fwdfw all icmp' => 'Alle ICMP-Typen',
+'fwdfw change' => 'Aktualisieren',
+'fwdfw copy' => 'Kopieren',
+'fwdfw delete' => 'Löschen',
+'fwdfw dnat' => 'Destination-NAT (Port-Weiterleitung)',
+'fwdfw dnat error' => 'Für Destination-NAT muss ein einzelner Host als Ziel ausgewählt werden. Gruppen oder Netzwerke sind nicht erlaubt',
+'fwdfw dnat porterr' => 'Für NAT-Regeln muss ein einzelner Port oder Portbereich angegeben werden',
+'fwdfw edit' => 'Bearbeiten',
+'fwdfw err nosrc' => 'Keine Quelle ausgewählt',
+'fwdfw err nosrcip' => 'Bitte Quell-IP-Adresse angeben',
+'fwdfw err notgt' => 'Kein Ziel ausgewählt',
+'fwdfw err notgtip' => 'Bitte Ziel-IP-Adresse angeben',
+'fwdfw err prot_port' => 'Bei dem gewählten Protokoll sind Quell- und Zielport nicht erlaubt',
+'fwdfw err prot_port1' => 'Bei Nutzung von Quell- oder Zielport muss als Protokoll TCP oder UDP gewählt werden.',
+'fwdfw err remark' => 'Die Bemerkung enthält ungültige Zeichen',
+'fwdfw err ruleexists' => 'Eine identische Regel existiert bereits',
+'fwdfw err same' => 'Quelle und Ziel sind identisch',
+'fwdfw err samesub' => 'Quell- und Ziel-IP-Adresse befinden sich im selben Subnetz',
+'fwdfw err src_addr' => 'Quell-MAC/IP-Adresse ungültig',
+'fwdfw err tgt_addr' => 'Ungültige Ziel-IP-Adresse',
+'fwdfw err tgt_grp' => 'Die Ziel-Dienstgruppe ist leer',
+'fwdfw err tgt_mac' => 'MAC-Adressen können nicht als Ziel defininert werden',
+'fwdfw err tgt_port' => 'Ungültiger Zielport',
+'fwdfw err time' => 'Es muss mindestens ein Tag ausgewählt werden',
+'fwdfw external port nat' => 'Externer Port (NAT)',
+'fwdfw final_rule' => 'Letzte Regel: ',
+'fwdfw from' => 'Von:',
+'fwdfw hint ip1' => 'Die zuletzt erzeugte Regel mag eventuell niemals zutreffen, da sich Quelle und Ziel überlappen.',
+'fwdfw hint ip2' => 'Bitte überprüfen Sie, ob diese Regel Sinn macht: ',
+'fwdfw ipsec network' => 'IPsec-Netzwerke:',
+'fwdfw log rule' => 'Logging aktivieren',
+'fwdfw man port' => 'Port(s):',
+'fwdfw menu' => 'Firewallregeln',
+'fwdfw movedown' => 'Herunter',
+'fwdfw moveup' => 'Herauf',
+'fwdfw natport used' => 'Der eingegebene Port wird bereits von einer anderen DNAT-Regel benutzt.',
+'fwdfw newrule' => 'Neue Regel erstellen',
+'fwdfw p2p txt' => 'P2P-Netzwerke erlauben/verbieten.',
+'fwdfw pol allow' => 'Zugelassen',
+'fwdfw pol block' => 'Blockiert',
+'fwdfw pol text' => 'Firewall-Standardverhalten für Verbindungen aus lokalen Netzwerken: Alle Verbindungen können entweder zugelassen oder geblockt werden, wenn keine Ausnahmeregel zutrifft. "Blockiert" trennt ebenfalls die Kommunikation zwischen den lokalen Netzwerken.',
+'fwdfw pol text1' => 'Firewall-Standardverhalten für von der Firewall selbst initiierte Verbindungen.',
+'fwdfw pol title' => 'Standardverhalten der Firewall',
+'fwdfw prot41' => 'IPv6 Encapsulation (Protokoll 41)',
+'fwdfw prot41 short' => 'IPv6 Encap',
+'fwdfw red' => 'ROT',
+'fwdfw reread' => 'Änderungen übernehmen',
+'fwdfw rule action' => 'Regelaktion:',
+'fwdfw rule activate' => 'Regel aktivieren',
+'fwdfw rulepos' => 'Regelposition',
+'fwdfw rules' => 'Regeln',
+'fwdfw snat' => 'Source-NAT',
+'fwdfw source' => 'Quelle',
+'fwdfw sourceip' => 'Quelladresse (IP/MAC-Adresse oder Netzwerk):',
+'fwdfw std network' => 'Standard Netzwerke:',
+'fwdfw target' => 'Ziel',
+'fwdfw targetip' => 'Zieladresse (IP/MAC-Adresse oder Netzwerk):',
+'fwdfw till' => 'Bis:',
+'fwdfw time' => 'Zeitrahmen',
+'fwdfw timeframe' => 'Zeitrahmen hinzufügen',
+'fwdfw toggle' => 'Aktivieren oder deaktivieren',
+'fwdfw togglelog' => 'Log aktivieren oder deaktivieren',
+'fwdfw use nat' => 'Network Address Translation (NAT) benutzen',
+'fwdfw use srcport' => 'Quellport:',
+'fwdfw use srv' => 'Zielport:',
+'fwdfw useless rule' => 'Diese Regel ist nicht sinnvoll.',
+'fwdfw wd_fri' => 'Fr',
+'fwdfw wd_mon' => 'Mo',
+'fwdfw wd_sat' => 'Sa',
+'fwdfw wd_sun' => 'So',
+'fwdfw wd_thu' => 'Do',
+'fwdfw wd_tue' => 'Di',
+'fwdfw wd_wed' => 'Mi',
+'fwdfw xt access' => 'Input',
+'fwhost addgrp' => 'Neue Gruppe hinzufügen:',
+'fwhost addgrpname' => 'Gruppenname:',
+'fwhost addhost' => 'Neuen Host hinzufügen:',
+'fwhost addnet' => 'Neues Netzwerk hinzufügen:',
+'fwhost addrule' => 'Regel hinzufügen/ändern:',
+'fwhost addservice' => 'Neuen Dienst hinzufügen:',
+'fwhost addservicegrp' => 'Neue Dienstgruppe hinzufügen:',
+'fwhost any' => 'Alle',
+'fwhost attention' => 'ACHTUNG',
+'fwhost back' => 'Zurück',
+'fwhost blue' => 'Blau',
+'fwhost ccdhost' => 'OpenVPN-Clients:',
+'fwhost ccdnet' => 'OpenVPN-Netzwerke:',
+'fwhost change' => 'Ändern',
+'fwhost changeremark' => 'Es wurde nur die Bemerkung angepasst.',
+'fwhost cust addr' => 'Hosts:',
+'fwhost cust grp' => 'Gruppen:',
+'fwhost cust net' => 'Netzwerke:',
+'fwhost cust service' => 'Dienste:',
+'fwhost cust srvgrp' => 'Dienstgruppen',
+'fwhost deleted' => 'Gelöscht',
+'fwhost empty' => 'Keine Regeln definiert',
+'fwhost err addr' => 'IP-Adresse oder Subnetzmaske ungültig',
+'fwhost err addrgrp' => 'Bitte Gruppennamen angeben',
+'fwhost err empty' => 'Bitte alle Felder ausfüllen',
+'fwhost err emptytable' => 'Keine Einträge in Gruppe',
+'fwhost err groupempty' => 'Die gewählte Gruppe ist leer',
+'fwhost err grpexist' => 'Die Gruppe existiert bereits',
+'fwhost err hostexist' => 'Ein Host mit diesem Namen existiert bereits',
+'fwhost err hostorip' => 'Name oder IP-Adresse ungültig',
+'fwhost err ip' => 'IP-Adresse ungültig',
+'fwhost err ipcheck' => 'Diese IP-Adresse wird bereits verwendet',
+'fwhost err ipmac' => 'Ungültige IP/MAC-Addresse',
+'fwhost err ipwithsub' => 'Bitte nur eine IP-Adresse (ohne Subnetzmaske) eingeben',
+'fwhost err isccdhost' => 'Dieser Name wird bereits für einen OpenVPN-Host verwendet',
+'fwhost err isccdiphost' => 'Diese IP-Adresse wird bereits für einen OpenVPN-Host verwendet',
+'fwhost err isccdipnet' => 'Diese IP-Adresse wird bereits für einen OpenVPN-Netzwerk verwendet',
+'fwhost err isccdnet' => 'Dieser Name wird bereits für einen OpenVPN-Netzwerk verwendet',
+'fwhost err isingrp' => 'Dieser Eintrag existiert bereits in der Gruppe',
+'fwhost err mac' => 'Ungültige MAC-Adresse',
+'fwhost err name' => 'Ungültiger Name. Erlaubte Zeichen: Klein- und Großbuchstaben, Leerzeichen und Bindestrich.',
+'fwhost err name1' => 'Der Name muss ausgefüllt sein',
+'fwhost err net' => 'Netzwerk/IP-Adresse existiert bereits',
+'fwhost err netexist' => 'Ein Netz mit diesem Namen existiert bereits',
+'fwhost err partofnet' => 'Dieses Netzwerk ist ein Subnetz eines bereits existierenden Netzwerks',
+'fwhost err port' => 'Port muss gefüllt sein',
+'fwhost err remark' => 'Ungültige Bemerkung. Erlaubte Zeichen: Klein- und Großbuchstaben, Bindestrich, Unterstrich, Runde Klammern, Semikolon, Punkt.',
+'fwhost err srv exists' => 'Ein Service mit diesem Namen existiert bereits',
+'fwhost err srvexist' => 'Dieser Dienst ist bereits in der Gruppe',
+'fwhost err sub32' => 'Bitte einen einzelnen Host hinzufügen, keine Netzwerke',
+'fwhost green' => 'Grün',
+'fwhost hint' => 'Hinweis',
+'fwhost hosts' => 'Firewall-Hosts',
+'fwhost icmptype' => 'ICMP-Typ:',
+'fwhost ip_mac' => 'IP/MAC-Adresse',
+'fwhost ipadr' => 'IP-Adresse:',
+'fwhost ipsec host' => 'IPsec-Clients:',
+'fwhost ipsec net' => 'IPsec-Netzwerke:',
+'fwhost menu' => 'Firewallgruppen',
+'fwhost netaddress' => 'Netzwerkadresse',
+'fwhost newgrp' => 'Netzwerk-/Hostgruppen',
+'fwhost newhost' => 'Hosts',
+'fwhost newnet' => 'Netzwerke',
+'fwhost newservice' => 'Dienst',
+'fwhost newservicegrp' => 'Dienstgruppen',
+'fwhost orange' => 'Orange',
+'fwhost ovpn_n2n' => 'OpenVPN Net-to-Net',
+'fwhost port' => 'Port(s)',
+'fwhost prot' => 'Protokoll',
+'fwhost reread' => 'Die Firewallregeln müssen neu eingelesen werden.',
+'fwhost reset' => 'Abbrechen',
+'fwhost services' => 'Dienste',
+'fwhost srv_name' => 'Dienstname',
+'fwhost stdnet' => 'Standard-Netzwerke:',
+'fwhost type' => 'Typ',
+'fwhost used' => 'Genutzt',
+'fwhost welcome' => 'Hier können einzelne Hosts, Netzwerke oder Dienste zu Gruppen zusammengefasst werden, was das erstellen von Firewallregeln einfacher und schneller macht.',
+'fwhost wo subnet' => '(Ohne Subnetz)',
 'gateway' => 'Gateway',
 'gateway ip' => 'Gateway-IP',
 'gen static key' => 'Statischen Schlüssel erzeugen',
 'iptable rules' => 'IPTable-Regeln',
 'iptmangles' => 'IPTable Mangles',
 'iptnats' => 'IPTable Network Address Translation',
-'ipts' => 'IPTables',
+'ipts' => 'iptables',
 'isdn' => 'ISDN',
 'isdn settings' => 'Zusätzliche ISDN-Einstellungen:',
 'isdn1' => 'Einfaches ISDN',
 'network traffic graphs others' => 'Netzwerk (sonstige)',
 'network updated' => 'Benutzerdefiniertes Netzwerk aktualisiert',
 'networks settings' => 'Firewall - Netzwerkeinstellungen',
-'new optionsfw later' => 'Ihre Modifikation(en) wird (werden) beim nächsten Neustart aktiv werden',
+'new optionsfw later' => 'Einige Einstellungen werden erst nach einem Neustart aktiv',
 'new optionsfw must boot' => 'Sie müssen Ihren IPFire neu starten',
 'newer' => 'Neuer',
 'next' => 'Nächster',
 'optional at cmd' => 'zusätzlicher Modembefehl',
 'optional data' => '3. Optionale Einstellungen',
 'options' => 'Optionen',
-'options fw' => 'Firewall Optionen',
+'options fw' => 'Firewall-Optionen',
 'optionsfw portlist hint' => 'Die Liste der Ports muss durch ein Komma getrennt werden (z.B. 137,138). Sie können maximal bis zu 15 Ports pro Protokoll angeben.',
 'optionsfw warning' => 'Verändern dieser Optionen bedingt einen Neustart der Firewall',
 'or' => 'oder',
 'outgoing firewall mode1' => 'In diesem Modus werden nur Verbindungen nach den oben definierten Regeln zugelassen.',
 'outgoing firewall mode2' => 'In diesem Modus werden sämtliche Verbindungen erlaubt, bis auf die oben definierten Block-Regeln.',
 'outgoing firewall outgoing firewall reserved groupname' => 'Bitte einen anderen Gruppennamen verwenden, dieser ist ein reserviertes Wort.',
-'outgoing firewall p2p allow' => 'P2P-Protokoll ist erlaubt!',
-'outgoing firewall p2p deny' => 'P2P-Protokoll ist gesperrt!',
+'outgoing firewall p2p allow' => 'P2P-Protokollnutzung ist erlaubt',
+'outgoing firewall p2p deny' => 'P2P-Protokollnutzung ist gesperrt',
 'outgoing firewall p2p description 1' => 'Das Symbol',
 'outgoing firewall p2p description 2' => 'bedeutet, dass das P2P-Protokoll erlaubt wird oder',
 'outgoing firewall p2p description 3' => 'das P2P-Protokoll gesperrt wird.',
 'ovpn_processprioVH' => 'Sehr Hoch',
 'ovpnstatus log' => 'OVPN-Status-Log',
 'ovpnsys log' => 'OVPN-System-Log',
+'p2p block' => 'P2P-Block',
 'package failed to install' => 'Programmpaket konnte nicht installiert werden.',
 'pagerefresh' => 'Seite wird aktualisiert. Bitte warten.',
 'pakfire accept all' => 'Möchten Sie der Installation aller Pakete zustimmen?',
 'reconnect' => 'Neu Verbinden',
 'reconnection' => 'Wiederverbindung',
 'red' => 'Internet',
+'red1' => 'ROT',
 'references' => 'Referenzen',
 'refresh' => 'Aktualisieren',
 'refresh index page while connected' => 'Aktualisere index.cgi Seite während der Verbindung',
 'wlanap encryption' => 'Verschlüsselung',
 'wlanap informations' => 'Informationen',
 'wlanap interface' => 'Interface übernehmen',
-'wlanap invalid wpa' => 'Ungültige Länge in WPA-Passphrase. Muss zwischen 8 und 63 ASCII-Zeichen lang sein.',
+'wlanap invalid wpa' => 'Ungültige Länge in WPA-Passphrase. Muss zwischen 8 und 63 Zeichen lang sein.',
 'wlanap link dhcp' => 'Wireless Lan DHCP-Einstellungen',
 'wlanap link wireless' => 'Wireless Lan Clients freischalten',
 'wlanap no interface' => 'Ausgewähltes Interface ist keine WLAN-Karte!',
index 85db8677d83be4cd1f240b0fa7e327099236cffa..8c935865eacf57596dc31e1f27f8b737fc962dff 100644 (file)
@@ -591,4 +591,10 @@ char *de_tr[] = {
 "Beim Herunterladen ist ein Fehler aufgetreten!",
 /* TR_DHCP_FORCE_MTU */
 "DHCP MTU setzen:",
+/* TR_IDENTIFY */
+"Identifizieren",
+/* TR_IDENTIFY_SHOULD_BLINK */
+"Die Leds dieses Netzwerkports sollten jetzt blinken ...",
+/* TR_IDENTIFY_NOT_SUPPORTED */
+"Dieser Netzwerkport untestützt die Funktion leider nicht.",
 };
index d6ccfafb968bec966621f6088af77ade256e2ad7..2d36cdbadfa51f21eeef2d11d3819fc84683efb7 100644 (file)
 'advproxy banned mac clients' => 'Banned MAC addresses (one per line)',
 'advproxy cache management' => 'Cache management',
 'advproxy cache replacement policy' => 'Cache replacement policy',
-'advproxy cache-digest' => 'Enable Cache-Digest Generation',
 'advproxy chgwebpwd ERROR' => 'E R R O R :',
 'advproxy chgwebpwd SUCCESS' => 'S U C C E S S :',
 'advproxy chgwebpwd change password' => 'Change password',
 'connection closed' => 'Not connected...',
 'connection debugging' => 'Connection debugging',
 'connection status and controlc' => 'Connection status and control:',
-'connection tracking' => 'IPTables Connection Tracking',
+'connection tracking' => 'iptables Connection Tracking',
 'connection type' => 'Connection Type',
 'connection type is invalid' => 'Connection type is invalid.',
 'connections' => 'Connections',
 'download root certificate' => 'Download root certificate',
 'dpd action' => 'Dead Peer Detection action',
 'driver' => 'Driver',
+'drop action' => 'Default behaviour of (forward) firewall in mode "Blocked"',
+'drop action1' => 'Default behaviour of (outgoing) firewall in mode "Blocked"',
+'drop action2' => 'Default behaviour of (input) firewall',
+'drop forward' => 'Log dropped forward packets',
 'drop input' => 'Log dropped input packets',
 'drop newnotsyn' => 'Log dropped new not syn packets',
-'drop output' => 'Log dropped output packets',
+'drop outgoing' => 'Log dropped outgoing packets',
 'drop portscan' => 'Log dropped portscan packets',
 'drop proxy' => 'Drop all packets not addressed to proxy',
 'drop samba' => 'Drop all Microsoft ports 135,137,138,139,445,1025',
 'fixed ip lease removed' => 'Fixed IP lease removed',
 'force update' => 'Force update',
 'force user' => 'force all new file to user',
+'forward firewall' => 'Firewall',
 'forwarding rule added' => 'Forwarding rule added; restarting forwarder',
 'forwarding rule removed' => 'Forwarding rule removed; restarting forwarder',
 'forwarding rule updated' => 'Forwarding rule updated; restarting forwarder',
 'from email user' => 'From e-mail user',
 'from warn email bad' => 'From e-mail address is not valid',
 'fw blue' => 'Firewall options for BLUE interface',
+'fw default drop' => 'Firewall policy',
 'fw logging' => 'Firewall logging',
+'fw settings' => 'Firewall settings',
+'fw settings color' => 'Show colors in ruletable',
+'fw settings dropdown' => 'Show all networks on rulecreation site',
+'fw settings remark' => 'Show remarks in ruletable',
+'fw settings ruletable' => 'Show empty ruletables',
+'fwdfw ACCEPT' => 'ACCEPT',
+'fwdfw DROP' => 'DROP',
+'fwdfw MODE1' => 'Drop all packets',
+'fwdfw MODE2' => 'Accept all packets',
+'fwdfw REJECT' => 'REJECT',
+'fwdfw action' => 'Action',
+'fwdfw additional' => 'Additional settings',
+'fwdfw addrule' => 'Add/Edit rule:',
+'fwdfw all icmp' => 'All ICMP types',
+'fwdfw change' => 'Update',
+'fwdfw copy' => 'Copy',
+'fwdfw delete' => 'Delete',
+'fwdfw dnat' => 'Destination NAT (Port forwarding)',
+'fwdfw dnat error' => 'You have to select a single host for DNAT. Groups or networks are not allowed.',
+'fwdfw dnat porterr' => 'You have to select a single port or portrange (tcp/udp) for NAT',
+'fwdfw edit' => 'Edit',
+'fwdfw err nosrc' => 'No source selected.',
+'fwdfw err nosrcip' => 'Please provide a source IP address.',
+'fwdfw err notgt' => 'No destination selected.',
+'fwdfw err notgtip' => 'Please provide a destination IP address.',
+'fwdfw err prot_port' => 'Source- or targetport are not allowed with selected protocol',
+'fwdfw err prot_port1' => 'When using Source- or targetport you have to select TCP or UDP for protocol',
+'fwdfw err remark' => 'Invalid characters in remark.',
+'fwdfw err ruleexists' => 'This rule already exists.',
+'fwdfw err same' => 'Source and destination are identical.',
+'fwdfw err samesub' => 'Source and destination IP addresses are from the same subnet.',
+'fwdfw err src_addr' => 'Invalid source MAC/IP address.',
+'fwdfw err tgt_addr' => 'Invalid destination IP address.',
+'fwdfw err tgt_grp' => 'The destination service group is empty',
+'fwdfw err tgt_mac' => 'A MAC addresses cannot be used as destination.',
+'fwdfw err tgt_port' => 'Invalid destination port.',
+'fwdfw err time' => 'You have to select at least one day.',
+'fwdfw external port nat' => 'External port (NAT)',
+'fwdfw final_rule' => 'Last rule: ',
+'fwdfw from' => 'From:',
+'fwdfw hint ip1' => 'The last generated rule may never match, because source and destination subnets may overlap.',
+'fwdfw hint ip2' => 'Please double-check if this rule makes sense: ',
+'fwdfw ipsec network' => 'IPsec networks:',
+'fwdfw log rule' => 'Log rule',
+'fwdfw man port' => 'Port(s):',
+'fwdfw menu' => 'Firewall Rules',
+'fwdfw movedown' => 'Move down',
+'fwdfw moveup' => 'Move up',
+'fwdfw natport used' => 'The given port for NAPT is already in use by an other DNAT rule.',
+'fwdfw newrule' => 'New rule',
+'fwdfw p2p txt' => 'Grant/deny access to P2P networks.',
+'fwdfw pol allow' => 'Allowed',
+'fwdfw pol block' => 'Blocked',
+'fwdfw pol text' => 'Sets the default firewall behaviour for connections from local networks. You may either allow all new connections or block them by default. Connections between the local networks are also blocked in the latter mode.',
+'fwdfw pol text1' => 'Sets the default firewall behaviour for connections initiated by the firewall itself. Attention! You may lock yourself out.',
+'fwdfw pol title' => 'Default firewall behaviour',
+'fwdfw prot41' => 'IPv6 Encapsulation (Protocol 41)',
+'fwdfw prot41 short' => 'IPv6 Encap',
+'fwdfw red' => 'RED',
+'fwdfw reread' => 'Apply changes',
+'fwdfw rule action' => 'Rule action:',
+'fwdfw rule activate' => 'Activate rule',
+'fwdfw rulepos' => 'Rule position',
+'fwdfw rules' => 'Rules',
+'fwdfw snat' => 'Source NAT',
+'fwdfw source' => 'Source',
+'fwdfw sourceip' => 'Source address (MAC/IP address or network):',
+'fwdfw std network' => 'Standard networks:',
+'fwdfw target' => 'Destination',
+'fwdfw targetip' => 'Destination address (MAC/IP address or network):',
+'fwdfw till' => 'Until:',
+'fwdfw time' => 'Time Constraints',
+'fwdfw timeframe' => 'Use time constraints',
+'fwdfw toggle' => 'Activate or deactivate',
+'fwdfw togglelog' => 'Activate or deactivate logging',
+'fwdfw use nat' => 'Use Network Address Translation (NAT)',
+'fwdfw use srcport' => 'Source port:',
+'fwdfw use srv' => 'Destination port:',
+'fwdfw useless rule' => 'This rule is useless.',
+'fwdfw wd_fri' => 'Fri',
+'fwdfw wd_mon' => 'Mon',
+'fwdfw wd_sat' => 'Sat',
+'fwdfw wd_sun' => 'Sun',
+'fwdfw wd_thu' => 'Thu',
+'fwdfw wd_tue' => 'Tue',
+'fwdfw wd_wed' => 'Wed',
+'fwdfw xt access' => 'Input',
+'fwhost addgrp' => 'Add new network/host group:',
+'fwhost addgrpname' => 'Group name:',
+'fwhost addhost' => 'Add new host:',
+'fwhost addnet' => 'Add new network:',
+'fwhost addrule' => 'Add/edit rule:',
+'fwhost addservice' => 'Add service:',
+'fwhost addservicegrp' => 'Add new service group:',
+'fwhost any' => 'Any',
+'fwhost attention' => 'ATTENTION',
+'fwhost back' => 'Back',
+'fwhost blue' => 'Blue',
+'fwhost ccdhost' => 'OpenVPN clients:',
+'fwhost ccdnet' => 'OpenVPN networks:',
+'fwhost change' => 'Modify',
+'fwhost changeremark' => 'You modified just the remark',
+'fwhost cust addr' => 'Hosts:',
+'fwhost cust grp' => 'Network/Host Groups:',
+'fwhost cust net' => 'Networks:',
+'fwhost cust service' => 'Services:',
+'fwhost cust srvgrp' => 'Service Groups:',
+'fwhost deleted' => 'Deleted',
+'fwhost empty' => 'No rules defined',
+'fwhost err addr' => 'Invalid IP address or subnet',
+'fwhost err addrgrp' => 'Please provide a group name',
+'fwhost err empty' => 'Please fill in all input fields',
+'fwhost err emptytable' => 'No entries in this group',
+'fwhost err groupempty' => 'The selected group is empty',
+'fwhost err grpexist' => 'Group already exists',
+'fwhost err hostexist' => 'A host with the same name already exists',
+'fwhost err hostorip' => 'Invalid name or IP address',
+'fwhost err ip' => 'IP address invalid',
+'fwhost err ipcheck' => 'This IP address is already in use',
+'fwhost err ipmac' => 'IP/MAC address invalid',
+'fwhost err ipwithsub' => 'Please provide only an IP address (without subnet mask)',
+'fwhost err isccdhost' => 'This name is already used by an OpenVPN client connection',
+'fwhost err isccdiphost' => 'This IP address is already used by an OpenVPN client connection',
+'fwhost err isccdipnet' => 'This IP address is already used by an OpenVPN network connection',
+'fwhost err isccdnet' => 'This name is already used by an OpenVPN network',
+'fwhost err isingrp' => 'This entry already exists in the group',
+'fwhost err mac' => 'Invalid MAC address',
+'fwhost err name' => 'Invalid name. Allowed characters: Upper- and lowercase letters, digits, space and dash.',
+'fwhost err name1' => 'Empty name.',
+'fwhost err net' => 'Network/IP address already exists',
+'fwhost err netexist' => 'A network with the same name already exists',
+'fwhost err partofnet' => 'The network is a subnet of an already existing network.',
+'fwhost err port' => 'Port is empty',
+'fwhost err remark' => 'Invalid remark. Allowed characters: Upper- and lowercase letters, digits, space, dash, braces, semicolon, pipe and dot.',
+'fwhost err srv exists' => 'A service with the same name already exists',
+'fwhost err srvexist' => 'This service already exists in the group',
+'fwhost err sub32' => 'Please add a single host, not a network.',
+'fwhost green' => 'Green',
+'fwhost hint' => 'Note',
+'fwhost hosts' => 'Firewall Hosts',
+'fwhost icmptype' => 'ICMP type:',
+'fwhost ip_mac' => 'IP/MAC address',
+'fwhost ipadr' => 'IP address:',
+'fwhost ipsec host' => 'IPsec clients:',
+'fwhost ipsec net' => 'IPsec networks:',
+'fwhost menu' => 'Firewall Groups',
+'fwhost netaddress' => 'Network address',
+'fwhost newgrp' => 'Network/Host Groups',
+'fwhost newhost' => 'Hosts',
+'fwhost newnet' => 'Networks',
+'fwhost newservice' => 'Services',
+'fwhost newservicegrp' => 'Service Groups',
+'fwhost orange' => 'Orange',
+'fwhost ovpn_n2n' => 'OpenVPN Net-to-Net',
+'fwhost port' => 'Port(s)',
+'fwhost prot' => 'Protocol',
+'fwhost reread' => 'Firewall rules need to be updated.',
+'fwhost reset' => 'Cancel',
+'fwhost services' => 'Services:',
+'fwhost srv_name' => 'Service name',
+'fwhost stdnet' => 'Standard networks:',
+'fwhost type' => 'Type',
+'fwhost used' => 'Used',
+'fwhost welcome' => 'Over here, you can group single hosts, networks and services together, which will creating new rules more easy and faster.',
+'fwhost wo subnet' => '(without subnet)',
 'g.dtm' => 'TO BE REMOVED',
 'g.lite' => 'TO BE REMOVED',
 'gateway' => 'Gateway',
 'iptable rules' => 'IPTable rules',
 'iptmangles' => 'IPTable Mangles',
 'iptnats' => 'IPTable Network Address Translation',
-'ipts' => 'IPTables',
+'ipts' => 'iptables',
 'isdn' => 'ISDN',
 'isdn settings' => 'Additional ISDN settings:',
 'isdn1' => 'Single ISDN',
 'network traffic graphs others' => 'Network (others)',
 'network updated' => 'Custom Network updated',
 'networks settings' => 'Firewall - Network settings',
-'new optionsfw later' => 'Your modification(s) will be active on next restart',
+'new optionsfw later' => 'Some options need a reboot to take effect',
 'new optionsfw must boot' => 'You must reboot your IPFire',
 'newer' => 'Newer',
 'next' => 'next',
 'outgoing firewall mode1' => 'Using this mode, only connections based on the defined rules are allowed.',
 'outgoing firewall mode2' => 'Using this mode, all connections are allowed despited off the defined ones.',
 'outgoing firewall outgoing firewall reserved groupname' => 'Please use another group name, this name is reserved.',
-'outgoing firewall p2p allow' => 'p2p protocol is allowed',
-'outgoing firewall p2p deny' => 'p2p protocol is denied',
+'outgoing firewall p2p allow' => 'Using the P2P protocol is allowed',
+'outgoing firewall p2p deny' => 'Using the P2P protocol is forbidden',
 'outgoing firewall p2p description 1' => 'The button',
 'outgoing firewall p2p description 2' => 'means that the p2p protocol is allowed or',
 'outgoing firewall p2p description 3' => 'that the p2p protocol is denied.',
 'ovpn_processprioVH' => 'Very high',
 'ovpnstatus log' => 'OVPN-Status-Log',
 'ovpnsys log' => 'OVPN-System-Log',
+'p2p block' => 'P2P block',
 'package failed to install' => 'Package failed to install.',
 'pagerefresh' => 'Page is beeing refreshed, please wait.',
 'pakfire accept all' => 'Do you want to install all packages?',
 'profile saved' => 'Profile saved: ',
 'profiles' => 'Profiles:',
 'proto' => 'Proto',
-'protocol' => 'Protocol:',
+'protocol' => 'Protocol',
 'proxy' => 'Proxy',
 'proxy access graphs' => 'Proxy access graphs',
 'proxy admin password' => 'Cache administrator password',
 'reconnect' => 'Reconnect',
 'reconnection' => 'Reconnection',
 'red' => 'Internet',
+'red1' => 'RED',
 'references' => 'References',
 'refresh' => 'Refresh',
 'refresh index page while connected' => 'Refresh index.cgi page while connected',
 'wlanap encryption' => 'Encryption',
 'wlanap informations' => 'Informations',
 'wlanap interface' => 'Select interface',
-'wlanap invalid wpa' => 'Invalid length in WPA Passphrase. Must be between 8 and 63 ascii characters.',
+'wlanap invalid wpa' => 'Invalid length in WPA Passphrase. Must be between 8 and 63 characters.',
 'wlanap link dhcp' => 'Wireless lan DHCP configuration',
 'wlanap link wireless' => 'Activate wireless lan clients',
 'wlanap no interface' => 'Selected interface is not a wirless lan card!',
index 87f8d2fa9158ff6a4b06d1c7d2dc973b253a1047..12ac4b5578b9509ca93fe7545ec4a4d1aa3cfa60 100644 (file)
@@ -587,4 +587,10 @@ char *en_tr[] = {
 "Error while downloading!",
 /* TR_DHCP_FORCE_MTU */
 "Force DHCP mtu:",
+/* TR_IDENTIFY */
+"Identify",
+/* TR_IDENTIFY_SHOULD_BLINK */
+"Selected port should blink now ...",
+/* TR_IDENTIFY_NOT_SUPPORTED */
+"Function is not supported by this port.",
 };
index 1c43e33b17f4803e0c6472e3e94dd23732e4c7d3..edb8be0b529bee84fa8c45f0c474f401a07f5dd4 100644 (file)
 'connection closed' => 'No conectado…',
 'connection debugging' => 'Depurado de conexión',
 'connection status and controlc' => 'Control y Status de conexión:',
-'connection tracking' => 'Rastreo de conexión IPTables',
+'connection tracking' => 'Rastreo de conexión iptables',
 'connection type' => 'Tipo de conexión',
 'connection type is invalid' => 'Tipo de conexión no es válido',
 'connections' => 'Conexiones',
 'ipinfo' => 'Información IP',
 'iptable rules' => 'Reglas de IPTable',
 'iptmangles' => 'IPTable Mangles',
-'iptnats' => 'IPTables NAT',
-'ipts' => 'IPTables',
+'iptnats' => 'iptables NAT',
+'ipts' => 'iptables',
 'isdn' => 'ISDN',
 'isdn settings' => 'Configuraciones adicionales ISDN:',
 'isdn1' => 'ISDN simple',
index a1808fe51f0a89ab91484bd36715fda63d7bfcaf..4a08748ccdbad94986228768e852ca1c9830d28d 100644 (file)
@@ -583,4 +583,10 @@ char *es_tr[] = {
 "Error while downloading!",
 /* TR_DHCP_FORCE_MTU */
 "Force DHCP mtu:",
+/* TR_IDENTIFY */
+"Identify",
+/* TR_IDENTIFY_SHOULD_BLINK */
+"Selected port should blink now ...",
+/* TR_IDENTIFY_NOT_SUPPORTED */
+"Function is not supported by this port.",
 };
index e91191d8a19f8b5e096eec9b4744871ec003edd1..9f2e7857efd12da780ca72247683ca6210276824 100644 (file)
 'connection closed' => 'Non connecté...',
 'connection debugging' => 'Déboggage de la connexion',
 'connection status and controlc' => 'Etat et contrôle de connexion :',
-'connection tracking' => 'Surveillance des connexions IPTables',
+'connection tracking' => 'Surveillance des connexions iptables',
 'connection type' => 'Type de Connexion',
 'connection type is invalid' => 'Le type de connexion est non valide.',
 'connections' => 'Connexions',
 'iptable rules' => 'Règles IPTable',
 'iptmangles' => 'Mangles IPTable',
 'iptnats' => 'Traduction d\'adresses réseaux IPTable',
-'ipts' => 'IPTables',
+'ipts' => 'iptables',
 'isdn' => 'ISDN',
 'isdn settings' => 'Réglages ISDN supplémentaires :',
 'isdn1' => 'ISDN unique',
index 03fa9be87ba6cf643e7a687a5b7b486753a3b397..188e0fd1a5afcf1f4780518cef27a336bda0a1e1 100644 (file)
@@ -583,4 +583,10 @@ char *fr_tr[] = {
 "Erreur pendant le téléchargement!",
 /* TR_DHCP_FORCE_MTU */
 "Force DHCP mtu:",
+/* TR_IDENTIFY */
+"Identify",
+/* TR_IDENTIFY_SHOULD_BLINK */
+"Selected port should blink now ...",
+/* TR_IDENTIFY_NOT_SUPPORTED */
+"Function is not supported by this port.",
 };
index 427dba6a12cadf9511e065170c1448f5f02730b8..43d76ebf5363d328be6bbe98f31c2233e59b24c7 100644 (file)
 'connection closed' => 'Niet verbonden...',
 'connection debugging' => 'Connectie debugging',
 'connection status and controlc' => 'Verbindingsstatus en controle:',
-'connection tracking' => 'IPTables verbindingen volgen',
+'connection tracking' => 'iptables verbindingen volgen',
 'connection type' => 'Verbindingstype',
 'connection type is invalid' => 'Verbindingstype is ongeldig.',
 'connections' => 'Verbindingen',
 'iptable rules' => 'IPTable regels',
 'iptmangles' => 'IPTable Mangles',
 'iptnats' => 'IPTable Network Adrestranslatie',
-'ipts' => 'IPTables',
+'ipts' => 'iptables',
 'isdn' => 'ISDN',
 'isdn settings' => 'Extra ISDN instellingen:',
 'isdn1' => 'Single ISDN',
index b9a8ec42dd6e63858d69c6beddd48b13625cbd0b..aa0fa2f0179667be192d3cacb0f90e6795d55318 100644 (file)
@@ -587,4 +587,10 @@ char *nl_tr[] = {
 "Fout tijdens downloaden!",
 /* TR_DHCP_FORCE_MTU */
 "Forceer DHCP mtu:",
+/* TR_IDENTIFY */
+"Identify",
+/* TR_IDENTIFY_SHOULD_BLINK */
+"Selected port should blink now ...",
+/* TR_IDENTIFY_NOT_SUPPORTED */
+"Function is not supported by this port.",
 };
index 19f68e4ccb871ed9b6a17f2242b5ee626adc456c..80da6d63f2686e62926ac53bdb6e9ccb4210a49f 100644 (file)
 'connection closed' => 'Brak połączenia...',
 'connection debugging' => 'Debugowanie połączenia',
 'connection status and controlc' => 'Stan i kontrola połączenia:',
-'connection tracking' => 'Śledzenie połączeń IPTables',
+'connection tracking' => 'Śledzenie połączeń iptables',
 'connection type' => 'Rodzaj połączenia',
 'connection type is invalid' => 'Nieprawidłowy rodzaj połączenia.',
 'connections' => 'Połączenia',
 'iptable rules' => 'Reguły IPTable',
 'iptmangles' => 'IPTable Mangles',
 'iptnats' => 'IPTable Network Address Translation',
-'ipts' => 'IPTables',
+'ipts' => 'iptables',
 'isdn' => 'ISDN',
 'isdn settings' => 'Dodatkowe ustawienia ISDN:',
 'isdn1' => 'Pojedynczy ISDN',
index eb428d5bb9d5409ba9787f1ecb6b1ac8ff3e3c20..dddf551a67604f93f30a42ecf0a97f5ae47b1a9b 100644 (file)
@@ -583,4 +583,10 @@ char *pl_tr[] = {
 "Błąd podczas pobierania!",
 /* TR_DHCP_FORCE_MTU */
 "Wymuś mtu DHCP:",
+/* TR_IDENTIFY */
+"Identify",
+/* TR_IDENTIFY_SHOULD_BLINK */
+"Selected port should blink now ...",
+/* TR_IDENTIFY_NOT_SUPPORTED */
+"Function is not supported by this port.",
 };
index 69c45996ef85a5393902b4e717dc97efe0cc99b5..c1729b8a75df7e7242e2976e241a571e2f0c34e6 100644 (file)
 'connection closed' => 'Не подключён...',
 'connection debugging' => 'Connection debugging',
 'connection status and controlc' => 'Статус и управление подключениями:',
-'connection tracking' => 'Просмотр соединений через IPTables',
+'connection tracking' => 'Просмотр соединений через iptables',
 'connection type' => 'Connection Type',
 'connection type is invalid' => 'Connection type is invalid.',
 'connections' => 'Соединения',
 'iptable rules' => 'IPTable rules',
 'iptmangles' => 'IPTable Mangles',
 'iptnats' => 'IPTable Network Address Translation',
-'ipts' => 'IPTables',
+'ipts' => 'iptables',
 'isdn' => 'ISDN',
 'isdn settings' => 'Additional ISDN settings:',
 'isdn1' => 'Single ISDN',
index 1e96b6120943558f32dcd9e5155c9cfd91f03f55..40293a209c10e63e72716b235d0bf81714de22e9 100644 (file)
@@ -581,4 +581,10 @@ char *ru_tr[] = {
 "Во время загрузки произошла ошибка!",
 /* TR_DHCP_FORCE_MTU */
 "Форсировать DHCP mtu:",
+/* TR_IDENTIFY */
+"Identify",
+/* TR_IDENTIFY_SHOULD_BLINK */
+"Selected port should blink now ...",
+/* TR_IDENTIFY_NOT_SUPPORTED */
+"Function is not supported by this port.",
 };
index 3a959b7ad8fdea9560d68b39bfca5d3b7e8d9d5c..3131dd14faa1e5a3ae5a2d866654b1781b11c480 100644 (file)
@@ -587,4 +587,10 @@ char *tr_tr[] = {
 "İndirirken hata!",
 /* TR_DHCP_FORCE_MTU */
 "DHCP mtu zorla:",
+/* TR_IDENTIFY */
+"Identify",
+/* TR_IDENTIFY_SHOULD_BLINK */
+"Selected port should blink now ...",
+/* TR_IDENTIFY_NOT_SUPPORTED */
+"Function is not supported by this port.",
 };
index 791483f218a7a6c0881c88a4a4f8a3a157ba24f8..08bc7c9b69a67ca1878253f9f5f31f0dcf25b15a 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2011  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2013  IPFire Team  <info@ipfire.org>                     #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
@@ -114,6 +114,12 @@ $(subst %,%_MD5,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_APP) $(DIR_SRC)/binutils-build && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/binutils-2.22-pt-pax-flags-20111121.patch
+
+       # texinfo 5 syntax-fix.
+       cd $(DIR_APP) && sed -i -e "s/@colophon/@@colophon/" \
+                               -e "s/doc@cygnus/doc@@cygnus/" bfd/doc/bfd.texinfo
+
        @mkdir $(DIR_SRC)/binutils-build
 
        # Prevent installing libiberty to lib64.
index 7ada05d633ffb41ead0de679e0433784fd751345..c7bc8a8eb608ee8c6afdd3082247c97c970d6625 100644 (file)
@@ -70,6 +70,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/bridge-utils-1.5-compile-fix-1.patch
+       cd $(DIR_APP) && find . -name Makefile.in | xargs sed -i -e "s/^KERNEL_HEADERS/#&/g"
        cd $(DIR_APP) && autoreconf -vfi
        cd $(DIR_APP) && ./configure --prefix=/usr
        cd $(DIR_APP) && make $(MAKETUNING)
index ede343e2abcb521b96ae345baf24ebca800f7b2e..5a85002bae545d35d6b3bb75e086505bcaaaf796 100644 (file)
--- a/lfs/cdrom
+++ b/lfs/cdrom
@@ -52,6 +52,10 @@ md5 :
 ###############################################################################
 
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
+       # Update /etc/system-release, because the string might have changed
+       # since stage2 has been executed..
+       echo "$(SYSTEM_RELEASE)" > /etc/system-release
+
        rm -rf /install/cdrom /tmp/*
        mkdir -p /install/cdrom/doc
 
@@ -113,4 +117,5 @@ else
        cd /install/cdrom && mkisofs -J -r -V "$(NAME)_$(VERSION)" \
            -b boot/isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table \
            -c boot/isolinux/boot.catalog . > /install/images/$(SNAME)-$(VERSION).$(MACHINE)-full-core$(CORE).iso
+       isohybrid /install/images/$(SNAME)-$(VERSION).$(MACHINE)-full-core$(CORE).iso
 endif
index bae350cb158201208d90babadb5392c291f3d3d6..51febd92ca2d5d6417ed4a9485fc89fab688c87f 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 0.97.8
+VER        = 0.98
 
 THISAPP    = clamav-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -32,10 +32,14 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = clamav
-PAK_VER    = 22
+PAK_VER    = 23
 
 DEPS       = ""
 
+ifeq "$(MACHINE_TYPE)" "arm"
+CONFIGURE_FLAGS = --disable-fanotify
+endif
+
 ###############################################################################
 # Top-level Rules
 ###############################################################################
@@ -44,7 +48,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = ac52bcbad3ea72eac08fedb9772f648b
+$(DL_FILE)_MD5 = ca0b8c930efcb8be1d47592d268006c5
 
 install : $(TARGET)
 
@@ -77,7 +81,10 @@ $(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) && ./configure --prefix=/usr --sysconfdir=/var/ipfire/clamav
+       cd $(DIR_APP) && ./configure \
+               --prefix=/usr \
+               --sysconfdir=/var/ipfire/clamav \
+               $(CONFIGURE_FLAGS)
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
        mkdir -p /usr/share/clamav/
@@ -86,5 +93,10 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        rm -rfv /usr/share/clamav/*.cvd
        mkdir -p /var/run/clamav
        chown clamav:clamav /var/run/clamav
+
+       # Disable PaX mprotect for clamd and freshclam
+       paxctl -cm /usr/sbin/clamd
+       paxctl -cm /usr/bin/freshclam
+
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
index 1185236851fa6f695658bcc5db720f121d31a661..f73453d91c391e5bf3bc4e7f1b1f1ab9069ca309 100644 (file)
@@ -50,59 +50,65 @@ $(TARGET) :
        @$(PREBUILD)
 
        # Create all directories
-       for i in addon-lang auth backup ca certs connscheduler crls ddns dhcp dhcpc dmzholes dns dnsforward \
-                       ethernet extrahd/bin fwlogs isdn key langs logging mac main  menu.d modem net-traffic \
-                       net-traffic/templates nfs optionsfw outgoing/bin outgoing/groups outgoing/groups/ipgroups \
-                       outgoing/groups/macgroups ovpn patches pakfire portfw ppp private proxy/advanced/cre \
+       for i in addon-lang auth backup ca certs connscheduler crls ddns dhcp dhcpc dns dnsforward \
+                       ethernet extrahd/bin fwlogs fwhosts firewall firewall/bin isdn key langs logging mac main \
+                       menu.d modem net-traffic net-traffic/templates nfs optionsfw \
+                       ovpn patches pakfire portfw ppp private proxy/advanced/cre \
                        proxy/calamaris/bin qos/bin red remote sensors snort time tripwire/report \
                        updatexlrator/bin updatexlrator/autocheck urlfilter/autoupdate urlfilter/bin upnp vpn \
-                       wakeonlan wireless xtaccess ; do \
+                       wakeonlan wireless ; do \
                mkdir -p $(CONFIG_ROOT)/$$i; \
        done
 
        # Touch empty files
        for i in auth/users backup/include.user backup/exclude.user \
            certs/index.txt ddns/config ddns/noipsettings ddns/settings ddns/ipcache dhcp/settings \
-           dhcp/fixleases dhcp/advoptions dhcp/dhcpd.conf.local dmzholes/config dns/settings dnsforward/config ethernet/aliases ethernet/settings ethernet/known_nics ethernet/scanned_nics \
-           ethernet/wireless extrahd/scan extrahd/devices extrahd/partitions extrahd/settings fwlogs/ipsettings fwlogs/portsettings \
-           isdn/settings mac/settings main/disable_nf_sip main/hosts main/routing main/settings net-traffic/settings optionsfw/settings outgoing/settings outgoing/rules \
+           dhcp/fixleases dhcp/advoptions dhcp/dhcpd.conf.local dns/settings dnsforward/config ethernet/aliases ethernet/settings ethernet/known_nics ethernet/scanned_nics \
+           ethernet/wireless extrahd/scan extrahd/devices extrahd/partitions extrahd/settings firewall/settings firewall/config firewall/input firewall/outgoing \
+           fwhosts/customnetworks fwhosts/customhosts fwhosts/customgroups fwhosts/customservicegrp fwlogs/ipsettings fwlogs/portsettings \
+           isdn/settings mac/settings main/disable_nf_sip main/hosts main/routing main/settings net-traffic/settings optionsfw/settings \
            ovpn/ccd.conf ovpn/ccdroute ovpn/ccdroute2 pakfire/settings portfw/config ppp/settings-1 ppp/settings-2 ppp/settings-3 ppp/settings-4 \
            ppp/settings-5 ppp/settings proxy/settings proxy/advanced/settings proxy/advanced/cre/enable remote/settings qos/settings qos/classes qos/subclasses qos/level7config qos/portconfig \
            qos/tosconfig snort/settings tripwire/settings upnp/settings vpn/config vpn/settings vpn/ipsec.conf \
            vpn/ipsec.secrets vpn/caconfig wakeonlan/clients.conf wireless/config wireless/settings; do \
-               touch $(CONFIG_ROOT)/$$i; \
+           touch $(CONFIG_ROOT)/$$i; \
        done
 
        # Copy initial configfiles
        cp $(DIR_SRC)/config/cfgroot/header.pl                  $(CONFIG_ROOT)/
        cp $(DIR_SRC)/config/cfgroot/general-functions.pl       $(CONFIG_ROOT)/
        cp $(DIR_SRC)/config/cfgroot/lang.pl                    $(CONFIG_ROOT)/
-       cp $(DIR_SRC)/config/cfgroot/countries.pl                       $(CONFIG_ROOT)/
+       cp $(DIR_SRC)/config/cfgroot/countries.pl               $(CONFIG_ROOT)/
        cp $(DIR_SRC)/config/cfgroot/graphs.pl                  $(CONFIG_ROOT)/
        cp $(DIR_SRC)/config/cfgroot/advoptions-list            $(CONFIG_ROOT)/dhcp/advoptions-list
        cp $(DIR_SRC)/config/cfgroot/connscheduler-lib.pl       $(CONFIG_ROOT)/connscheduler/lib.pl
        cp $(DIR_SRC)/config/cfgroot/connscheduler.conf         $(CONFIG_ROOT)/connscheduler
        cp $(DIR_SRC)/config/extrahd/*                          $(CONFIG_ROOT)/extrahd/bin/
        cp $(DIR_SRC)/config/cfgroot/sensors-settings           $(CONFIG_ROOT)/sensors/settings
-       cp $(DIR_SRC)/config/menu/*                                     $(CONFIG_ROOT)/menu.d/
+       cp $(DIR_SRC)/config/menu/*                             $(CONFIG_ROOT)/menu.d/
        cp $(DIR_SRC)/config/cfgroot/modem-defaults             $(CONFIG_ROOT)/modem/defaults
        cp $(DIR_SRC)/config/cfgroot/modem-settings             $(CONFIG_ROOT)/modem/settings
        cp $(DIR_SRC)/config/cfgroot/net-traffic-lib.pl         $(CONFIG_ROOT)/net-traffic/net-traffic-lib.pl
-       cp $(DIR_SRC)/config/cfgroot/net-traffic-admin.pl               $(CONFIG_ROOT)/net-traffic/net-traffic-admin.pl
+       cp $(DIR_SRC)/config/cfgroot/net-traffic-admin.pl       $(CONFIG_ROOT)/net-traffic/net-traffic-admin.pl
        cp $(DIR_SRC)/config/cfgroot/nfs-server                 $(CONFIG_ROOT)/nfs/nfs-server
-       cp $(DIR_SRC)/config/cfgroot/p2protocols                        $(CONFIG_ROOT)/outgoing/p2protocols
-       cp $(DIR_SRC)/config/outgoingfw/outgoingfw.pl           $(CONFIG_ROOT)/outgoing/bin/
-       cp $(DIR_SRC)/config/outgoingfw/defaultservices         $(CONFIG_ROOT)/outgoing/
        cp $(DIR_SRC)/config/cfgroot/proxy-acl                  $(CONFIG_ROOT)/proxy/acl-1.4
-       cp $(DIR_SRC)/config/qos/*                                      $(CONFIG_ROOT)/qos/bin/
-       cp $(DIR_SRC)/config/cfgroot/ssh-settings                       $(CONFIG_ROOT)/remote/settings
-       cp $(DIR_SRC)/config/cfgroot/xtaccess-config            $(CONFIG_ROOT)/xtaccess/config
+       cp $(DIR_SRC)/config/qos/*                                              $(CONFIG_ROOT)/qos/bin/
+       cp $(DIR_SRC)/config/cfgroot/ssh-settings               $(CONFIG_ROOT)/remote/settings
        cp $(DIR_SRC)/config/cfgroot/time-settings              $(CONFIG_ROOT)/time/settings
-       cp $(DIR_SRC)/config/cfgroot/logging-settings           $(CONFIG_ROOT)/logging/settings
+       cp $(DIR_SRC)/config/cfgroot/logging-settings   $(CONFIG_ROOT)/logging/settings
        cp $(DIR_SRC)/config/cfgroot/useragents                 $(CONFIG_ROOT)/proxy/advanced
        cp $(DIR_SRC)/config/cfgroot/ethernet-vlans             $(CONFIG_ROOT)/ethernet/vlans
-       cp $(DIR_SRC)/langs/list                                        $(CONFIG_ROOT)/langs/
-
+       cp $(DIR_SRC)/langs/list                                                $(CONFIG_ROOT)/langs/
+       cp $(DIR_SRC)/config/firewall/rules.pl                  $(CONFIG_ROOT)/firewall/bin/rules.pl
+       cp $(DIR_SRC)/config/firewall/convert-xtaccess  /usr/sbin/convert-xtaccess
+       cp $(DIR_SRC)/config/firewall/convert-outgoingfw        /usr/sbin/convert-outgoingfw
+       cp $(DIR_SRC)/config/firewall/convert-dmz       /usr/sbin/convert-dmz
+       cp $(DIR_SRC)/config/firewall/convert-portfw    /usr/sbin/convert-portfw
+       cp $(DIR_SRC)/config/firewall/p2protocols               $(CONFIG_ROOT)/firewall/p2protocols
+       cp $(DIR_SRC)/config/firewall/firewall-lib.pl   $(CONFIG_ROOT)/firewall/bin/firewall-lib.pl
+       cp $(DIR_SRC)/config/firewall/firewall-policy   /usr/sbin/firewall-policy
+       cp $(DIR_SRC)/config/fwhosts/icmp-types                 $(CONFIG_ROOT)/fwhosts/icmp-types
+       cp $(DIR_SRC)/config/fwhosts/customservices             $(CONFIG_ROOT)/fwhosts/customservices
        # Oneliner configfiles
        echo  "ENABLED=off"             > $(CONFIG_ROOT)/vpn/settings
        echo  "VPN_DELAYED_START=0"     >>$(CONFIG_ROOT)/vpn/settings
@@ -110,11 +116,29 @@ $(TARGET) :
        echo  "nameserver    1.2.3.4"   > $(CONFIG_ROOT)/ppp/fake-resolv.conf
        echo  "DROPNEWNOTSYN=on"                >> $(CONFIG_ROOT)/optionsfw/settings
        echo  "DROPINPUT=on"            >> $(CONFIG_ROOT)/optionsfw/settings
-       echo  "DROPOUTPUT=on"           >> $(CONFIG_ROOT)/optionsfw/settings
-       echo  "DROPINPUT=on"            >> $(CONFIG_ROOT)/optionsfw/settings
-       echo  "DROPOUTPUT=on"           >> $(CONFIG_ROOT)/optionsfw/settings
+       echo  "DROPFORWARD=on"          >> $(CONFIG_ROOT)/optionsfw/settings
+       echo  "FWPOLICY=DROP"           >> $(CONFIG_ROOT)/optionsfw/settings
+       echo  "FWPOLICY1=DROP"          >> $(CONFIG_ROOT)/optionsfw/settings
+       echo  "FWPOLICY2=DROP"          >> $(CONFIG_ROOT)/optionsfw/settings
        echo  "DROPPORTSCAN=on"         >> $(CONFIG_ROOT)/optionsfw/settings
-
+       echo  "DROPOUTGOING=on"         >> $(CONFIG_ROOT)/optionsfw/settings
+       echo  "DROPSAMBA=off"           >> $(CONFIG_ROOT)/optionsfw/settings
+       echo  "DROPPROXY=off"           >> $(CONFIG_ROOT)/optionsfw/settings
+       echo  "SHOWREMARK=on"           >> $(CONFIG_ROOT)/optionsfw/settings
+       echo  "SHOWCOLORS=on"           >> $(CONFIG_ROOT)/optionsfw/settings
+       echo  "SHOWTABLES=off"          >> $(CONFIG_ROOT)/optionsfw/settings
+       echo  "SHOWDROPDOWN=off"        >> $(CONFIG_ROOT)/optionsfw/settings
+       echo  "DROPWIRELESSINPUT=on"    >> $(CONFIG_ROOT)/optionsfw/settings
+       echo  "DROPWIRELESSFORWARD=on"  >> $(CONFIG_ROOT)/optionsfw/settings
+       echo  "POLICY=MODE2"            >> $(CONFIG_ROOT)/firewall/settings
+       echo  "POLICY1=MODE2"           >> $(CONFIG_ROOT)/firewall/settings
+       
+       # set rules.pl executable
+       chmod 755 $(CONFIG_ROOT)/firewall/bin/rules.pl
+               
+       # set converters executable
+       chmod 755 /usr/sbin/convert-*
+       
        # Modify variables in header.pl
        sed -i -e "s+CONFIG_ROOT+$(CONFIG_ROOT)+g" \
            -e "s+VERSION+$(VERSION)+g" \
@@ -131,16 +155,14 @@ $(TARGET) :
 
        # Language files
        cp $(DIR_SRC)/langs/*/cgi-bin/*.pl $(CONFIG_ROOT)/langs/
-       
+
        # Configroot permissions
        chown -R nobody:nobody $(CONFIG_ROOT)
        chown      root:root   $(CONFIG_ROOT)
-       for i in backup/ header.pl general-functions.pl lang.pl addon-lang/ langs/ red/ ; do \
+       for i in backup/ header.pl general-functions.pl graphs.pl lang.pl addon-lang/ langs/ red/ ; do \
             chown -R root:root $(CONFIG_ROOT)/$$i; \
        done
+       chown -Rv root:root $(CONFIG_ROOT)/*/bin
        chown root:nobody $(CONFIG_ROOT)/dhcpc
 
-       # Set outgoingfw.pl executable
-       chmod 755 $(CONFIG_ROOT)/outgoing/bin/outgoingfw.pl
-
        @$(POSTBUILD)
index 6e38b0a0ebd216b145a841161d7ae7eb1be46a6c..f07e49df3eebbaad593c374fc62e7cd844e138e5 100644 (file)
@@ -37,6 +37,8 @@ PAK_VER    = 6
 
 DEPS       = ""
 
+CFLAGS    += -fno-PIC
+
 ###############################################################################
 # Top-level Rules
 ###############################################################################
index 749011f26711a25e14aa26747da3a9357b89622d..af2b1488939563cbbe97351c33888524a280437d 100644 (file)
@@ -84,7 +84,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/cyrus-sasl-2.1.22-bad-elif.patch
        cd $(DIR_APP) && sed -i '/sasl_global/s/^static //' lib/client.c
-       cd $(DIR_APP) && sed -i 's/cat8/man8/' saslauthd/Makefile.in
+       cd $(DIR_APP) && sed -i 's/cat8/man8/' saslauthd/Makefile.am
+       cd $(DIR_APP) && autoconf
 
 ifeq "$(PASS)" ""
        cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/etc \
index 0779a6b73bd2d953ba536d5489f9b9d2260d8333..d486950d8b7dbe11626b87f427e2520a7835f459 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2011  IPFire Team  <info@ipfire.org>                          #
+# Copyright (C) 2007-2013  IPFire Team  <info@ipfire.org>                     #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
@@ -95,9 +95,10 @@ ifeq "$(MACHINE_TYPE)" "arm"
        # kirkwood kernel
        /sbin/dracut --force --verbose --strip /boot/ipfirerd-$(KVER)-kirkwood.img $(KVER)-ipfire-kirkwood
        cd /boot && mkimage -A arm -T ramdisk -C lzma -d ipfirerd-$(KVER)-kirkwood.img uInit-ipfire-kirkwood
-       # omap kernel
-       /sbin/dracut --force --verbose --strip /boot/ipfirerd-$(KVER)-omap.img $(KVER)-ipfire-omap
-       cd /boot && mkimage -A arm -T ramdisk -C lzma -d ipfirerd-$(KVER)-omap.img uInit-ipfire-omap
+       # arm7 multi kernel
+       /sbin/dracut --force --verbose --strip /boot/ipfirerd-$(KVER)-multi.img $(KVER)-ipfire-multi
+       cd /boot && mkimage -A arm -T ramdisk -C lzma -d ipfirerd-$(KVER)-multi.img uInit-ipfire-multi
+#      cd /boot && cp -f ipfirerd-$(KVER)-multi.img zInit-ipfire-multi
 else
        /sbin/dracut --force --verbose --strip /boot/ipfirerd-$(KVER).img $(KVER)-ipfire
 endif
index 0ee9c3e0b1d0d57972e7d47632db11f41c31bac0..e2df5cc524e0935c707edfa0fce43090bc4b75eb 100644 (file)
@@ -35,6 +35,9 @@ PAK_VER    = 4
 
 DEPS       = "ffmpeg-libs sdl lame libvorbis xvid"
 
+# Don't use PIC for libavcodec
+CFLAGS    += -fno-PIC -fno-strict-aliasing
+
 ###############################################################################
 # Top-level Rules
 ###############################################################################
index 133111cdbd7466ea2617843085b6cdd3969a597d..3da01016129bd1c8e931d1dd116de76d76ef039d 100644 (file)
@@ -70,11 +70,12 @@ $(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) && python setup.py build
-       cd $(DIR_APP) && python setup.py install
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/fireinfo-2.1.7-testing.patch
 
-       # Remove egg-info
-       rm -rvf /usr/lib/python*/site-packages/fireinfo*.egg-info
+       cd $(DIR_APP) && [ -x "configure" ] || sh ./autogen.sh
+       cd $(DIR_APP) && ./configure --prefix=/usr
+       cd $(DIR_APP) && make $(MAKETUNING)
+       cd $(DIR_APP) && make install
 
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
index 36a343dde4c6aed4ff82957829c39167359b9f7b..1a7134d380903cc846d1a233fb68ca1a5e754cbe 100644 (file)
@@ -86,7 +86,7 @@ endif
        # Install MLO and uboot first
 ifeq "$(MACHINE_TYPE)" "arm"
        cp -v /boot/MLO $(MNThdd)/boot/
-       cp -v /boot/u-boot.bin $(MNThdd)/boot/
+       cp -v /boot/u-boot.img $(MNThdd)/boot/
        sync
        umount $(MNThdd)/boot
        mount -o loop $(IMGboot) $(MNThdd)/boot
@@ -182,7 +182,7 @@ ifneq "$(MACHINE_TYPE)" "arm"
        sed -i -e "s| panic=10 | console=ttyS0,115200n8 panic=10 |g" $(MNThdd)/boot/grub/grub.conf
 else
        sed -i -e "s| console=tty1 | console=ttyAMA0,115200n8 |g" $(MNThdd)/boot/cmdline.txt
-       sed -i -e "s| console=tty1 omapfb.mode=dvi:800x600MR-16@60 | console=ttyO2,115200n8 |g" $(MNThdd)/boot/boot.script
+       sed -i -e "s| console=tty1 | console=ttyO2,115200n8 |g" $(MNThdd)/boot/boot.script
        cd $(MNThdd)/boot && ./convert_bootscript
 endif
 
diff --git a/lfs/gcc b/lfs/gcc
index 0bdecdaefbef03ba9b61241473409d1580e9fefe..a9f124b8cee0a393baa355d5acec5d44fd53db51 100644 (file)
--- a/lfs/gcc
+++ b/lfs/gcc
@@ -177,6 +177,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/gcc/gcc44-rh610785.patch
        cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/gcc/gcc44-unwind-debug-hook.patch
 
+       # texinfo 5 syntax-fixes
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/gcc-4.4.7-texinfo-5.patch
+
 ifneq "$(ROOT)" ""
        # Build gmp and mpfr internally in toolchain.
        cd $(DIR_APP) && tar xfa $(DIR_DL)/gmp-$(GMP_VER).tar.bz2
index ccbdb315881754bec78b90d4a58eae65b03c2bd0..9acbb111bbfa6c4d58a784e8138a51d318bcbbec 100644 (file)
--- a/lfs/glibc
+++ b/lfs/glibc
@@ -227,13 +227,37 @@ endif
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh795498.patch
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh797094-1.patch
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh797094-2.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh804630.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh804686.patch
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh804689.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh806404.patch
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh808337.patch
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh808545.patch
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh809602.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh833716.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh837026.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh809726.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh823909.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh826149.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh827362.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh830127.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh832516.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh832694.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh833717.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh837695.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh837918.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh841787.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh843673.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh846342.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh847932.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh848082.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh849203.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh849651.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh852445.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh861167.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh863453.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh864322.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh929388.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh970992.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh989558.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh989558-2.patch
 
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc-resolv-stack_chk_fail.patch
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc-remove-ctors-dtors-output-sections.patch
index 6850a3a58fd8091a57e51037b4e547198ee0fd4b..2b0544bd7c053cac6a754d2d2168b62f5410e5bc 100644 (file)
--- a/lfs/grub
+++ b/lfs/grub
@@ -95,5 +95,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        # generate default file
        grub-set-default 0
 
+       # Disable PaX mprotect for grub
+       paxctl -m /usr/sbin/grub
+
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
index ff02a1991404dd901b3398d0aab80d2e4206757c..9e01b06cfb9c576625c887c46a3bbeba791b2358 100644 (file)
@@ -77,10 +77,6 @@ $(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/hostapd-usb_hw_did_not_ack.patch
-       -cp /usr/src/linux/include/linux/genetlink.h /usr/include/linux/
-       -cp /usr/src/linux/include/linux/netfilter/nfnetlink.h /usr/include/linux/netfilter/
-       -cp /usr/src/linux/include/linux/netfilter/nfnetlink_compat.h /usr/include/linux/netfilter/
        cd $(DIR_APP)/hostapd && cp $(DIR_SRC)/config/hostapd/config ./.config
        cd $(DIR_APP)/hostapd && sed -e "s@/usr/local@/usr@g" -i Makefile
        cd $(DIR_APP)/hostapd && make $(MAKETUNING) $(EXTRA_MAKE)
index 6549147a83afdf68735c2ff3e5503318df3d4bb2..eae451b24ca912d1efe6490377942fcd67204a41 100644 (file)
@@ -179,20 +179,15 @@ $(TARGET) :
 
        ln -sf ../../dnsmasq /etc/rc.d/init.d/networking/red.up/05-RS-dnsmasq
        ln -sf ../../firewall /etc/rc.d/init.d/networking/red.up/20-RL-firewall
-       ln -sf ../../../../../usr/local/bin/outgoingfwctrl \
-               /etc/rc.d/init.d/networking/red.up/22-outgoingfwctrl
+       ln -sf ../../../../../usr/local/bin/firewallctrl \
+               /etc/rc.d/init.d/networking/red.up/22-forwardfwctrl
        ln -sf ../../../../../usr/local/bin/snortctrl \
                /etc/rc.d/init.d/networking/red.up/23-RS-snort
        ln -sf ../../../../../usr/local/bin/qosctrl \
                /etc/rc.d/init.d/networking/red.up/24-RS-qos
-       ln -sf ../../../../../usr/local/bin/setportfw \
-               /etc/rc.d/init.d/networking/red.up/25-portfw
-       ln -sf ../../../../../usr/local/bin/setxtaccess \
-               /etc/rc.d/init.d/networking/red.up/26-xtaccess
        ln -sf ../../../../../usr/local/bin/dialctrl.pl \
                /etc/rc.d/init.d/networking/red.up/99-U-dialctrl.pl
        ln -sf ../../squid /etc/rc.d/init.d/networking/red.up/27-RS-squid
-       
        ln -sf ../../dnsmasq /etc/rc.d/init.d/networking/red.down/05-RS-dnsmasq
        ln -sf ../../firewall /etc/rc.d/init.d/networking/red.down/20-RL-firewall
        ln -sf ../../../../../usr/local/bin/dialctrl.pl \
similarity index 91%
rename from lfs/as86
rename to lfs/iotop
index 0acc340274ac32c289a9ae8c5af8f6935352b155..fd0002bbfe56e672389ba558c575acf953b5a61a 100644 (file)
--- a/lfs/as86
+++ b/lfs/iotop
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007  Michael Tremer & Christian Schmidt                      #
+# Copyright (C) 2013  Michael Tremer & Christian Schmidt                      #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
 
 include Config
 
-VER        = 0.16.17
+VER        = 0.6
 
-THISAPP    = as86-$(VER)
+THISAPP    = iotop-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
-SUP_ARCH   = i586
+
+PROG       = iotop
+PAK_VER    = 1
+DEPS       = ""
 
 ###############################################################################
 # Top-level Rules
@@ -41,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 69bca69aec7a272362bc9e050d289d12
+$(DL_FILE)_MD5 = 080fbb494566b5291a2a27cf6c203562
 
 install : $(TARGET)
 
@@ -51,6 +54,9 @@ download :$(patsubst %,$(DIR_DL)/%,$(objects))
 
 md5 : $(subst %,%_MD5,$(objects))
 
+dist: 
+       $(PAK)
+
 ###############################################################################
 # Downloading, checking, md5sum
 ###############################################################################
@@ -71,7 +77,6 @@ $(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) && make $(MAKETUNING)
-       cd $(DIR_APP) && make install
+       cd $(DIR_APP) && python setup.py install
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
index a247ba7b37d43954d01e783dba53f9f266f2188a..f3fb70868ea93630200e07a2b2ee6b6a8b6c57a4 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.4.14
+VER        = 1.4.20
 
 THISAPP    = iptables-$(VER)
 DL_FILE    = $(THISAPP).tar.bz2
@@ -38,21 +38,21 @@ TARGET     = $(DIR_INFO)/$(THISAPP)
 objects =      $(DL_FILE) \
                        netfilter-layer7-v2.22.tar.gz \
                        libnfnetlink-1.0.0.tar.bz2 \
-                       libnetfilter_queue-0.0.17.tar.bz2 \
+                       libnetfilter_queue-1.0.1.tar.bz2 \
                        libnetfilter_conntrack-1.0.2.tar.bz2 \
                        libnetfilter_cttimeout-1.0.0.tar.bz2
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 netfilter-layer7-v2.22.tar.gz          = $(URL_IPFIRE)/netfilter-layer7-v2.22.tar.gz
 libnfnetlink-1.0.0.tar.bz2             = $(URL_IPFIRE)/libnfnetlink-1.0.0.tar.bz2
-libnetfilter_queue-0.0.17.tar.bz2      = $(URL_IPFIRE)/libnetfilter_queue-0.0.17.tar.bz2
+libnetfilter_queue-1.0.1.tar.bz2       = $(URL_IPFIRE)/libnetfilter_queue-1.0.1.tar.bz2
 libnetfilter_conntrack-1.0.2.tar.bz2   = $(URL_IPFIRE)/libnetfilter_conntrack-1.0.2.tar.bz2
 libnetfilter_cttimeout-1.0.0.tar.bz2   = $(URL_IPFIRE)/libnetfilter_cttimeout-1.0.0.tar.bz2
 
-$(DL_FILE)_MD5 = 5ab24ad683f76689cfe7e0c73f44855d
+$(DL_FILE)_MD5 = 387b92d3efcf4f07fe31c3bf0f1d18f5
 netfilter-layer7-v2.22.tar.gz_MD5 = 98dff8a3d5a31885b73341633f69501f
 libnfnetlink-1.0.0.tar.bz2_MD5 = 016fdec8389242615024c529acc1adb8
-libnetfilter_queue-0.0.17.tar.bz2_MD5 = 2cde35e678ead3a8f9eb896bf807a159
+libnetfilter_queue-1.0.1.tar.bz2_MD5 = 08b968cb2d36c24deb7f26a69f5d8602
 libnetfilter_conntrack-1.0.2.tar.bz2_MD5 = 447114b5d61bb9a9617ead3217c3d3ff
 libnetfilter_cttimeout-1.0.0.tar.bz2_MD5 = 7697437fc9ebb6f6b83df56a633db7f9
 
@@ -86,8 +86,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @rm -rf $(DIR_APP) $(DIR_SRC)/libnfnetlink-1.0.0 $(DIR_SRC)/netfilter-layer7* $(DIR_SRC)/libnetfilter_queue-0.0.17
 
        @cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE)
-       -cd /usr/include && patch -Np1 < $(DIR_SRC)/src/patches/iptables-1.4.6-errorno_includes.patch
-       cp -rf /usr/src/linux/include/linux/netfilter /usr/include/linux
+#      cp -rf /usr/src/linux/include/linux/netfilter /usr/include/linux
 
        # Layer7
        cd $(DIR_SRC) && tar zxf $(DIR_DL)/netfilter-layer7-v2.22.tar.gz
@@ -99,7 +98,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
 
        # imq
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/iptables-1.4.12-IMQ-test4.diff
-#      chmod +x $(DIR_APP)/extensions/.IMQ-test*
 
        cd $(DIR_APP) && ./configure  --prefix=/usr --with-ksource=/usr/src/linux \
                                    --libdir=/lib --includedir=/usr/include --enable-libipq \
@@ -110,25 +108,25 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        cd $(DIR_APP) && make install
 
        # Iptables doesn't install all headers
-       mkdir -p /usr/include/net/netfilter
-       cp -f $(DIR_APP)/include/net/netfilter/*.h /usr/include/net/netfilter/
-       mkdir -p /usr/include/iptables
-       cp -f $(DIR_APP)/include/iptables/*.h /usr/include/iptables/
-       cp -f $(DIR_APP)/include/iptables.h /usr/include/
-       mkdir -p /usr/include/libipulog
-       cp -f $(DIR_APP)/include/libipulog/*.h /usr/include/libipulog/
-       mkdir -p /usr/include/libiptc
-       cp -f $(DIR_APP)/include/libiptc/*.h /usr/include/libiptc/
+#      mkdir -p /usr/include/net/netfilter
+#      cp -f $(DIR_APP)/include/net/netfilter/*.h /usr/include/net/netfilter/
+#      mkdir -p /usr/include/iptables
+#      cp -f $(DIR_APP)/include/iptables/*.h /usr/include/iptables/
+#      cp -f $(DIR_APP)/include/iptables.h /usr/include/
+#      mkdir -p /usr/include/libipulog
+#      cp -f $(DIR_APP)/include/libipulog/*.h /usr/include/libipulog/
+#      mkdir -p /usr/include/libiptc
+#      cp -f $(DIR_APP)/include/libiptc/*.h /usr/include/libiptc/
 
        cd $(DIR_SRC) && tar xfj $(DIR_DL)/libnfnetlink-1.0.0.tar.bz2
        cd $(DIR_SRC)/libnfnetlink-1.0.0 && ./configure --prefix=/usr
        cd $(DIR_SRC)/libnfnetlink-1.0.0 && make $(MAKETUNING) $(EXTRA_MAKE)
        cd $(DIR_SRC)/libnfnetlink-1.0.0 && make install
 
-       cd $(DIR_SRC) && tar xfj $(DIR_DL)/libnetfilter_queue-0.0.17.tar.bz2
-       cd $(DIR_SRC)/libnetfilter_queue-0.0.17 && ./configure --prefix=/usr
-       cd $(DIR_SRC)/libnetfilter_queue-0.0.17 && make $(MAKETUNING) $(EXTRA_MAKE)
-       cd $(DIR_SRC)/libnetfilter_queue-0.0.17 && make install
+       cd $(DIR_SRC) && tar xfj $(DIR_DL)/libnetfilter_queue-1.0.1.tar.bz2
+       cd $(DIR_SRC)/libnetfilter_queue-1.0.1 && ./configure --prefix=/usr
+       cd $(DIR_SRC)/libnetfilter_queue-1.0.1 && make $(MAKETUNING) $(EXTRA_MAKE)
+       cd $(DIR_SRC)/libnetfilter_queue-1.0.1 && make install
 
        cd $(DIR_SRC) && tar xfj $(DIR_DL)/libnetfilter_conntrack-1.0.2.tar.bz2
        cd $(DIR_SRC)/libnetfilter_conntrack-1.0.2 && ./configure --prefix=/usr
diff --git a/lfs/iw b/lfs/iw
index 6a6627fb72d61a03603ed6adab36ba6d804731e4..e55bc5c35da13e8d6158436d09410f70686ee117 100644 (file)
--- a/lfs/iw
+++ b/lfs/iw
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 3.8
+VER        = 3.10
 
 THISAPP    = iw-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 2aae163b7c3b581b7d94f34a5d3e47d8
+$(DL_FILE)_MD5 = 07219ad06535bc270f7a8873aba6d5fa
 
 install : $(TARGET)
 
@@ -70,7 +70,7 @@ $(subst %,%_MD5,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
-       cd $(DIR_APP) && CFLAGS+=-I/usr/src/linux/include make $(MAKETUNING)
+       cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
similarity index 54%
rename from lfs/linux-xen
rename to lfs/jquery
index 39f19a82f3c2f59b527a6ead15e2e2c22a3f84ee..7856ce01effd64f769ae7e0810ad3e1b17ecbeaf 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2012  IPFire Team <info@ipfire.org>                      #
+# Copyright (C) 2007-2013  IPFire Team  <info@ipfire.org>                     #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
 
 include Config
 
-VER       = kernel
+VER        = 1.10.2
 
-include linux2
+THISAPP    = jquery-$(VER)
+DL_FILE    = $(THISAPP).min.js
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
 
-PROG      = linux-xen
-SUP_ARCH   = i586
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = 628072e7212db1e8cdacb22b21752cda
+
+install : $(TARGET)
+
+check : $(patsubst %,$(DIR_CHK)/%,$(objects))
+
+download :$(patsubst %,$(DIR_DL)/%,$(objects))
+
+md5 : $(subst %,%_MD5,$(objects))
+
+###############################################################################
+# Downloading, checking, md5sum
+###############################################################################
+
+$(patsubst %,$(DIR_CHK)/%,$(objects)) :
+       @$(CHECK)
+
+$(patsubst %,$(DIR_DL)/%,$(objects)) :
+       @$(LOAD)
+
+$(subst %,%_MD5,$(objects)) :
+       @$(MD5)
+
+###############################################################################
+# Installation Details
+###############################################################################
+
+$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
+       @$(PREBUILD)
+
+       -mkdir -pv /srv/web/ipfire/html/include
+       install -v -m 644 $(DIR_DL)/$(DL_FILE) /srv/web/ipfire/html/include/jquery.js
+
+       @$(POSTBUILD)
index 189175122ad2e77e50ae5be498af18ce0a4b1e60..28b7ed8da2cdb4252329878a56dcda02b95bfa22 100644 (file)
@@ -77,7 +77,8 @@ $(subst %,%_MD5,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
-       cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/etc
+       cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/etc \
+               --with-kernel-dir=/usr/include
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
 
index ea557d9132f5c2b6dace8842d514f715ae4e0cd1..a357935140c3f6d753b6b21d4a37db0fa2a17433 100644 (file)
--- a/lfs/libnl
+++ b/lfs/libnl
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.1
+VER        = 1.1.4
 
 THISAPP    = libnl-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = ae970ccd9144e132b68664f98e7ceeb1
+$(DL_FILE)_MD5 = 580cb878be536804daca87fb75ae46cc
 
 install : $(TARGET)
 
@@ -73,13 +73,6 @@ $(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/libnl-1.1-ULONG_MAX.patch
-       cd $(DIR_APP) && ln -s /usr/src/linux/include/linux/if_vlan.h \
-                                             include/linux/if_vlan.h
-       cd $(DIR_APP) && ln -s /usr/src/linux/include/linux/netfilter/nf_conntrack_common.h \
-                                             include/linux/netfilter/nf_conntrack_common.h
-       cd $(DIR_APP) && ln -s /usr/src/linux/include/linux/netfilter/nf_conntrack_tcp.h \
-                                             include/linux/netfilter/nf_conntrack_tcp.h
        cd $(DIR_APP) && ./configure --prefix=/usr
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
index 08ea86414bd512317e0e63fb6d4e3fe853655429..4a25c4ca5f81a66af1d77f297d04dfebcb119a06 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 2.6.26
+VER        = 2.6.32
 
 THISAPP    = libxml2-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -32,6 +32,8 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 
+CFLAGS    += -fno-strict-aliasing
+
 ###############################################################################
 # Top-level Rules
 ###############################################################################
@@ -40,7 +42,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 2d8d3805041edab967368b497642f981
+$(DL_FILE)_MD5 = 2621d322c16f0257e30f0ff2b13384de
 
 install : $(TARGET)
 
index 094f09e6455ede9742fc993e24a33d9eff44b088..0c8ac9fca1efe4b6d37231772d5587d4523fd6eb 100644 (file)
--- a/lfs/linux
+++ b/lfs/linux
 
 include Config
 
-VER        = 3.2.48
+VER        = 3.10.17
 
-RPI_PATCHES = linux-3.2.27-ada8b44
+RPI_PATCHES = linux-3.10.10-c1af7c6
+GRS_PATCHES = grsecurity-2.9.1-3.10.17-ipfire1.patch.xz
 
 THISAPP    = linux-$(VER)
 DL_FILE    = linux-$(VER).tar.xz
@@ -35,7 +36,7 @@ DIR_APP    = $(DIR_SRC)/$(THISAPP)
 CFLAGS     =
 CXXFLAGS   =
 
-PAK_VER    = 30
+PAK_VER    = 31
 DEPS      = ""
 
 VERSUFIX=ipfire$(KCFG)
@@ -65,15 +66,17 @@ endif
 # Top-level Rules
 ###############################################################################
 objects =$(DL_FILE) \
-       rpi-patches-$(RPI_PATCHES).patch.xz
+       rpi-patches-$(RPI_PATCHES).patch.xz \
+       $(GRS_PATCHES)
 
 
 $(DL_FILE)                             = $(URL_IPFIRE)/$(DL_FILE)
 rpi-patches-$(RPI_PATCHES).patch.xz    = $(URL_IPFIRE)/rpi-patches-$(RPI_PATCHES).patch.xz
+$(GRS_PATCHES)                         = $(URL_IPFIRE)/$(GRS_PATCHES)
 
-$(DL_FILE)_MD5                         = f560aa5fcf07e57ea0ca66fdfdb53ef1
-rpi-patches-$(RPI_PATCHES).patch.xz_MD5        = 966687ff27e450e04ff50e0da829dc00
-
+$(DL_FILE)_MD5                         = 0c52d1266fe1087bcfa6517646188ecc
+rpi-patches-$(RPI_PATCHES).patch.xz_MD5        = ef9274b3ff5d05daaaa4bdbe86ad00fc
+$(GRS_PATCHES)_MD5                     = 2c005d8f5e55da2f23cb92af3baa7108
 
 install : $(TARGET)
 
@@ -109,38 +112,59 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        ln -svf linux-$(VER) $(DIR_SRC)/linux
 
        # Linux Intermediate Queueing Device
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.2-imq.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/imq_kernel3.10.patch
 
        # ipp2p 0.8.2-ipfire
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.0-ipp2p-0.8.2-ipfire.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10-ipp2p-0.8.2-ipfire.patch
 
        # Layer7-patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/netfilter_layer7_2.22_kernel3.0.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/netfilter_layer7_2.22_kernel3.10-no_proc_interface.patch
+
+       # Grsecurity-patches
+ifneq "$(KCFG)" "-headers"
+ifneq "$(KCFG)" "-rpi"
+       cd $(DIR_APP) && xz -c -d $(DIR_DL)/$(GRS_PATCHES) | patch -Np1
+       cd $(DIR_APP) && rm localversion-grsec
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.7-disable-compat_vdso.patch
+endif
+endif
+
+       # Disable pcspeaker autoload
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.30-no-pcspkr-modalias.patch
+
+       # Remove ACPI Blacklist message
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6-silence-acpi-blacklist.patch
+
+       # DVB Patches
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.9-dvbsky-wot2.patch
+       cd $(DIR_APP) && patch -Np2 < $(DIR_SRC)/src/patches/v4l-dvb_fix_tua6034_pll.patch
+
+       # Wlan Patches
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/compat-drivers-3.8.3-ath_ignore_eeprom_regdomain.patch
+
+       # mISDN Patches
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/mISDN_hfc-s_add_id.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/mISDN-hfcusb-reportl1down.patch
 
        # Add LED trigger
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.2.33-ledtrig-netdev-1.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10.9-ledtrig-netdev-1.patch
 
        # Fix uevent PHYSDEVDRIVER
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.2.33_ipg-fix-driver-name.patch
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.32.27_mcs7830-fix-driver-name.patch
 
+
 ifeq "$(KCFG)" "-kirkwood"
        # Add dreamplug,guruplug and icy 62x0  support on ARM-kirkwood
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.2.25-arm_kirkwood_setups.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10.10-arm_kirkwood_setups.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10.10-mv_cesa_disable_failing_hmac_sha1.patch
 endif
 
-ifeq "$(MACHINE_TYPE)" "arm"
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.32.45_align_ssb_modtable_32bit_boundary.patch
-
-       # Reverse some asm optimizations that are incompatible with older gcc
-       cd $(DIR_APP) && patch -p1 -R < $(DIR_SRC)/src/patches/linux-2.6-arm-asm-constraint.patch
-endif
-
-ifeq "$(KCFG)" "-omap"
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.2-0001-panda-wlan-fix.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.2-0002-panda-i2c.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.2-panda-reboot.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.x-smsc95xx-add_mac_addr_param.patch
+ifeq "$(KCFG)" "-multi"
+#      cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.2-0001-panda-wlan-fix.patch
+#      cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.2-0002-panda-i2c.patch
+#      cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.2-panda-reboot.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10-smsc95xx-add_mac_addr_param.patch
 endif
 
 ifeq "$(KCFG)" "-rpi"
@@ -167,21 +191,21 @@ else
        cd $(DIR_APP) && sed -i -e 's/EXTRAVERSION\ =.*/EXTRAVERSION\ =\ -$(VERSUFIX)/' Makefile
 
 ifeq "$(KCFG)" "-kirkwood"
-       cd $(DIR_APP) && make $(MAKETUNING) CC="$(KGCC)" uImage
+       cd $(DIR_APP) && make $(MAKETUNING) CC="$(KGCC)" uImage modules
        cd $(DIR_APP) && cp -v arch/arm/boot/uImage /boot/vmlinuz-$(VER)-$(VERSUFIX)
        cd $(DIR_APP) && cp -v arch/arm/boot/uImage /boot/uImage-$(VERSUFIX)
 else
-ifeq "$(KCFG)" "-omap"
-       cd $(DIR_APP) && make $(MAKETUNING) CC="$(KGCC)" uImage
-       cd $(DIR_APP) && cp -v arch/arm/boot/uImage /boot/vmlinuz-$(VER)-$(VERSUFIX)
-       cd $(DIR_APP) && cp -v arch/arm/boot/uImage /boot/uImage-$(VERSUFIX)
+ifeq "$(KCFG)" "-multi"
+       cd $(DIR_APP) && make $(MAKETUNING) CC="$(KGCC)" zImage modules
+       cd $(DIR_APP) && cp -v arch/arm/boot/zImage /boot/vmlinuz-$(VER)-$(VERSUFIX)
+       cd $(DIR_APP) && cp -v arch/arm/boot/zImage /boot/zImage-$(VERSUFIX)
 else
 ifeq "$(KCFG)" "-rpi"
-       cd $(DIR_APP) && make $(MAKETUNING) CC="$(KGCC)" zImage
-       cd /boot  && cat first32k.bin $(DIR_APP)/arch/arm/boot/Image > kernel.img
-       cd $(DIR_APP) && cp -v /boot/kernel.img /boot/vmlinuz-$(VER)-$(VERSUFIX)
+       cd $(DIR_APP) && make $(MAKETUNING) CC="$(KGCC)" zImage modules
+       cd $(DIR_APP) && cp -v arch/arm/boot/zImage /boot/vmlinuz-$(VER)-$(VERSUFIX)
+       cd $(DIR_APP) && cp -v arch/arm/boot/zImage /boot/kernel.img
 else
-       cd $(DIR_APP) && make $(MAKETUNING) CC="$(KGCC)" bzImage
+       cd $(DIR_APP) && make $(MAKETUNING) CC="$(KGCC)" bzImage modules
        cd $(DIR_APP) && cp -v arch/i386/boot/bzImage /boot/vmlinuz-$(VER)-$(VERSUFIX)
        ln -sf vmlinuz-$(VER)-$(VERSUFIX) /boot/vmlinuz-$(VERSUFIX)
 endif
@@ -190,10 +214,17 @@ endif
        cd $(DIR_APP) && cp -v System.map /boot/System.map-$(VER)-$(VERSUFIX)
        cd $(DIR_APP) && cp -v .config /boot/config-$(VER)-$(VERSUFIX)
        ln -sf System.map-$(VER)-$(VERSUFIX) /boot/System.map-$(VERSUFIX)
-       cd $(DIR_APP) && make CC="$(KGCC)" $(MAKETUNING) modules
        cd $(DIR_APP) && make CC="$(KGCC)" $(MAKETUNING) modules_install
        cd $(DIR_APP) && make CC="$(KGCC)" $(MAKETUNING) firmware_install
 
+ifeq "$(MACHINE_TYPE)" "arm"
+       cd $(DIR_APP) && make CC="$(KGCC)" $(MAKETUNING) dtbs
+       cd $(DIR_APP) && for f in $$(find arch/arm/boot/dts/ -name *.dtb); do \
+                               mkdir -p /boot/dtb-$(VER)-$(VERSUFIX) ; \
+                               install -m 644 $$f /boot/dtb-$(VER)-$(VERSUFIX)/ ; \
+                       done
+endif
+
 ifeq "$(LASTKERNEL)" "1"
        # Only do this once
        cd $(DIR_APP) && install -m 755 usr/gen_init_cpio /sbin/
@@ -220,11 +251,9 @@ ifeq "$(LASTKERNEL)" "1"
        echo "options ipv6 disable_ipv6=1" > /etc/modprobe.d/ipv6
 endif
 
-ifneq "$(MACHINE_TYPE)" "arm"
-       # Disable geode_aes modul
-       mv /lib/modules/$(VER)-$(VERSUFIX)/kernel/drivers/crypto/geode-aes.ko \
+       # Disable geode_aes modul if exist
+       -mv /lib/modules/$(VER)-$(VERSUFIX)/kernel/drivers/crypto/geode-aes.ko \
            /lib/modules/$(VER)-$(VERSUFIX)/kernel/drivers/crypto/geode-aes.ko.off
-endif
 endif
 
        @rm -rf $(DIR_SRC)/patch-o-matic* $(DIR_SRC)/iptables* $(DIR_SRC)/squashfs* $(DIR_SRC)/netfilter-layer7-*
diff --git a/lfs/linux2 b/lfs/linux2
deleted file mode 100644 (file)
index 474e094..0000000
+++ /dev/null
@@ -1,252 +0,0 @@
-###############################################################################
-#                                                                             #
-# IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2013  IPFire Team <info@ipfire.org>                      #
-#                                                                             #
-# This program is free software: you can redistribute it and/or modify        #
-# it under the terms of the GNU General Public License as published by        #
-# the Free Software Foundation, either version 3 of the License, or           #
-# (at your option) any later version.                                         #
-#                                                                             #
-# This program is distributed in the hope that it will be useful,             #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
-# GNU General Public License for more details.                                #
-#                                                                             #
-# You should have received a copy of the GNU General Public License           #
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
-#                                                                             #
-###############################################################################
-
-###############################################################################
-# Definitions
-###############################################################################
-
-include Config
-
-PATCHLEVEL = .61
-VER        = 2.6.32.61
-
-THISAPP    = linux-$(VER)
-DL_FILE    = $(THISAPP).tar.xz
-DL_FROM    = $(URL_IPFIRE)
-DIR_APP    = $(DIR_SRC)/$(THISAPP)
-CFLAGS     =
-CXXFLAGS   =
-
-PAK_VER    = 27
-DEPS      = ""
-
-# Normal build or XEN build.
-#
-
-VERSUFIX=ipfire$(KCFG)
-
-ifeq "$(HEADERS)" "1"
-ifeq "$(TOOLS)" "1"
-       TARGET = $(DIR_INFO)/linux-libc-headers-$(VER)-$(VERSUFIX)-tools
-       HEADERS_PREFIX = /tools
-else
-       TARGET = $(DIR_INFO)/linux-libc-headers-$(VER)-$(VERSUFIX)
-       HEADERS_PREFIX = /usr
-endif
-else
-       TARGET = $(DIR_INFO)/linux-xen-$(VER)-$(VERSUFIX)
-endif
-
-ifeq "$(MACHINE_TYPE)" "arm"
-       HEADERS_ARCH=arm
-else
-       HEADERS_ARCH=x86
-endif
-
-ifeq "$(KCFG)" ""
-LASTKERNEL=1
-endif
-ifeq "$(KCFG)" "-kirkwood"
-LASTKERNEL=1
-endif
-
-###############################################################################
-# Top-level Rules
-###############################################################################
-objects =$(DL_FILE) \
-       netfilter-layer7-v2.22.tar.gz \
-       patch-2.6.16-nath323-1.3.bz2 \
-       reiser4-for-2.6.32.patch.bz2 \
-       xen-patches-2.6.32-2g.tar.bz2
-
-$(DL_FILE)                             = $(URL_IPFIRE)/$(DL_FILE)
-netfilter-layer7-v2.22.tar.gz          = $(URL_IPFIRE)/netfilter-layer7-v2.22.tar.gz
-patch-2.6.16-nath323-1.3.bz2           = $(URL_IPFIRE)/patch-2.6.16-nath323-1.3.bz2
-reiser4-for-2.6.32.patch.bz2           = $(URL_IPFIRE)/reiser4-for-2.6.32.patch.bz2
-xen-patches-2.6.32-2g.tar.bz2          = $(URL_IPFIRE)/xen-patches-2.6.32-2g.tar.bz2
-
-$(DL_FILE)_MD5                         = 37e0afeb308b27a81dafa55c367a6105
-netfilter-layer7-v2.22.tar.gz_MD5      = 98dff8a3d5a31885b73341633f69501f
-patch-2.6.16-nath323-1.3.bz2_MD5       = f926409ff703a307baf54b57ab75d138
-reiser4-for-2.6.32.patch.bz2_MD5       = 3246397973d9271eb8e6d7c97c5d2d91
-xen-patches-2.6.32-2g.tar.bz2_MD5      = d259a847c9aa73cd6e5c3605d9657d66
-
-install : $(TARGET)
-
-check : $(patsubst %,$(DIR_CHK)/%,$(objects))
-
-download :$(patsubst %,$(DIR_DL)/%,$(objects))
-
-md5 : $(subst %,%_MD5,$(objects))
-
-dist:
-       @$(PAK)
-###############################################################################
-# Downloading, checking, md5sum
-###############################################################################
-
-$(patsubst %,$(DIR_CHK)/%,$(objects)) :
-       @$(CHECK)
-
-$(patsubst %,$(DIR_DL)/%,$(objects)) :
-       @$(LOAD)
-
-$(subst %,%_MD5,$(objects)) :
-       @$(MD5)
-
-###############################################################################
-# Installation Details
-###############################################################################
-
-$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
-       @$(PREBUILD)
-       @rm -rf $(DIR_APP) $(DIR_SRC)/linux $(DIR_SRC)/linux-*-suse_xen_patches $(DIR_SRC)/xen-* && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
-
-       ln -svf linux-$(VER) $(DIR_SRC)/linux
-
-ifeq "$(KCFG)" "-xen"
-       # Apply gentoo Xen patches
-       mkdir -p $(DIR_SRC)/xen-patches
-       cd $(DIR_SRC)/xen-patches && tar jxf $(DIR_DL)/xen-patches-2.6.32-2g.tar.bz2
-
-       for x in `ls -1 $(DIR_SRC)/xen-patches/*.patch1`; do \
-               echo "*********** [Patch: $$x]"; \
-               cd $(DIR_APP) && pwd && patch -Np1 < $$x || exit 1; \
-       done
-       rm -rf $(DIR_SRC)/xen-patches
-
-       # Linux Intermediate Queueing Device
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.32.8-xen-imq-test2.patch
-else
-       # Linux Intermediate Queueing Device
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.32-imq-test2.patch
-endif
-
-       # Reiser4 (don't check if fail (some patches are already in xen patchset)
-       -cd $(DIR_APP) && bzcat $(DIR_DL)/reiser4-for-2.6.32.patch.bz2 | patch -Np1
-
-       # ipp2p 0.8.2-pomng
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.32.8-ipp2p-0.8.2-pomng.patch
-
-       # Layer7-patch
-       cd $(DIR_SRC) && rm -rf $(DIR_SRC)/netfilter-layer7-v2.22
-       cd $(DIR_SRC) && tar xzf $(DIR_DL)/netfilter-layer7-v2.22.tar.gz
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/netfilter-layer7-v2.22/kernel-2.6.25-2.6.28-layer7-2.22.patch
-
-       # Add some more LED triggers
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.32.11-netdev-1.patch
-
-       # Huawei Android Phones (Vodafone V845, T-Mobile Pulse/mini ...)
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.32.15-option_add_huawei_android.patch
-
-       # Fix uevent PHYSDEVDRIVER
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.32.27_ipg-fix-driver-name.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.32.27_mcs7830-fix-driver-name.patch
-
-       # Fix mv_cesa
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.32-crypto-mv_cesa.patch
-
-ifeq "$(KCFG)" "-kirkwood"
-       # Add dreamplug,guruplug and icy 62x0  support on ARM-kirkwood
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.32.57-arm_kirkwood_setups.patch
-endif
-
-ifeq "$(MACHINE_TYPE)" "arm"
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.32.45_align_ssb_modtable_32bit_boundary.patch
-endif
-
-ifeq "$(HEADERS)" "1"
-       # Install the header files
-       cd $(DIR_APP) && make ARCH=$(HEADERS_ARCH) INSTALL_HDR_PATH=dest headers_install
-       -mkdir -pv $(BUILDROOT)/$(HEADERS_PREFIX)/include
-       cd $(DIR_APP) && find dest/include \( -name .install -o -name ..install.cmd \) -delete
-       cd $(DIR_APP) && cp -rv dest/include/* $(BUILDROOT)/$(HEADERS_PREFIX)/include
-else
-
-       # Install ipfire logo
-       cd $(DIR_APP) && cp -vf $(DIR_SRC)/config/kernel/ipfire_logo.ppm \
-               drivers/video/logo/logo_linux_clut224.ppm
-
-       # Cleanup kernel source
-       cp $(DIR_SRC)/config/kernel/kernel.config.$(MACHINE)-$(VERSUFIX) $(DIR_APP)/.config
-       cd $(DIR_APP) && make CC="$(KGCC)" oldconfig
-       cd $(DIR_APP) && make CC="$(KGCC)" clean
-       cd $(DIR_APP) && sed -i -e 's/EXTRAVERSION\ =.*/EXTRAVERSION\ =\ $(PATCHLEVEL)-$(VERSUFIX)/' Makefile
-
-ifeq "$(KCFG)" "-xen"
-       cd $(DIR_APP) && make $(MAKETUNING) CC="$(KGCC)" vmlinuz
-       cd $(DIR_APP) && cp -v arch/i386/boot/vmlinuz /boot/vmlinuz-$(VER)-$(VERSUFIX)
-else
-ifeq "$(KCFG)" "-kirkwood"
-       cd $(DIR_APP) && make $(MAKETUNING) CC="$(KGCC)" uImage
-       cd $(DIR_APP) && cp -v arch/arm/boot/uImage /boot/vmlinuz-$(VER)-$(VERSUFIX)
-       cd $(DIR_APP) && cp -v arch/arm/boot/uImage /boot/uImage-$(VERSUFIX)
-else
-       cd $(DIR_APP) && make $(MAKETUNING) CC="$(KGCC)" bzImage
-       cd $(DIR_APP) && cp -v arch/i386/boot/bzImage /boot/vmlinuz-$(VER)-$(VERSUFIX)
-endif
-endif
-       cd $(DIR_APP) && cp -v System.map /boot/System.map-$(VER)-$(VERSUFIX)
-       cd $(DIR_APP) && cp -v .config /boot/config-$(VER)-$(VERSUFIX)
-       ln -sf vmlinuz-$(VER)-$(VERSUFIX) /boot/vmlinuz-$(VERSUFIX)
-       ln -sf System.map-$(VER)-$(VERSUFIX) /boot/System.map-$(VERSUFIX)
-       cd $(DIR_APP) && make CC="$(KGCC)" $(MAKETUNING) modules
-       cd $(DIR_APP) && make CC="$(KGCC)" $(MAKETUNING) modules_install
-       cd $(DIR_APP) && make CC="$(KGCC)" $(MAKETUNING) firmware_install
-
-ifeq "$(LASTKERNEL)" "1"
-       # Only do this once
-       cd $(DIR_APP) && install -m 755 usr/gen_init_cpio /sbin/
-
-       # Blacklist matroxfb_base
-       echo "blacklist matroxfb_base" >> /etc/modprobe.d/framebuffer
-       # Blacklist old framebuffer modules
-       for f in $$(find /lib/modules/$(VER)-$(VERSUFIX)/kernel/drivers/video -name *fb.ko); do \
-               echo "blacklist $$(basename $$f)" >> /etc/modprobe.d/framebuffer ; \
-       done
-       # Blacklist new drm framebuffer modules
-       for f in $$(ls -1 /lib/modules/$(VER)-$(VERSUFIX)/kernel/drivers/gpu/drm/*/*.ko); do \
-               echo "blacklist $$(basename $$f)" >> /etc/modprobe.d/framebuffer ; \
-       done
-       sed -i -e "s|.ko||g" /etc/modprobe.d/framebuffer
-
-       # Blacklist isdn modules
-       for f in $$(find /lib/modules/$(VER)-$(VERSUFIX)/kernel/drivers/isdn -name *.ko); do \
-               echo "blacklist $$(basename $$f)" >> /etc/modprobe.d/isdn ; \
-       done
-       sed -i -e "s|.ko||g" /etc/modprobe.d/isdn
-
-       # Disable ipv6 at runtime
-       echo "options ipv6 disable_ipv6=1" > /etc/modprobe.d/ipv6
-endif
-
-       # Remove mISDN modules
-       rm -rvf /lib/modules/$(VER)-$(VERSUFIX)/kernel/drivers/isdn/mISDN
-       rm -rvf /lib/modules/$(VER)-$(VERSUFIX)/kernel/drivers/isdn/hardware/mISDN
-
-ifneq "$(MACHINE_TYPE)" "arm"
-       # Disable geode_aes modul
-       mv /lib/modules/$(VER)-$(VERSUFIX)/kernel/drivers/crypto/geode-aes.ko \
-           /lib/modules/$(VER)-$(VERSUFIX)/kernel/drivers/crypto/geode-aes.ko.off
-endif
-endif
-
-       @rm -rf $(DIR_SRC)/patch-o-matic* $(DIR_SRC)/iptables* $(DIR_SRC)/squashfs* $(DIR_SRC)/netfilter-layer7-*
-       @$(POSTBUILD)
diff --git a/lfs/lzo b/lfs/lzo
index e7f29e8c4c80d1674a91941044f78edf59a226db..69bc5cd40e2a1653854e0a9a8d83fe2f2f84978b 100644 (file)
--- a/lfs/lzo
+++ b/lfs/lzo
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 2.02
+VER        = 2.06
 
 THISAPP    = lzo-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 6760e5819f4238328709bf93bf10071c
+$(DL_FILE)_MD5 = 95380bd4081f85ef08c5209f4107e9f8
 
 install : $(TARGET)
 
index 4914baed54cf47d8b86c2c693a592830a3fa7d9a..d98ea872bd89cd0d748fe3440afed19c90a124ac 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2011  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2013  IPFire Team  <info@ipfire.org>                     #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 4.20
+VER        = 5.01
 
 THISAPP    = memtest86+-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -41,7 +41,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = ef62c2f5be616676c8c62066dedc46b3
+$(DL_FILE)_MD5 = 43c5832baa919e1206e251e735cdee2d
 
 install : $(TARGET)
 
@@ -71,8 +71,10 @@ $(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) && sed -i -e "s| -fno-stack-protector||g" Makefile
-       cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE)
+       # Enable SMP as default
+       cd $(DIR_APP) && sed -i -e "s|CONSERVATIVE_SMP 1|CONSERVATIVE_SMP 0|g" config.h
+       cd $(DIR_APP) && sed -i -e "s|scp |echo |g" Makefile
+       cd $(DIR_APP) && make $(EXTRA_MAKE)
        -mkdir -p /usr/lib/memtest86+
        cd $(DIR_APP) && cp -f memtest.bin /usr/lib/memtest86+
        @rm -rf $(DIR_APP)
index 7129ed58a3a6c213578c50dd73ba0a999301d46e..a314624882dae6d5fb830a0dabe82dc7a6812540 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.7
+VER        = 1.8
 
 THISAPP    = miniupnpd-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -42,7 +42,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 5af9e8332d34a7b490d0d2ed3e674196
+$(DL_FILE)_MD5 = 0d8a8e936d5a0012cb260a3b972acbf3
 
 install : $(TARGET)
 
@@ -76,7 +76,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
        cd $(DIR_APP) && make -f Makefile.linux \
-               CFLAGS="$(CFLAGS) -DIPTABLES_143 -I/usr/src/linux/include"
+               CFLAGS="$(CFLAGS) -DIPTABLES_143" LIBS="-lip4tc -lnfnetlink"
        cd $(DIR_APP) && install -m 755 miniupnpd /usr/sbin
        -mkdir -pv /etc/miniupnpd
        cp -vf $(DIR_SRC)/config/miniupnpd/miniupnpd.conf /etc/miniupnpd/miniupnpd.conf
index 410dad6c45e1cf5b491b98462605fa7ec3da595b..5fcd7b3acfafee2bfd1e676d03d15f9ead01f4a5 100644 (file)
--- a/lfs/mysql
+++ b/lfs/mysql
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 5.0.24a
+VER        = 5.0.96
 
 THISAPP    = mysql-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = mysql
-PAK_VER    = 1
+PAK_VER    = 2
 
 ###############################################################################
 # Top-level Rules
@@ -42,7 +42,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 6b07546389f75c52611adb7af38c3667
+$(DL_FILE)_MD5 = bf280949049161aa68cf29e600d9ec79
 
 install : $(TARGET)
 
index c17c95f68b5985cb0482953db3a17fec36351d53..08b4815f38bc0a8d2c7a3ebfa57b217f8ed34832 100644 (file)
@@ -70,12 +70,14 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE)
        cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/$(THISAPP)-gcc34-3.patch
-       cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/$(THISAPP)-kernel_headers-2.patch
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/$(THISAPP)-kernel_headers-3.patch
        cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/$(THISAPP)-mii_ioctl-1.patch
        cd $(DIR_APP) && yes "" | make config
        cd $(DIR_APP) && sed -i -e 's|HAVE_IP_TOOLS 0|HAVE_IP_TOOLS 1|g' \
+                               -e 's|HAVE_HWSTRIP 1|HAVE_HWSTRIP 0|g' \
                                        -e 's|HAVE_MII 0|HAVE_MII 1|g' config.h
        cd $(DIR_APP) && sed -i -e 's|# HAVE_IP_TOOLS=0|HAVE_IP_TOOLS=1|g' \
+                               -e 's|HAVE_HWSTRIP 1|HAVE_HWSTRIP 0|g' \
                                        -e 's|# HAVE_MII=0|HAVE_MII=1|g' config.make
        cd $(DIR_APP) && make
        cd $(DIR_APP) && make update
index 229ed8f8f8c3a8dbc40aa7abc1b0c9c793c2a32d..baae59598dcd0d7240a37566bead30047918a332 100644 (file)
@@ -37,6 +37,8 @@ PAK_VER    = 1
 
 DEPS       = ""
 
+CFLAGS    += -fno-PIC
+
 ###############################################################################
 # Top-level Rules
 ###############################################################################
index 11608b36d13cb2186d82e4da6b75cf2e8c6b36ea..6f90f89bb1379ef66f02f7e502ec546f934070b2 100644 (file)
@@ -54,7 +54,6 @@ md5 :
 
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
-       @rm -rf $(DIR_APP)
        -mkdir -p /opt/pakfire/{db/{meta,lists,rootfiles,installed,core},etc,lib,tmp} \
                /var/log/pakfire /var/cache/pakfire
        cp -fRv $(DIR_SRC)/src/pakfire/* $(DIR_APP)
similarity index 89%
rename from lfs/mbr
rename to lfs/paxctl
index c43f2fdb28292d192d570de219e8284500232fad..c55f293aa9a0ad27d07efeeb727011d400229807 100644 (file)
--- a/lfs/mbr
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007  Michael Tremer & Christian Schmidt                      #
+# Copyright (C) 2013  IPFire Team  <info@ipfire.org>                          #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
 
 include Config
 
-VER        = 1.1.11
+VER        = 0.7
 
-THISAPP    = mbr-$(VER)
-DL_FILE    = $(THISAPP).tar.gz
+THISAPP    = paxctl-$(VER)
+DL_FILE    = $(THISAPP).tar.bz2
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
-SUP_ARCH   = i586
 
 ###############################################################################
 # Top-level Rules
@@ -41,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 4e406ded185f94c2d2bf5fc793ac1842
+$(DL_FILE)_MD5 = 25bf9df751976e87be20243e75291263
 
 install : $(TARGET)
 
@@ -51,6 +50,9 @@ download :$(patsubst %,$(DIR_DL)/%,$(objects))
 
 md5 : $(subst %,%_MD5,$(objects))
 
+dist: 
+       @$(PAK)
+
 ###############################################################################
 # Downloading, checking, md5sum
 ###############################################################################
@@ -70,8 +72,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) && ./configure --prefix=/usr
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
        @rm -rf $(DIR_APP)
index c02d5cc5f9279da7e938fc56d009e7db2bb061d3..49b3f1a9b975c50308a1bda8e89e850cd45b2f71 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 855e997
+VER        = d4f5315
 THISAPP    = rpi-firmware-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
 DL_FROM    = $(URL_IPFIRE)
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = c73700a10d792517b2b87fd28a6c9800
+$(DL_FILE)_MD5 = 65c0a859ab96cb563a80e3529c78f555
 
 install : $(TARGET)
 
index 2e65268edc9d5e08f8d63c7a4facde9a38e96c63..57c822cc2bc8e72b2f862a37e479224e2282b3c8 100644 (file)
--- a/lfs/rsync
+++ b/lfs/rsync
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2012  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2013  IPFire Team  <info@ipfire.org>                     #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 3.0.9
+VER        = 3.1.0
 
 THISAPP    = rsync-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = rsync
-PAK_VER    = 7
+PAK_VER    = 8
 
 DEPS       = ""
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 5ee72266fe2c1822333c407e1761b92b
+$(DL_FILE)_MD5 = 3be148772a33224771a8d4d2a028b132
 
 install : $(TARGET)
 
index 0171627a4ac1fd50216395678845e1e2d64c4925..ce53ebac1ee7959aa185bd1bf7fdb9fd5a65bbda 100644 (file)
--- a/lfs/samba
+++ b/lfs/samba
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 3.6.18
+VER        = 3.6.19
 
 THISAPP    = samba-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = samba
-PAK_VER    = 52
+PAK_VER    = 53
 
 DEPS       = "cups"
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = c7eec3e83fe4c4750240a8a0a214bbd4
+$(DL_FILE)_MD5 = afe9c7c590f3093555cd6e870d2532e1
 
 install : $(TARGET)
 
index beb0abbcb2d4fb0a884080c1856c8c7f3b826092..5c15f4183778d83ede77ab86fa36f48cda25d0ed 100644 (file)
@@ -121,4 +121,11 @@ $(TARGET) :
        -mkdir -pv /usr/share/doc/licenses/
        cp -vf $(DIR_SRC)/doc/COPYING /usr/share/doc/licenses/GPLv3
 
+       # System release
+       echo "$(SYSTEM_RELEASE)" > /etc/system-release
+
+       # Pakfire
+       -mkdir -pv /opt/pakfire/db/core
+       echo "$(PAKFIRE_CORE)" > /opt/pakfire/db/core/mine
+
        @$(POSTBUILD)
index 1aed31feca4c560ab4040202becc72422f204964..f573cd851041cc28a5ff7be8eba70c084ef77de5 100644 (file)
@@ -76,8 +76,7 @@ $(subst %,%_MD5,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
-
-       cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/strongswan-4.5.3_ipfire.patch
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/strongswan-5.0.2_ipfire.patch
 
        cd $(DIR_APP) && [ -x "configure" ] || ./autogen.sh
        cd $(DIR_APP) && ./configure \
index 3c1368dcf249c2e6e338d3964e42271a0026bf19..51c2fbd4d87beea7606ae5bdaeecf4bd7e4d39b8 100644 (file)
@@ -36,6 +36,8 @@ PAK_VER    = 9
 
 DEPS       = "libevent2"
 
+CXXFLAGS  += -fno-exceptions
+
 ###############################################################################
 # Top-level Rules
 ###############################################################################
index 551fea5269d536970e432df50266cc97f300df90..46d8b9ef8a720e5be8e800e86c934fc856bf8166 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2011  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2013  IPFire Team  <info@ipfire.org>                     #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
 
 include Config
 
-VER        = 2011.12
-# Linare version: git clone git://git.linaro.org/boot/u-boot-linaro-stable.git
-# Branch: origin/Linaro-u-boot-2011.12
+VER        = 2013.07
 
-THISAPP    = uboot-panda-$(VER)
-DL_FILE    = $(THISAPP).tar.xz
+THISAPP    = u-boot-$(VER)
+DL_FILE    = $(THISAPP).tar.bz2
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
@@ -43,7 +41,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 19975e9bb4b10d8e67db84e51fcaa43b
+$(DL_FILE)_MD5 = 8445162690052e6afd4b8f87af2bb557
 
 install : $(TARGET)
 
@@ -75,13 +73,47 @@ dist:
 
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
-       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar Jxf $(DIR_DL)/$(DL_FILE)
-       cd $(DIR_APP) && make tools $(MAKETUNING)
-       cd $(DIR_APP) && install tools/mkimage /usr/bin/
-       cd $(DIR_APP) && make omap4_panda_config
-       cd $(DIR_APP) && make $(MAKETUNING)
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
+
+       # Pandaboard
+       -mkdir -pv /usr/share/u-boot/pandaboard
+       cd $(DIR_APP) && make CROSS_COMPILE="" omap4_panda_config
+       cd $(DIR_APP) && make CROSS_COMPILE="" HOSTCC="gcc $(CFLAGS)"
+       cd $(DIR_APP) && install -v -m 644 MLO u-boot.img \
+               /usr/share/u-boot/pandaboard
+       # Install pandaboard uboot as default
        cd $(DIR_APP) && install MLO /boot/
-       cd $(DIR_APP) && install u-boot.bin /boot/
+       cd $(DIR_APP) && install u-boot.img /boot/
        cp -vf $(DIR_SRC)/config/u-boot/* /boot/
+       cd $(DIR_APP) && make distclean
+
+       # Wandboard Quad
+       -mkdir -pv /usr/share/u-boot/wandboard_quad
+       cd $(DIR_APP) && make CROSS_COMPILE="" wandboard_quad_config
+       cd $(DIR_APP) && make CROSS_COMPILE="" HOSTCC="gcc $(CFLAGS)"
+       cd $(DIR_APP) && install -v -m 644 u-boot.imx \
+               /usr/share/u-boot/wandboard_quad
+       cd $(DIR_APP) && make distclean
+
+       # Wandboard Dual
+       -mkdir -pv /usr/share/u-boot/wandboard_dl
+       cd $(DIR_APP) && make CROSS_COMPILE="" wandboard_dl_config
+       cd $(DIR_APP) && make CROSS_COMPILE="" HOSTCC="gcc $(CFLAGS)"
+       cd $(DIR_APP) && install -v -m 644 u-boot.imx \
+               /usr/share/u-boot/wandboard_dl
+       cd $(DIR_APP) && make distclean
+
+       # Wandboard Solo
+       -mkdir -pv /usr/share/u-boot/wandboard_solo
+       cd $(DIR_APP) && make CROSS_COMPILE="" wandboard_solo_config
+       cd $(DIR_APP) && make CROSS_COMPILE="" HOSTCC="gcc $(CFLAGS)"
+       cd $(DIR_APP) && install -v -m 644 u-boot.imx \
+               /usr/share/u-boot/wandboard_solo
+       cd $(DIR_APP) && make distclean
+
+       # mkimage
+       cd $(DIR_APP) && make CROSS_COMPILE="" HOSTCC="gcc $(CFLAGS)" tools
+       cd $(DIR_APP) && install -v -m 755 tools/mkimage /usr/bin
+
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
diff --git a/lfs/usb-stick b/lfs/usb-stick
deleted file mode 100644 (file)
index 1bfc8a1..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-###############################################################################
-#                                                                             #
-# IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2013  IPFire Team  <info@ipfire.org>                     #
-#                                                                             #
-# This program is free software: you can redistribute it and/or modify        #
-# it under the terms of the GNU General Public License as published by        #
-# the Free Software Foundation, either version 3 of the License, or           #
-# (at your option) any later version.                                         #
-#                                                                             #
-# This program is distributed in the hope that it will be useful,             #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
-# GNU General Public License for more details.                                #
-#                                                                             #
-# You should have received a copy of the GNU General Public License           #
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
-#                                                                             #
-###############################################################################
-
-###############################################################################
-# Definitions
-###############################################################################
-
-include Config
-
-VER = ipfire
-
-THISAPP    = usb-stick
-TARGET     = $(DIR_INFO)/$(THISAPP)
-
-###############################################################################
-# Top-level Rules
-###############################################################################
-
-install : $(TARGET)
-
-check :
-
-download :
-
-md5 :
-
-###############################################################################
-# Installation Details
-###############################################################################
-IMGfdd := /install/images/$(SNAME)-$(VERSION)-install-usb-fdd.$(MACHINE)-full-core$(CORE).img
-IMGhdd := /install/images/$(SNAME)-$(VERSION)-install-usb-hdd.$(MACHINE)-full-core$(CORE).img
-IMGfs  := /install/images/fs
-
-DISKSIZE=120000
-
-define COPY_TO_IMG
-       mkdosfs -n IPFIRE -F 16 -I $$IMAGE && \
-       for i in /0 `seq 0 7`; do \
-               [ -e /dev/loop$${i} ] || continue; \
-               if (! losetup /dev/loop$${i} >/dev/null 2>&1 ); then \
-                       LOOPDEV="/dev/loop$${i}"; \
-                       break; \
-               fi; \
-       done; \
-       losetup $$LOOPDEV $$IMAGE && \
-       mount -t vfat $$LOOPDEV /install/mnt && \
-       cp -fR /install/cdrom/* /install/mnt && \
-       mv /install/mnt/boot/isolinux /install/mnt/boot/syslinux && \
-       mv /install/mnt/boot/syslinux/isolinux.cfg \
-          /install/mnt/boot/syslinux/syslinux.cfg && \
-       umount /install/mnt && \
-       losetup -d $$LOOPDEV && \
-       syslinux $$IMAGE
-endef
-
-$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
-
-       # usb-fdd superfloppy (partitionless)
-       # compute size +32 blocks for bootsector/fat/etc...
-       dd bs=1024 count=$$((`du -k -s /install/cdrom | awk '{print $$1}'` + 2048 )) \
-               if=/dev/zero \
-               of=$(IMGfdd)
-       IMAGE=$(IMGfdd); $(COPY_TO_IMG)
-
-       # Partitionned images : make a file system bigger than iso size
-       # that fit on 128MB key to let free space available
-       # on the unique partition. Image will be compressed later
-       dd bs=1k if=/dev/zero of=$(IMGfs) count=$(DISKSIZE)
-       IMAGE=$(IMGfs); $(COPY_TO_IMG)
-       
-       # usb-hdd (64 heads, 32 sectors geometry, on a partition 1)
-       # use 64 heads as 256 does not work on Award bios (Asus A7V8X-X Gilles)
-       # use 32 sectors a minima or device is not recognised as hard disk (Frank)
-       # add 32 to IMGfs as first partition start at 32
-       COUNT=$$((`du -k -s $(IMGfs) | awk '{print $$1}'` + 32 )); \
-       dd bs=1k if=/dev/zero of=$(IMGhdd) count=$$COUNT
-       # write mbr before partitioning save a 'not msdos fs' warning from sfdisk
-       /usr/sbin/install-mbr -f $(IMGhdd)
-       echo -e "0,,6,*\n;\n;\n;" | sfdisk -qLD -H 64 -S 32 $(IMGhdd)
-       # copy the entire partition, make the fs and dd back
-       dd if=$(IMGfs) of=$(IMGhdd) bs=512 seek=32
-
-       gzip -f9 $(IMGfdd) $(IMGhdd)
-       rm -rf $$LFS/tmp/* $(IMGfs)
diff --git a/lfs/vdr b/lfs/vdr
index b1feb0152c3352cc0457124ac242071ebf5d547d..161b04ee1e8cd3446b7d51cca0baeb9ba85bce52 100644 (file)
--- a/lfs/vdr
+++ b/lfs/vdr
 
 include Config
 
-VER        = 2.0.1
+VER        = 2.0.3
+
+# VDRPLUGVER must match with APIVERSION in config.h
+# after change this update also all vdr plugins
 VDRPLUGVER = 2.0.0
+
 THISAPP    = vdr-$(VER)
 DL_FILE    = $(THISAPP).tar.bz2
 
@@ -33,7 +37,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = vdr
-PAK_VER    = 7
+PAK_VER    = 8
 
 DEPS       = "vdr_streamdev"
 
@@ -61,7 +65,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE)  = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5  = e1b7a76c57c96300829dccd39eb20e7d
+$(DL_FILE)_MD5  = dd8fb1642bdfa7feb0e9a8ae41e9ef2f
 
 install : $(TARGET)
 
diff --git a/lfs/vim b/lfs/vim
index 3935d335162037091395007e7a338fc48d7247af..8928dbd92ba6a6fc373240371c0592c4409b370c 100644 (file)
--- a/lfs/vim
+++ b/lfs/vim
 
 include Config
 
-VER        = 7.2
+VER        = 7.4
 
 THISAPP    = vim-$(VER)
 DL_FILE    = $(THISAPP).tar.bz2
 DL_FROM    = $(URL_IPFIRE)
-DIR_APP    = $(DIR_SRC)/vim72
+DIR_APP    = $(DIR_SRC)/vim74
 TARGET     = $(DIR_INFO)/$(THISAPP)
 
 ###############################################################################
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = f0901284b338e448bfd79ccca0041254
+$(DL_FILE)_MD5 = 607e135c559be642f210094ad023dc65
 
 install : $(TARGET)
 
@@ -70,19 +70,18 @@ $(subst %,%_MD5,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE)
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/vim-7.2-fixes-4.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/vim-7.2-mandir-1.patch
        cd $(DIR_APP) && echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h
-       cd $(DIR_APP) && ./configure --prefix=/usr --enable-multibyte --disable-nls
+       cd $(DIR_APP) && ./configure \
+               --prefix=/usr \
+               --with-features=huge \
+               --enable-multibyte \
+               --enable-gui=no \
+               --disable-nls
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
-       ln -sv vim /usr/bin/vi
-       echo "set nocompatible" >  /etc/vimrc
-       echo "set backspace=2"  >> /etc/vimrc
-       echo "set ruler"                >> /etc/vimrc
-       echo "syntax on"                >> /etc/vimrc
-       echo -e "if (&term == \"iterm\") || (&term == \"putty\")" >> /etc/vimrc
-       echo "  set background=dark"    >> /etc/vimrc
-       echo "endif"                    >> /etc/vimrc
+
+       ln -svf vim /usr/bin/vi
+       install -m 644 $(DIR_SRC)/config/vim/vimrc /etc/vimrc
+
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
index a18a08a02c26e57db8534ecda72134887c992310..c661a80b049c6b9bbac43342adade5c745c98e65 100644 (file)
@@ -25,7 +25,7 @@
 include Config
 
 
-VER        = 20121111
+VER        = 20130331
 
 THISAPP    = w_scan-$(VER)
 DL_FILE    = $(THISAPP).tar.bz2
@@ -33,7 +33,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = w_scan
-PAK_VER    = 4
+PAK_VER    = 5
 
 DEPS       = ""
 
@@ -45,7 +45,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 30da05747fed9988e11ebc7745f5e71f
+$(DL_FILE)_MD5 = dfc14a4707321e068a594d6899398df8
 
 install : $(TARGET)
 
index 1c2624e2e705e391cd629568e24da699279abb4a..94294cf52718198b9fef45056d9fccee11284bbf 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2012  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2013  IPFire Team  <info@ipfire.org>                     #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
@@ -29,7 +29,7 @@ VER = ipfire
 THISAPP    = xen-image
 TARGET     = $(DIR_INFO)/$(THISAPP)
 
-KVER2 = `grep "^VER " $(DIR_SRC)/lfs/linux2 | sed "s| ||g" | cut -d"=" -f2`
+KERN_PACK = `grep "^PAK_VER " $(DIR_SRC)/lfs/linux | sed "s| ||g" | cut -d"=" -f2`
 
 ###############################################################################
 # Top-level Rules
@@ -46,145 +46,21 @@ md5 :
 ###############################################################################
 # Installation Details
 ###############################################################################
-IMGinst  := /install/images/$(SNAME)-$(VERSION).xen.$(MACHINE)-full-core$(CORE).tar.bz2
-MNThdd   := /install/harddisk
-
-IMGboot  := /install/images/$(SNAME)/$(SNAME)-boot.img
-IMGswap  := /install/images/$(SNAME)/$(SNAME)-swap.img
-IMGroot  := /install/images/$(SNAME)/$(SNAME)-root.img
-IMGvar   := /install/images/$(SNAME)/$(SNAME)-var.img
-
-SIZEboot := 30
-SIZEswap := 512
-SIZEroot := 512
-SIZEvar  := 950
+IMGinst  := /install/images/$(SNAME)-$(VERSION).xen.$(MACHINE)-downloader-core$(CORE).tar.bz2
 
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
-       rm -rf $(MNThdd) $(IMGinst) $(IMGroot) && mkdir -p $(MNThdd)
-       mkdir -p /install/images/$(SNAME)   # /boot
-
-       #Create bootimage
-       dd bs=1M if=/dev/zero of=$(IMGboot) count=$(SIZEboot)
-       mkfs.ext2 -F $(IMGboot)
-
-       #Create swapimage
-       dd bs=1M if=/dev/zero of=$(IMGswap) count=$(SIZEswap)
-       mkswap $(IMGswap)
-
-       #Create rootimage
-       dd bs=1M if=/dev/zero of=$(IMGroot) count=$(SIZEroot)
-       mkfs.ext3 -F $(IMGroot)
-
-       #Create varimage
-       dd bs=1M if=/dev/zero of=$(IMGvar) count=$(SIZEvar)
-       mkfs.ext3 -F $(IMGvar)
-
-       # Mount Images
-       mount -o loop $(IMGroot) $(MNThdd)
-       mkdir $(MNThdd)/boot
-       mkdir $(MNThdd)/var
-       mkdir $(MNThdd)/var/log
-       mount -o loop $(IMGboot) $(MNThdd)/boot
-       mount -o loop $(IMGvar) $(MNThdd)/var
-
-       # Install IPFire without kernel modules
-       tar -C $(MNThdd)/ -xvf /install/cdrom/$(SNAME)-$(VERSION).tlz --lzma \
-               --exclude=lib/modules* --exclude=boot*
-
-       #Install legacy Xen Kernel
-       tar -C $(MNThdd)/opt/pakfire/tmp -xvf /install/packages/linux-xen-$(KVER2)-*.ipfire
-       chroot $(MNThdd) /opt/pakfire/tmp/install.sh
-       rm -rf $(MNThdd)/opt/pakfire/tmp/*
-
-       #Install pae Kernel
-       tar -C $(MNThdd)/opt/pakfire/tmp -xvf /install/packages/linux-pae-$(KVER)-*.ipfire
-       chroot $(MNThdd) /opt/pakfire/tmp/install.sh
-       rm -rf $(MNThdd)/opt/pakfire/tmp/*
-
-       #Create grub menuentry for pygrub
-       mkdir $(MNThdd)/boot/grub
-       echo "timeout 10"                          > $(MNThdd)/boot/grub/grub.conf
-       echo "default 0"                          >> $(MNThdd)/boot/grub/grub.conf
-       echo "title IPFire (legacy XEN-Kernel)"   >> $(MNThdd)/boot/grub/grub.conf
-       echo "  kernel /vmlinuz-$(KVER2)-ipfire-xen root=/dev/xvda3 rootdelay=10 panic=10 console=xvc0 ro" \
-                                                 >> $(MNThdd)/boot/grub/grub.conf
-       echo "  initrd /ipfirerd-$(KVER2)-xen.img" >> $(MNThdd)/boot/grub/grub.conf
-       echo "# savedefault 0" >> $(MNThdd)/boot/grub/grub.conf
-       echo "title IPFire (PAE-Kernel)"   >> $(MNThdd)/boot/grub/grub.conf
-       echo "  kernel /vmlinuz-$(KVER)-ipfire-pae root=/dev/xvda3 rootdelay=10 panic=10 console=xvc0 ro" \
-                                                 >> $(MNThdd)/boot/grub/grub.conf
-       echo "  initrd /ipfirerd-$(KVER)-xen.img" >> $(MNThdd)/boot/grub/grub.conf
-       echo "# savedefault 1" >> $(MNThdd)/boot/grub/grub.conf
-
-       ln -s grub.conf $(MNThdd)/boot/grub/menu.lst
-
-       #Copy the meta-info of linux-xen package
-       cp -f /install/packages/meta-linux-xen $(MNThdd)/opt/pakfire/db/installed
-       cp -f /install/packages/meta-linux-xen $(MNThdd)/opt/pakfire/db/meta
-       cp -f /install/packages/meta-linux-pae $(MNThdd)/opt/pakfire/db/installed
-       cp -f /install/packages/meta-linux-pae $(MNThdd)/opt/pakfire/db/meta
-
-       #Set default configuration
-       echo "LANGUAGE=en" >> $(MNThdd)/var/ipfire/main/settings
-       echo "HOSTNAME=$(SNAME)" >> $(MNThdd)/var/ipfire/main/settings
-       echo "THEME=ipfire" >> $(MNThdd)/var/ipfire/main/settings
-       touch $(MNThdd)/lib/modules/$(KVER2)-ipfire-xen/modules.dep
-       mkdir $(MNThdd)/proc
-       mount --bind /proc $(MNThdd)/proc
-       mount --bind /dev  $(MNThdd)/dev
-       mount --bind /sys  $(MNThdd)/sys
-       chroot $(MNThdd) /usr/bin/perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang"
-       sed -i -e "s|DEVICE1|/dev/xvda1|g" $(MNThdd)/etc/fstab
-       sed -i -e "s|DEVICE2|/dev/xvda2|g" $(MNThdd)/etc/fstab
-       sed -i -e "s|DEVICE3|/dev/xvda3|g" $(MNThdd)/etc/fstab
-       sed -i -e "s|DEVICE4|/dev/xvda4|g" $(MNThdd)/etc/fstab
-
-       sed -i -e "s|FSTYPE|ext3|g" $(MNThdd)/etc/fstab
-
-       chroot $(MNThdd) /sbin/dracut --force --verbose /boot/ipfirerd-$(KVER2)-xen.img $(KVER2)-ipfire-xen
-       chroot $(MNThdd) /sbin/dracut --force --verbose /boot/ipfirerd-$(KVER)-pae.img $(KVER)-ipfire-pae
-
-       #Remove root / fstab check
-       rm -rf $(MNThdd)/etc/rc.d/rcsysinit.d/S19checkfstab
-       #Remove console init
-       rm -rf $(MNThdd)/etc/rc.d/rcsysinit.d/S70console
-
-       #Add xvc0 to securetty
-       echo xvc0 >> $(MNThdd)/etc/securetty
-
-       #Add getty for xvc0
-       echo "#Enable login for XEN" >> $(MNThdd)/etc/inittab
-       echo "8:2345:respawn:/sbin/agetty xvc0 9600" >> $(MNThdd)/etc/inittab
-
-       #Disable some initskripts
-       echo "#!/bin/sh" > $(MNThdd)/etc/rc.d/init.d/setclock
-       echo "#!/bin/sh" > $(MNThdd)/etc/rc.d/init.d/keymap
-
-       #Remove autoload of acpi modules
-       sed -i -e "s|^ac|#ac|g" $(MNThdd)/etc/sysconfig/modules
-       sed -i -e "s|^battery|#battery|g" $(MNThdd)/etc/sysconfig/modules
-       sed -i -e "s|^button|#button|g" $(MNThdd)/etc/sysconfig/modules
-       sed -i -e "s|^fan|#fan|g" $(MNThdd)/etc/sysconfig/modules
-       sed -i -e "s|^processor|#processor|g" $(MNThdd)/etc/sysconfig/modules
-       sed -i -e "s|^thermal|#thermal|g" $(MNThdd)/etc/sysconfig/modules
-       sed -i -e "s|^video|#video|g" $(MNThdd)/etc/sysconfig/modules
-
+       rm -rf /install/images/$(SNAME) $(IMGinst) && mkdir -p /install/images/$(SNAME)
+       
        # Copy readme and config
        cp $(DIR_SRC)/config/xen-image/* \
                /install/images/$(SNAME)
 
-       # Unmount
-       umount $(MNThdd)/proc
-       umount $(MNThdd)/dev
-       umount $(MNThdd)/sys
-       umount $(MNThdd)/var
-       umount $(MNThdd)/boot
-       umount $(MNThdd)
-
-       # Zerofree ext3 images to get better compression
-       zerofree $(IMGboot)
-       zerofree $(IMGroot)
-       zerofree $(IMGvar)
+       # configure image downloader
+       sed -i -e "s/xxxSNAMExxx/$(SNAME)/" /install/images/$(SNAME)/xen-image-maker.sh
+       sed -i -e "s/xxxVERSIONxxx/$(VERSION)/" /install/images/$(SNAME)/xen-image-maker.sh
+       sed -i -e "s/xxxCORExxx/$(CORE)/" /install/images/$(SNAME)/xen-image-maker.sh
+       sed -i -e "s/xxxKVERxxx/$(KVER)/" /install/images/$(SNAME)/xen-image-maker.sh
+       sed -i -e "s/xxxKERN_PACKxxx/$(KERN_PACK)/" /install/images/$(SNAME)/xen-image-maker.sh
 
        # Compress Image
        cd /install/images/ && tar -cvjf $(IMGinst) $(SNAME)
diff --git a/lfs/xz b/lfs/xz
index 7a56c727a7eca89f7a3c6ddf1a0c751bd6825cd6..fce71598b38b35de0ff747b245bcc4d2c6bfeb94 100644 (file)
--- a/lfs/xz
+++ b/lfs/xz
 
 include Config
 
-VER        = 5.0.4
+VER        = 5.0.5
 
 THISAPP    = xz-$(VER)
-DL_FILE    = $(THISAPP).tar.bz2
+DL_FILE    = $(THISAPP).tar.xz
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 
@@ -47,7 +47,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 741cd3a5f64b23b7bac56ec5b2258715
+$(DL_FILE)_MD5 = aa17280f4521dbeebed0fbd11cd7fa30
 
 install : $(TARGET)
 
@@ -76,7 +76,7 @@ $(subst %,%_MD5,$(objects)) :
 
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
-       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE)
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
        cd $(DIR_APP) && ./configure --prefix=$(PREFIX)
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
diff --git a/make.sh b/make.sh
index 7184ed74ac9e82e79a5b21b0c747695b1f68201a..0101bb090a20257d646ef574c7ba2c60fd4fd9ea 100755 (executable)
--- a/make.sh
+++ b/make.sh
@@ -32,12 +32,12 @@ SLOGAN="www.ipfire.org"                                             # Software slogan
 CONFIG_ROOT=/var/ipfire                                                # Configuration rootdir
 NICE=10                                                                # Nice level
 MAX_RETRIES=1                                                  # prefetch/check loop
-BUILD_IMAGES=1                                                 # Build USB, Flash and Xen Images
+BUILD_IMAGES=1                                                 # Flash and Xen Downloader
 KVER=`grep --max-count=1 VER lfs/linux | awk '{ print $3 }'`
 MACHINE=`uname -m`
 GIT_TAG=$(git tag | tail -1)                                   # Git Tag
 GIT_LASTCOMMIT=$(git log | head -n1 | cut -d" " -f2 |head -c8) # Last commit
-TOOLCHAINVER=6
+TOOLCHAINVER=7
 
 BUILDMACHINE=$MACHINE
     if [ "$MACHINE" = "x86_64" ]; then
@@ -83,6 +83,22 @@ if [ -z $EDITOR ]; then
        [ -z $EDITOR ] && exiterror "You should have installed an editor."
 fi
 
+# Prepare string for /etc/system-release.
+SYSTEM_RELEASE="${NAME} ${VERSION} (${MACHINE})"
+if [ "$(git status -s | wc -l)" == "0" ]; then
+       GIT_STATUS=""
+else
+       GIT_STATUS="-dirty"
+fi
+case "$GIT_BRANCH" in
+       core*|beta?|rc?)
+               SYSTEM_RELEASE="${SYSTEM_RELEASE} - $GIT_BRANCH$GIT_STATUS"
+               ;;
+       *)
+               SYSTEM_RELEASE="${SYSTEM_RELEASE} - Development Build: $GIT_BRANCH/$GIT_LASTCOMMIT$GIT_STATUS"
+               ;;
+esac
+
 prepareenv() {
     ############################################################################
     #                                                                          #
@@ -357,6 +373,7 @@ buildbase() {
     lfsmake2 util-linux
     lfsmake2 vim
     lfsmake2 xz
+    lfsmake2 paxctl
     lfsmake2 grub
 }
 
@@ -379,75 +396,60 @@ buildipfire() {
   ipfiremake dvb-firmwares
   ipfiremake zd1211-firmware
   ipfiremake rpi-firmware
+  ipfiremake bc
   ipfiremake u-boot
 
   if [ "${MACHINE_TYPE}" != "arm" ]; then
 
-    # x86-xen (Legacy XEN) kernel build
-    ipfiremake linux2                  KCFG="-xen"
-    ipfiremake v4l-dvb                 KCFG="-xen"
-    ipfiremake mISDN                   KCFG="-xen"
-    ipfiremake cryptodev               KCFG="-xen"
-    ipfiremake compat-drivers          KCFG="-xen"
-    ipfiremake r8169                   KCFG="-xen"
-    ipfiremake r8168                   KCFG="-xen"
-    ipfiremake r8101                   KCFG="-xen"
-    ipfiremake e1000                   KCFG="-xen"
-    ipfiremake e1000e                  KCFG="-xen"
-    ipfiremake igb                     KCFG="-xen"
-
     # x86-pae (Native and new XEN) kernel build
     ipfiremake linux                   KCFG="-pae"
-    ipfiremake kvm-kmod                        KCFG="-pae"
-    ipfiremake v4l-dvb                 KCFG="-pae"
-    ipfiremake mISDN                   KCFG="-pae"
+#    ipfiremake kvm-kmod                       KCFG="-pae"
+#    ipfiremake v4l-dvb                        KCFG="-pae"
+#    ipfiremake mISDN                  KCFG="-pae"
     ipfiremake cryptodev               KCFG="-pae"
-    ipfiremake compat-drivers          KCFG="-pae"
-    ipfiremake r8169                   KCFG="-pae"
-    ipfiremake r8168                   KCFG="-pae"
-    ipfiremake r8101                   KCFG="-pae"
-    ipfiremake e1000e                  KCFG="-pae"
-    ipfiremake igb                     KCFG="-pae"
+#    ipfiremake compat-drivers         KCFG="-pae"
+#    ipfiremake r8169                  KCFG="-pae"
+#    ipfiremake r8168                  KCFG="-pae"
+#    ipfiremake r8101                  KCFG="-pae"
+#    ipfiremake e1000e                 KCFG="-pae"
+#    ipfiremake igb                    KCFG="-pae"
 
     # x86 kernel build
     ipfiremake linux                   KCFG=""
-    ipfiremake kvm-kmod                        KCFG=""
-    ipfiremake v4l-dvb                 KCFG=""
-    ipfiremake mISDN                   KCFG=""
+#    ipfiremake kvm-kmod                       KCFG=""
+#    ipfiremake v4l-dvb                        KCFG=""
+#    ipfiremake mISDN                  KCFG=""
     ipfiremake cryptodev               KCFG=""
-    ipfiremake compat-drivers          KCFG=""
-    ipfiremake r8169                   KCFG=""
-    ipfiremake r8168                   KCFG=""
-    ipfiremake r8101                   KCFG=""
-    ipfiremake e1000e                  KCFG=""
-    ipfiremake igb                     KCFG=""
+#    ipfiremake compat-drivers         KCFG=""
+#    ipfiremake r8169                  KCFG=""
+#    ipfiremake r8168                  KCFG=""
+#    ipfiremake r8101                  KCFG=""
+#    ipfiremake e1000e                 KCFG=""
+#    ipfiremake igb                    KCFG=""
 
   else
     # arm-rpi (Raspberry Pi) kernel build
     ipfiremake linux                   KCFG="-rpi"
-    ipfiremake v4l-dvb                 KCFG="-rpi"
-    ipfiremake mISDN                   KCFG="-rpi" NOPCI=1
+#    ipfiremake v4l-dvb                        KCFG="-rpi"
+#    ipfiremake mISDN                  KCFG="-rpi" NOPCI=1
     ipfiremake cryptodev               KCFG="-rpi"
-    ipfiremake compat-drivers          KCFG="-rpi"
+#    ipfiremake compat-drivers         KCFG="-rpi"
 
-    # arm-omap (Panda Board) kernel build
-    ipfiremake linux                   KCFG="-omap"
-    ipfiremake v4l-dvb                 KCFG="-omap"
-    ipfiremake mISDN                   KCFG="-omap" NOPCI=1
-    ipfiremake cryptodev               KCFG="-omap"
-    ipfiremake compat-drivers          KCFG="-omap"
+    # arm multi platform (Panda, Wandboard ...) kernel build
+    ipfiremake linux                   KCFG="-multi"
+    ipfiremake cryptodev               KCFG="-multi"
 
     # arm-kirkwood (Dreamplug, ICY-Box ...) kernel build
     ipfiremake linux                   KCFG="-kirkwood"
-    ipfiremake v4l-dvb                 KCFG="-kirkwood"
-    ipfiremake mISDN                   KCFG="-kirkwood"
+#    ipfiremake v4l-dvb                        KCFG="-kirkwood"
+#    ipfiremake mISDN                  KCFG="-kirkwood"
     ipfiremake cryptodev               KCFG="-kirkwood"
-    ipfiremake compat-drivers          KCFG="-kirkwood"
-    ipfiremake r8169                   KCFG="-kirkwood"
-    ipfiremake r8168                   KCFG="-kirkwood"
-    ipfiremake r8101                   KCFG="-kirkwood"
-#    ipfiremake e1000e                 KCFG="-kirkwood"
-    ipfiremake igb                     KCFG="-kirkwood"
+#    ipfiremake compat-drivers         KCFG="-kirkwood"
+#    ipfiremake r8169                  KCFG="-kirkwood"
+#    ipfiremake r8168                  KCFG="-kirkwood"
+#    ipfiremake r8101                  KCFG="-kirkwood"
+#   ipfiremake e1000e                  KCFG="-kirkwood"
+#    ipfiremake igb                    KCFG="-kirkwood"
 
   fi
   ipfiremake pkg-config
@@ -492,6 +494,7 @@ buildipfire() {
   ipfiremake apache2
   ipfiremake php
   ipfiremake apache2                   PASS=C
+  ipfiremake jquery
   ipfiremake arping
   ipfiremake beep
   ipfiremake dvdrtools
@@ -682,7 +685,6 @@ buildipfire() {
   ipfiremake mpc
   ipfiremake git
   ipfiremake squidclamav
-  ipfiremake bc
   ipfiremake vnstat
   ipfiremake vnstati
   ipfiremake iw
@@ -789,36 +791,13 @@ buildipfire() {
   ipfiremake arm
   ipfiremake wavemon
   ipfiremake iptraf-ng
-  echo Build on $HOSTNAME > $BASEDIR/build/var/ipfire/firebuild
-  cat /proc/version >> $BASEDIR/build/var/ipfire/firebuild
-  echo >> $BASEDIR/build/var/ipfire/firebuild
-  git log -1 >> $BASEDIR/build/var/ipfire/firebuild
-  echo >> $BASEDIR/build/var/ipfire/firebuild
-  git status >> $BASEDIR/build/var/ipfire/firebuild
-  echo >> $BASEDIR/build/var/ipfire/firebuild
-  cat /proc/cpuinfo >> $BASEDIR/build/var/ipfire/firebuild
-  echo $PAKFIRE_CORE > $BASEDIR/build/opt/pakfire/db/core/mine
-  if [ "$(git status -s | wc -l)" == "0" ]; then
-       GIT_STATUS=""
-  else
-       GIT_STATUS="-dirty"
-  fi
-  case "$GIT_BRANCH" in
-       core*|beta?|rc?)
-           echo "$NAME $VERSION ($MACHINE) - $GIT_BRANCH$GIT_STATUS" > $BASEDIR/build/etc/system-release
-           ;;
-       *)
-           echo "$NAME $VERSION ($MACHINE) - Development Build: $GIT_BRANCH/$GIT_LASTCOMMIT$GIT_STATUS" > $BASEDIR/build/etc/system-release
-           ;;
-  esac
+  ipfiremake iotop
 }
 
 buildinstaller() {
   # Run installer scripts one by one
   LOGFILE="$BASEDIR/log/_build.installer.log"
   export LOGFILE
-  ipfiremake as86
-  ipfiremake mbr
   ipfiremake memtest
   ipfiremake installer
   installmake strip
@@ -857,9 +836,6 @@ buildpackages() {
 
   # Check if there is a loop device for building in virtual environments
   if [ $BUILD_IMAGES == 1 ] && ([ -e /dev/loop/0 ] || [ -e /dev/loop0 ]); then
-       if [ "${MACHINE_TYPE}" != "arm" ]; then
-               ipfiremake usb-stick
-       fi
        ipfiremake flash-images
   fi
 
@@ -867,16 +843,7 @@ buildpackages() {
 
   ipfirepackages
 
-  # Check if there is a loop device for building in virtual environments
-  if [ $BUILD_IMAGES == 1 ] && ([ -e /dev/loop/0 ] || [ -e /dev/loop0 ]) && [ "${MACHINE_TYPE}" != "arm" ]; then
-        cp -f $BASEDIR/packages/linux-xen-*.ipfire $LFS/install/packages/
-        cp -f $BASEDIR/packages/meta-linux-xen $LFS/install/packages/
-        cp -f $BASEDIR/packages/linux-pae-*.ipfire $LFS/install/packages/
-        cp -f $BASEDIR/packages/meta-linux-pae $LFS/install/packages/
-       ipfiremake xen-image
-       rm -rf $LFS/install/packages/linux-xen-*.ipfire
-       rm -rf $LFS/install/packages/meta-linux-xen
-  fi
+  ipfiremake xen-image
   mv $LFS/install/images/*.bz2 $BASEDIR >> $LOGFILE 2>&1
 
   cd $BASEDIR
index 0237297e7014bbe9cd95c94931ae5edaef522f7a..36d7e449fcc9d94357614b085d83c7e86d93a5df 100644 (file)
@@ -68,74 +68,14 @@ iptables_init() {
        # SYN/FIN (QueSO or nmap OS probe)
        /sbin/iptables -A BADTCP -p tcp --tcp-flags SYN,FIN SYN,FIN -j PSCAN
        # NEW TCP without SYN
-       /sbin/iptables -A BADTCP -p tcp ! --syn -m state --state NEW -j NEWNOTSYN
+       /sbin/iptables -A BADTCP -p tcp ! --syn -m conntrack --ctstate NEW -j NEWNOTSYN
 
-       /sbin/iptables -A INPUT   -j BADTCP
-       /sbin/iptables -A FORWARD -j BADTCP
+       /sbin/iptables -A INPUT   -p tcp -j BADTCP
+       /sbin/iptables -A FORWARD -p tcp -j BADTCP
 
-}
-
-iptables_red() {
-       /sbin/iptables -F REDINPUT
-       /sbin/iptables -F REDFORWARD
-       /sbin/iptables -t nat -F REDNAT
-
-       # PPPoE / PPTP Device
-       if [ "$IFACE" != "" ]; then
-               # PPPoE / PPTP
-               if [ "$DEVICE" != "" ]; then
-                       /sbin/iptables -A REDINPUT -i $DEVICE -j ACCEPT
-               fi
-               if [ "$RED_TYPE" == "PPTP" -o "$RED_TYPE" == "PPPOE" ]; then
-                       if [ "$RED_DEV" != "" ]; then
-                               /sbin/iptables -A REDINPUT -i $RED_DEV -j ACCEPT
-                       fi
-               fi
-       fi
-
-       # PPTP over DHCP
-       if [ "$DEVICE" != "" -a "$TYPE" == "PPTP" -a "$METHOD" == "DHCP" ]; then
-               /sbin/iptables -A REDINPUT -p tcp --source-port 67 --destination-port 68 -i $DEVICE -j ACCEPT
-               /sbin/iptables -A REDINPUT -p udp --source-port 67 --destination-port 68 -i $DEVICE -j ACCEPT
-       fi
-
-       # Orange pinholes
-       if [ "$ORANGE_DEV" != "" ]; then
-               # This rule enables a host on ORANGE network to connect to the outside
-               # (only if we have a red connection)
-               if [ "$IFACE" != "" ]; then
-                       /sbin/iptables -A REDFORWARD -i $ORANGE_DEV -o $IFACE -j ACCEPT
-               fi
-       fi
-
-       if [ "$IFACE" != "" -a -f /var/ipfire/red/active ]; then
-               # DHCP
-               if [ "$RED_DEV" != "" -a "$RED_TYPE" == "DHCP" ]; then
-                       /sbin/iptables -A REDINPUT -p tcp --source-port 67 --destination-port 68 -i $IFACE -j ACCEPT
-                       /sbin/iptables -A REDINPUT -p udp --source-port 67 --destination-port 68 -i $IFACE -j ACCEPT
-               fi
-               if [ "$METHOD" == "DHCP"  -a "$PROTOCOL" == "RFC1483" ]; then
-                       /sbin/iptables -A REDINPUT -p tcp --source-port 67 --destination-port 68 -i $IFACE -j ACCEPT
-                       /sbin/iptables -A REDINPUT -p udp --source-port 67 --destination-port 68 -i $IFACE -j ACCEPT
-               fi
-
-               # Outgoing masquerading (don't masqerade IPSEC (mark 50))
-               /sbin/iptables -t nat -A REDNAT -m mark --mark 50 -o $IFACE -j RETURN
-               /sbin/iptables -t nat -A REDNAT -o $IFACE -j MASQUERADE
-
-       fi
-}
-
-# See how we were called.
-case "$1" in
-  start)
-       iptables_init
-
-       # Limit Packets- helps reduce dos/syn attacks
-       # original do nothing line
-       #/sbin/iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -m limit --limit 10/sec
-       # the correct one, but the negative '!' do nothing...
-       #/sbin/iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN ! -m limit --limit 10/sec -j DROP
+       # Connection tracking chain
+       /sbin/iptables -N CONNTRACK
+       /sbin/iptables -A CONNTRACK -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
 
        # Fix for braindead ISP's
        /sbin/iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
@@ -143,21 +83,30 @@ case "$1" in
        # CUSTOM chains, can be used by the users themselves
        /sbin/iptables -N CUSTOMINPUT
        /sbin/iptables -A INPUT -j CUSTOMINPUT
-       /sbin/iptables -N GUARDIAN
-       /sbin/iptables -A INPUT -j GUARDIAN
-       /sbin/iptables -A FORWARD -j GUARDIAN
        /sbin/iptables -N CUSTOMFORWARD
        /sbin/iptables -A FORWARD -j CUSTOMFORWARD
        /sbin/iptables -N CUSTOMOUTPUT
        /sbin/iptables -A OUTPUT -j CUSTOMOUTPUT
-       /sbin/iptables -N OUTGOINGFW
-       /sbin/iptables -N OUTGOINGFWMAC
-       /sbin/iptables -A OUTPUT -j OUTGOINGFW
        /sbin/iptables -t nat -N CUSTOMPREROUTING
        /sbin/iptables -t nat -A PREROUTING -j CUSTOMPREROUTING
        /sbin/iptables -t nat -N CUSTOMPOSTROUTING
        /sbin/iptables -t nat -A POSTROUTING -j CUSTOMPOSTROUTING
 
+       # Guardian (IPS) chains
+       /sbin/iptables -N GUARDIAN
+       /sbin/iptables -A INPUT -j GUARDIAN
+       /sbin/iptables -A FORWARD -j GUARDIAN
+
+       # Block OpenVPN transfer networks
+       /sbin/iptables -N OVPNBLOCK
+       for i in INPUT FORWARD OUTPUT; do
+               /sbin/iptables -A ${i} -j OVPNBLOCK
+       done
+
+       # OpenVPN transfer network translation
+       /sbin/iptables -t nat -N OVPNNAT
+       /sbin/iptables -t nat -A POSTROUTING -j OVPNNAT
+
        # IPTV chains for IGMPPROXY
        /sbin/iptables -N IPTVINPUT
        /sbin/iptables -A INPUT -j IPTVINPUT
@@ -169,60 +118,60 @@ case "$1" in
        /sbin/iptables -A INPUT -j GUIINPUT
        /sbin/iptables -A GUIINPUT -p icmp --icmp-type 8 -j ACCEPT
 
+       # Accept everything on loopback
+       /sbin/iptables -N LOOPBACK
+       /sbin/iptables -A LOOPBACK -i lo -j ACCEPT
+       /sbin/iptables -A LOOPBACK -o lo -j ACCEPT
+
+       # Filter all packets with loopback addresses on non-loopback interfaces.
+       /sbin/iptables -A LOOPBACK -s 127.0.0.0/8 -j DROP
+       /sbin/iptables -A LOOPBACK -d 127.0.0.0/8 -j DROP
+
+       for i in INPUT FORWARD OUTPUT; do
+               /sbin/iptables -A ${i} -j LOOPBACK
+       done
+
        # Accept everything connected
-       /sbin/iptables -A INPUT   -m state --state ESTABLISHED,RELATED -j ACCEPT
-       /sbin/iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
-       
+       for i in INPUT FORWARD OUTPUT; do
+               /sbin/iptables -A ${i} -j CONNTRACK
+       done
+
        # trafic from ipsecX/TUN/TAP interfaces, before "-i GREEN_DEV" accept everything
        /sbin/iptables -N IPSECINPUT
        /sbin/iptables -N IPSECFORWARD
        /sbin/iptables -N IPSECOUTPUT
-       /sbin/iptables -N OPENSSLVIRTUAL
        /sbin/iptables -A INPUT -j IPSECINPUT
-       /sbin/iptables -A INPUT -j OPENSSLVIRTUAL -m comment --comment "OPENSSLVIRTUAL INPUT"
        /sbin/iptables -A FORWARD -j IPSECFORWARD
-       /sbin/iptables -A FORWARD -j OPENSSLVIRTUAL -m comment --comment "OPENSSLVIRTUAL FORWARD"
        /sbin/iptables -A OUTPUT -j IPSECOUTPUT
-       /sbin/iptables -t nat -N OVPNNAT
        /sbin/iptables -t nat -N IPSECNAT
-       /sbin/iptables -t nat -A POSTROUTING -j OVPNNAT
        /sbin/iptables -t nat -A POSTROUTING -j IPSECNAT
 
-       # TOR
-       /sbin/iptables -N TOR_INPUT
-       /sbin/iptables -A INPUT -j TOR_INPUT
-
-       # Outgoing Firewall
-       /sbin/iptables -A FORWARD -j OUTGOINGFWMAC
-
        # localhost and ethernet.
-       /sbin/iptables -A INPUT   -i lo -m state --state NEW -j ACCEPT
-       /sbin/iptables -A INPUT   -s 127.0.0.0/8 -m state --state NEW -j DROP   # Loopback not on lo
-       /sbin/iptables -A INPUT   -d 127.0.0.0/8 -m state --state NEW -j DROP
-       /sbin/iptables -A FORWARD -i lo -m state --state NEW -j ACCEPT
-       /sbin/iptables -A FORWARD -s 127.0.0.0/8 -m state --state NEW -j DROP
-       /sbin/iptables -A FORWARD -d 127.0.0.0/8 -m state --state NEW -j DROP
-       /sbin/iptables -A INPUT   -i $GREEN_DEV  -m state --state NEW -j ACCEPT ! -p icmp
-       /sbin/iptables -A FORWARD -i $GREEN_DEV  -m state --state NEW -j ACCEPT
-
-       # If a host on orange tries to initiate a connection to IPFire's red IP and
-       # the connection gets DNATed back through a port forward to a server on orange
-       # we end up with orange -> orange traffic passing through IPFire
-       [ "$ORANGE_DEV" != "" ] && /sbin/iptables -A FORWARD -i $ORANGE_DEV -o $ORANGE_DEV -m state --state NEW -j ACCEPT
-
+       /sbin/iptables -A INPUT   -i $GREEN_DEV  -m conntrack --ctstate NEW -j ACCEPT ! -p icmp
+       
        # allow DHCP on BLUE to be turned on/off
        /sbin/iptables -N DHCPBLUEINPUT 
        /sbin/iptables -A INPUT -j DHCPBLUEINPUT
-
-       # OPenSSL
-       /sbin/iptables -N OPENSSLPHYSICAL
-       /sbin/iptables -A INPUT -j OPENSSLPHYSICAL
-
+       
        # WIRELESS chains
        /sbin/iptables -N WIRELESSINPUT
-       /sbin/iptables -A INPUT -m state --state NEW -j WIRELESSINPUT
+       /sbin/iptables -A INPUT -m conntrack --ctstate NEW -j WIRELESSINPUT
        /sbin/iptables -N WIRELESSFORWARD
-       /sbin/iptables -A FORWARD -m state --state NEW -j WIRELESSFORWARD
+       /sbin/iptables -A FORWARD -m conntrack --ctstate NEW -j WIRELESSFORWARD
+
+       # TOR
+       /sbin/iptables -N TOR_INPUT
+       /sbin/iptables -A INPUT -j TOR_INPUT
+       
+       # Jump into the actual firewall ruleset.
+       /sbin/iptables -N INPUTFW
+       /sbin/iptables -A INPUT -j INPUTFW
+
+       /sbin/iptables -N OUTGOINGFW
+       /sbin/iptables -A OUTPUT -j OUTGOINGFW
+
+       /sbin/iptables -N FORWARDFW
+       /sbin/iptables -A FORWARD -j FORWARDFW
 
        # RED chain, used for the red interface
        /sbin/iptables -N REDINPUT
@@ -234,119 +183,130 @@ case "$1" in
 
        iptables_red
 
-       # DMZ pinhole chain.  setdmzholes setuid prog adds rules here to allow
-       # ORANGE to talk to GREEN / BLUE.
-       /sbin/iptables -N DMZHOLES
-       if [ "$ORANGE_DEV" != "" ]; then
-               /sbin/iptables -A FORWARD -i $ORANGE_DEV -m state --state NEW -j DMZHOLES
-       fi
-
-       # XTACCESS chain, used for external access
-       /sbin/iptables -N XTACCESS
-       /sbin/iptables -A INPUT -m state --state NEW -j XTACCESS
-
-       # PORTFWACCESS chain, used for portforwarding
-       /sbin/iptables -N PORTFWACCESS
-       /sbin/iptables -A FORWARD -m state --state NEW -j PORTFWACCESS
-
-       # Custom prerouting chains (for transparent proxy and port forwarding)
+       # Custom prerouting chains (for transparent proxy)
        /sbin/iptables -t nat -N SQUID
        /sbin/iptables -t nat -A PREROUTING -j SQUID
-       /sbin/iptables -t nat -N PORTFW
-       /sbin/iptables -t nat -A PREROUTING -j PORTFW
+
+       # DNAT rules
+       /sbin/iptables -t nat -N NAT_DESTINATION
+       /sbin/iptables -t nat -A PREROUTING -j NAT_DESTINATION
+
+       # SNAT rules
+       /sbin/iptables -t nat -N NAT_SOURCE
+       /sbin/iptables -t nat -A POSTROUTING -j NAT_SOURCE
 
        # upnp chain for our upnp daemon
        /sbin/iptables -t nat -N UPNPFW
        /sbin/iptables -t nat -A PREROUTING -j UPNPFW
        /sbin/iptables -N UPNPFW
-       /sbin/iptables -A FORWARD -m state --state NEW -j UPNPFW
-
-       # Custom mangle chain (for port fowarding)
-       /sbin/iptables -t mangle -N PORTFWMANGLE
-       /sbin/iptables -t mangle -A PREROUTING -j PORTFWMANGLE
-
-       # Postrouting rules (for port forwarding)
-       /sbin/iptables -t nat -A POSTROUTING -m mark --mark 1 -j SNAT \
-        --to-source $GREEN_ADDRESS
-       if [ "$BLUE_DEV" != "" ]; then
-               /sbin/iptables -t nat -A POSTROUTING -m mark --mark 2 -j SNAT --to-source $BLUE_ADDRESS
-       fi
-       if [ "$ORANGE_DEV" != "" ]; then
-               /sbin/iptables -t nat -A POSTROUTING -m mark --mark 3 -j SNAT --to-source $ORANGE_ADDRESS
-       fi
+       /sbin/iptables -A FORWARD -m conntrack --ctstate NEW -j UPNPFW
 
        # run local firewall configuration, if present
        if [ -x /etc/sysconfig/firewall.local ]; then
                /etc/sysconfig/firewall.local start
        fi
-       
-       # last rule in input and forward chain is for logging.
+
+       # run openvpn
+       /usr/local/bin/openvpnctrl --create-chains-and-rules
+
+       # run wirelessctrl
+       /usr/local/bin/wirelessctrl
+
+       #POLICY CHAIN
+       /sbin/iptables -N POLICYIN
+       /sbin/iptables -A INPUT -j POLICYIN
+       /sbin/iptables -N POLICYFWD
+       /sbin/iptables -A FORWARD -j POLICYFWD
+       /sbin/iptables -N POLICYOUT
+       /sbin/iptables -A OUTPUT -j POLICYOUT
+
+       /usr/sbin/firewall-policy
+
+       # read new firewall
+       /usr/local/bin/firewallctrl
 
        if [ "$DROPINPUT" == "on" ]; then
-               /sbin/iptables -A INPUT -m limit --limit 10/minute -j LOG --log-prefix "DROP_INPUT "
+               /sbin/iptables -A INPUT   -m limit --limit 10/minute -j LOG --log-prefix "DROP_INPUT"
        fi
        /sbin/iptables -A INPUT -j DROP -m comment --comment "DROP_INPUT"
-       if [ "$DROPOUTPUT" == "on" ]; then
-               /sbin/iptables -A FORWARD -m limit --limit 10/minute -j LOG --log-prefix "DROP_OUTPUT "
+       if [ "$DROPFORWARD" == "on" ]; then
+               /sbin/iptables -A FORWARD -m limit --limit 10/minute -j LOG --log-prefix "DROP_FORWARD"
        fi
-       /sbin/iptables -A FORWARD -j DROP -m comment --comment "DROP_OUTPUT"
-        ;;
-  startovpn)  
-       # run openvpn
-       /usr/local/bin/openvpnctrl --create-chains-and-rules
-        ;;
-  stop)
-       iptables_init
-       # Accept everyting connected
-       /sbin/iptables -A INPUT   -m state --state ESTABLISHED,RELATED -j ACCEPT
+       /sbin/iptables -A FORWARD -j DROP -m comment --comment "DROP_FORWARD"
+}
 
-       # localhost and ethernet.
-       /sbin/iptables -A INPUT -i lo -j ACCEPT
-       /sbin/iptables -A INPUT -i $GREEN_DEV -m state --state NEW -j ACCEPT
+iptables_red() {
+       /sbin/iptables -F REDINPUT
+       /sbin/iptables -F REDFORWARD
+       /sbin/iptables -t nat -F REDNAT
 
-       if [ "$RED_DEV" != "" -a "$RED_TYPE" == "DHCP" ]; then
-               /sbin/iptables -A INPUT -p tcp --source-port 67 --destination-port 68 -i $IFACE -j ACCEPT
-               /sbin/iptables -A INPUT -p udp --source-port 67 --destination-port 68 -i $IFACE -j ACCEPT
-       fi
-       if [ "$PROTOCOL" == "RFC1483" -a "$METHOD" == "DHCP" ]; then
-               /sbin/iptables -A INPUT -p tcp --source-port 67 --destination-port 68 -i $IFACE -j ACCEPT
-               /sbin/iptables -A INPUT -p udp --source-port 67 --destination-port 68 -i $IFACE -j ACCEPT
+       # PPPoE / PPTP Device
+       if [ "$IFACE" != "" ]; then
+               # PPPoE / PPTP
+               if [ "$DEVICE" != "" ]; then
+                       /sbin/iptables -A REDINPUT -i $DEVICE -j ACCEPT
+               fi
+               if [ "$RED_TYPE" == "PPTP" -o "$RED_TYPE" == "PPPOE" ]; then
+                       if [ "$RED_DEV" != "" ]; then
+                               /sbin/iptables -A REDINPUT -i $RED_DEV -j ACCEPT
+                       fi
+               fi
        fi
 
-       # run local firewall configuration, if present
-       if [ -x /etc/sysconfig/firewall.local ]; then
-               /etc/sysconfig/firewall.local stop
+       # PPTP over DHCP
+       if [ "$DEVICE" != "" -a "$TYPE" == "PPTP" -a "$METHOD" == "DHCP" ]; then
+               /sbin/iptables -A REDINPUT -p tcp --source-port 67 --destination-port 68 -i $DEVICE -j ACCEPT
+               /sbin/iptables -A REDINPUT -p udp --source-port 67 --destination-port 68 -i $DEVICE -j ACCEPT
        fi
 
-       if [ "$DROPINPUT" == "on" ]; then
-               /sbin/iptables -A INPUT   -m limit --limit 10/minute -j LOG --log-prefix "DROP_INPUT "
+       # Orange pinholes
+       if [ "$ORANGE_DEV" != "" ]; then
+               # This rule enables a host on ORANGE network to connect to the outside
+               # (only if we have a red connection)
+               if [ "$IFACE" != "" ]; then
+                       /sbin/iptables -A REDFORWARD -i $ORANGE_DEV -o $IFACE -j ACCEPT
+               fi
        fi
-       /sbin/iptables -A INPUT -j DROP -m comment --comment "DROP_INPUT"
-       if [ "$DROPOUTPUT" == "on" ]; then
-               /sbin/iptables -A FORWARD -m limit --limit 10/minute -j LOG --log-prefix "DROP_OUTPUT "
+
+       if [ "$IFACE" != "" -a -f /var/ipfire/red/active ]; then
+               # DHCP
+               if [ "$RED_DEV" != "" -a "$RED_TYPE" == "DHCP" ]; then
+                       /sbin/iptables -A REDINPUT -p tcp --source-port 67 --destination-port 68 -i $IFACE -j ACCEPT
+                       /sbin/iptables -A REDINPUT -p udp --source-port 67 --destination-port 68 -i $IFACE -j ACCEPT
+               fi
+               if [ "$METHOD" == "DHCP"  -a "$PROTOCOL" == "RFC1483" ]; then
+                       /sbin/iptables -A REDINPUT -p tcp --source-port 67 --destination-port 68 -i $IFACE -j ACCEPT
+                       /sbin/iptables -A REDINPUT -p udp --source-port 67 --destination-port 68 -i $IFACE -j ACCEPT
+               fi
+
+               # Outgoing masquerading (don't masqerade IPSEC (mark 50))
+               /sbin/iptables -t nat -A REDNAT -m mark --mark 50 -o $IFACE -j RETURN
+               /sbin/iptables -t nat -A REDNAT -o $IFACE -j MASQUERADE
+
        fi
-       /sbin/iptables -A FORWARD -j DROP -m comment --comment "DROP_OUTPUT"
-        ;;
-  stopovpn)
-       # stop openvpn
-       /usr/local/bin/openvpnctrl --delete-chains-and-rules
-        ;;
+}
+
+# See how we were called.
+case "$1" in
+  start)
+       iptables_init
+       ;;
   reload)
        iptables_red
-
        # run local firewall configuration, if present
-       if [ -x /etc/sysconfig/firewall.local ]; then
+       if [ -x /etc/sysconfig/firewall.local ]; then
                /etc/sysconfig/firewall.local reload
        fi
        ;;
   restart)
-       $0 stop
-       $0 stopovpn
+       # run local firewall configuration, if present
+       if [ -x /etc/sysconfig/firewall.local ]; then
+               /etc/sysconfig/firewall.local stop
+       fi
        $0 start
-       $0 startovpn
        ;;
   *)
-        echo "Usage: $0 {start|stop|reload|restart}"
+        echo "Usage: $0 {start|reload|restart}"
         exit 1
        ;;
 esac
index 0d3f448c9ee6ce611e7e566b6ce4f2cecc00c40b..247d69ab96b11adb43d22730cd3a7fe89984bef4 100644 (file)
@@ -35,11 +35,12 @@ if [ "${?}" == "1" ]; then
 fi
 
 # plan install pae kernel at next pakfire update if pae is supported
-rm -rf /opt/pakfire/db/*/meta-linux-pae
 if [ ! "$(grep "^flags.* pae " /proc/cpuinfo)" == "" ]; then
-       echo "Name: linux-pae" > /opt/pakfire/db/installed/meta-linux-pae
-       echo "ProgVersion: 0" >> /opt/pakfire/db/installed/meta-linux-pae
-       echo "Release: 0"     >> /opt/pakfire/db/installed/meta-linux-pae
+       if [ ! -e /opt/pakfire/db/installed/meta-linux-pae ]; then
+               echo "Name: linux-pae" > /opt/pakfire/db/installed/meta-linux-pae
+               echo "ProgVersion: 0" >> /opt/pakfire/db/installed/meta-linux-pae
+               echo "Release: 0"     >> /opt/pakfire/db/installed/meta-linux-pae
+       fi
 fi
 
 echo Restarting udev...
index 9ff2200115c4b425b384be228efba0014f2b6eba..02df4bc975701bd3fcfa8e92add15fa53f63f007 100644 (file)
@@ -47,9 +47,7 @@ init_networking() {
 #      (exit ${failed})
 #      evaluate_retval
 
-       boot_mesg "Setting up DMZ pinholes"
-       /usr/local/bin/setdmzholes; evaluate_retval
-
+       
        if [ "$CONFIG_TYPE" = "3" -o "$CONFIG_TYPE" = "4" ]; then
                boot_mesg "Setting up wireless firewall rules"
                /usr/local/bin/wirelessctrl; evaluate_retval
index c31f3e1f284a025b07b0267fbf43c0ff019bc6f0..a6a75c35f8a85aff2e43a073b98dcb6a8bb11b11 100644 (file)
@@ -80,13 +80,15 @@ for interface in green0 red0 blue0 orange0; do
                                continue
                        fi
 
-                       echo "Creating VLAN interface ${interface}..."
-                       vconfig add ${PARENT_DEV} ${VLAN_ID}
-                       ip link set ${PARENT_DEV}.${VLAN_ID} name ${interface}
-
+                       # Build command line.
+                       command="ip link add link ${PARENT_DEV} name ${interface}"
                        if [ -n "${MAC_ADDRESS}" ]; then
-                               ip link set ${interface} address ${MAC_ADDRESS}
+                               command="${command} address ${MAC_ADDRESS}"
                        fi
+                       command="${command} type vlan id ${VLAN_ID}"
+
+                       echo "Creating VLAN interface ${interface}..."
+                       ${command}
 
                        # Bring up the parent device.
                        ip link set ${PARENT_DEV} up
@@ -100,7 +102,7 @@ for interface in green0 red0 blue0 orange0; do
 
                        echo "Removing VLAN interface ${interface}..."
                        ip link set ${interface} down
-                       vconfig rem ${interface}
+                       ip link delete ${interface}
                        ;;
                
                *)
index 9c1dfc769285f282a926eca8ef230456e6652fff..551538e2f65318111332a278bf70c0749ad44c87 100644 (file)
@@ -9,6 +9,8 @@
 . /etc/sysconfig/rc
 . ${rc_functions}
 
+FILEDESCRIPTORS="65535"
+
 eval $(/usr/local/bin/readhash /var/ipfire/tor/settings)
 
 function tor_is_enabled() {
@@ -40,6 +42,11 @@ case "${1}" in
                # Setup firewall.
                setup_firewall
 
+               # Increasing open file descriptors.
+               if [ -n "${FILEDESCRIPTORS}" ]; then
+                       ulimit -n "${FILEDESCRIPTORS}"
+               fi
+
                boot_mesg "Starting tor..."
                loadproc /usr/bin/tor \
                        --runasdaemon 1 \
index fb428cc49a335b3664965638d7396dc4c2a22eb7..6c01cbb45ba7daa20ad4792aa505575709dcfa02 100644 (file)
@@ -65,6 +65,12 @@ for card in `ls /sys/class/net`; do
                                                let bus=`echo 1$bus`-1000
                                                let dev=`echo 1$dev`-1000
                                                name=`lsusb -s $bus:$dev | cut -d':' -f3 | cut -c 6-`
+                                               #kernel higher 3.2 changes
+                                               if [ "$name" == "" ]; then
+                                                       vid=`grep PRODUCT= /sys/class/net/$card/device/uevent | cut -d"=" -f2 | cut -d"/" -f1`
+                                                       pid=`grep PRODUCT= /sys/class/net/$card/device/uevent | cut -d"=" -f2 | cut -d"/" -f2`
+                                                       name=`lsusb -d $vid:$pid | cut -d':' -f3 | cut -c 6-`
+                                               fi
                                                description=`echo $type: $name`
                                        fi
 
index fb381936374091c5ba136a6efe3546a119cb8c74..fc166b221c57d4a2df44e6e6ffacdd3eef6a887b 100644 (file)
@@ -35,7 +35,7 @@
 
 #include "langs.h"
 
-#define STRING_SIZE 1023
+#define STRING_SIZE 1024
 
 #define ADDRESS 0
 #define NETADDRESS 1
index de5c558c0e6091a1cb5d93194a09d70064f4aff6..1c6eb42e6ae1bffab5b608f16d777bd12c337966 100644 (file)
@@ -615,6 +615,7 @@ int nicmenu(int colour)
        int rc, choise = 0, count = 0, kcount = 0, mcount = 0, i, j, nic_in_use;
        int found_NIC_as_Card[4];
        char message[STRING_SIZE];
+       char temp[STRING_SIZE];
 
        char cMenuInhalt[STRING_SIZE];
        char MenuInhalt[20][180];
@@ -657,8 +658,20 @@ int nicmenu(int colour)
                pMenuInhalt[mcount] = NULL;
 
                sprintf(message, ctr[TR_CHOOSE_NETCARD], ucolourcard[colour]);
-               rc = newtWinMenu( ctr[TR_NETCARDMENU2], message, 50, 5, 5, 6, pMenuInhalt, &choise, ctr[TR_OK], ctr[TR_SELECT], ctr[TR_CANCEL], NULL);
-                               
+               rc=2;
+               while ( rc == 2 ) {
+                       rc = newtWinMenu( ctr[TR_NETCARDMENU2], message, 50, 5, 5, 6, pMenuInhalt, &choise, ctr[TR_SELECT], ctr[TR_IDENTIFY], ctr[TR_CANCEL], NULL);
+                       if ( rc == 2 ) {
+                               sprintf(temp, "/sbin/ip link set %s up", nics[found_NIC_as_Card[choise]].nic);
+                               mysystem(temp);
+                               sprintf(temp, "/usr/sbin/ethtool -p %s 10", nics[found_NIC_as_Card[choise]].nic);
+                               if (runcommandwithstatus(temp,ctr[TR_IDENTIFY_SHOULD_BLINK]) != 0) {      
+                                       errorbox(ctr[TR_IDENTIFY_NOT_SUPPORTED]);
+                               sprintf(temp, "/sbin/ip link set %s down", nics[found_NIC_as_Card[choise]].nic);
+                               mysystem(temp);
+                               }
+                       }
+               }
                if ( rc == 0 || rc == 1) {
                        write_configs_netudev(found_NIC_as_Card[choise], colour);
                }
index 4d09fbf65d2a2685c6c8341d0c3981beb78ab5dd..b4474355ad53797c46608dda2cfd09a2d6aae549 100644 (file)
@@ -24,11 +24,10 @@ CFLAGS=-O2 -Wall
 COMPILE=$(CC) $(CFLAGS)
 
 PROGS = iowrap
-SUID_PROGS = setdmzholes setportfw setxtaccess \
-       squidctrl sshctrl ipfirereboot \
+SUID_PROGS = squidctrl sshctrl ipfirereboot \
        ipsecctrl timectrl dhcpctrl snortctrl \
        applejuicectrl rebuildhosts backupctrl \
-       logwatch openvpnctrl outgoingfwctrl \
+       logwatch openvpnctrl firewallctrl \
        wirelessctrl getipstat qosctrl launch-ether-wake \
        redctrl syslogdctrl extrahdctrl sambactrl upnpctrl tripwirectrl \
        smartctrl clamavctrl addonctrl pakfire mpfirectrl wlanapctrl \
@@ -86,22 +85,16 @@ smartctrl: smartctrl.c setuid.o ../install+setup/libsmooth/varval.o
 
 clamavctrl: clamavctrl.c setuid.o ../install+setup/libsmooth/varval.o
        $(COMPILE) -I../install+setup/libsmooth/ clamavctrl.c setuid.o ../install+setup/libsmooth/varval.o -o $@
-       
-outgoingfwctrl: outgoingfwctrl.c setuid.o ../install+setup/libsmooth/varval.o
-       $(COMPILE) -I../install+setup/libsmooth/ outgoingfwctrl.c setuid.o ../install+setup/libsmooth/varval.o -o $@
-       
+
+firewallctrl: firewallctrl.c setuid.o ../install+setup/libsmooth/varval.o
+       $(COMPILE) -I../install+setup/libsmooth/ firewallctrl.c setuid.o ../install+setup/libsmooth/varval.o -o $@
+
 timectrl: timectrl.c setuid.o ../install+setup/libsmooth/varval.o
        $(COMPILE) -I../install+setup/libsmooth/ timectrl.c setuid.o ../install+setup/libsmooth/varval.o -o $@
 
 launch-ether-wake: launch-ether-wake.c setuid.o ../install+setup/libsmooth/varval.o
        $(COMPILE) -I../install+setup/libsmooth/ launch-ether-wake.c setuid.o ../install+setup/libsmooth/varval.o -o $@
 
-setdmzholes: setdmzholes.c setuid.o ../install+setup/libsmooth/varval.o
-       $(COMPILE) -I../install+setup/libsmooth/ setdmzholes.c setuid.o ../install+setup/libsmooth/varval.o -o $@
-
-setportfw: setportfw.c setuid.o ../install+setup/libsmooth/varval.o
-       $(COMPILE) -I../install+setup/libsmooth/ setportfw.c setuid.o ../install+setup/libsmooth/varval.o -o $@
-
 rebuildhosts: rebuildhosts.c setuid.o ../install+setup/libsmooth/varval.o
        $(COMPILE) -I../install+setup/libsmooth/ rebuildhosts.c setuid.o ../install+setup/libsmooth/varval.o -o $@
 
index 2941117b03db4d83acb3f26288a555453ec4847a..00c8d5b86e21a40a80ae2dd2051119417da07053 100644 (file)
 
 int main(int argc, char *argv[]) {
        int i;
-       char command[1024];
-       char add[STRING_SIZE];
-       
+       char command[STRING_SIZE] = "/var/ipfire/backup/bin/backup.pl";
+       char temp[STRING_SIZE];
+
        if (!(initsetuid()))
                exit(1);
 
-       snprintf(command, STRING_SIZE, "/var/ipfire/backup/bin/backup.pl");
-
        for (i = 1; i < argc; i++) {
-    if (strstr(argv[i], "&&")){
-             fprintf (stderr, "Bad Argument!\n");
-        exit (1);
-    }
-               else if (strstr(argv[i], "|")){
-                   fprintf (stderr, "Bad Argument!\n");
-                   exit (1);
-               }
-               else if (argc > 3){
-                   fprintf (stderr, "Too Many Arguments!\n");
-                   exit (1);
+               if (strstr(argv[i], "&&")){
+                       fprintf (stderr, "Bad Argument!\n");
+                       exit (1);
+
+               } else if (strstr(argv[i], "|")) {
+                       fprintf (stderr, "Bad Argument!\n");
+                       exit (1);
+
+               } else if (argc > 3) {
+                       fprintf (stderr, "Too Many Arguments!\n");
+                       exit (1);
+
+               } else {
+                       snprintf(temp, STRING_SIZE, "%s %s", command, argv[i]);
+                       snprintf(command, STRING_SIZE, "%s", temp);
                }
-               else{
-               sprintf(add, " %s", argv[i]);
-                   strcat(command, add);
-    }
        }
+
        return safe_system(command);
 }
index 963459a2a6172fe7542f9de5c0f050c4220aa7c8..a026ba09d709b23f38aaa5e3d11cf2efd3f6ce9c 100644 (file)
@@ -1,23 +1,23 @@
-/* IPFire helper program - fireinfoctrl\r
- *\r
- * This program is distributed under the terms of the GNU General Public\r
- * Licence.  See the file COPYING for details.\r
- *\r
- * (c) IPFire Team, 2011\r
- *\r
- * Simple program that calls "sendprofile" as the root user.\r
- * \r
- */\r
-         \r
-#include <stdlib.h>\r
-#include "setuid.h"\r
-\r
-int main(void)\r
-{\r
-       if (!(initsetuid()))\r
-               exit(1);\r
-                       \r
-       safe_system("/usr/bin/sendprofile");\r
-       \r
-       return 0;\r
-}\r
+/* IPFire helper program - fireinfoctrl
+ *
+ * This program is distributed under the terms of the GNU General Public
+ * Licence.  See the file COPYING for details.
+ *
+ * (c) IPFire Team, 2011
+ *
+ * Simple program that calls "sendprofile" as the root user.
+ * 
+ */
+         
+#include <stdlib.h>
+#include "setuid.h"
+
+int main(void)
+{
+       if (!(initsetuid()))
+               exit(1);
+                       
+       safe_system("/usr/bin/sendprofile");
+       
+       return 0;
+}
similarity index 57%
rename from src/misc-progs/outgoingfwctrl.c
rename to src/misc-progs/firewallctrl.c
index 2d993d940f513ad6f69b8030cfdb17780455f334..97de2715ff664bda741617bdfb5c04a456a0fb3e 100644 (file)
@@ -5,20 +5,21 @@
  *
  */
 
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
 #include <unistd.h>
-#include <sys/types.h>
-#include <fcntl.h>
+
 #include "setuid.h"
 
 int main(int argc, char *argv[]) {
-
        if (!(initsetuid()))
                exit(1);
 
-       safe_system("chmod 755 /var/ipfire/outgoing/bin/outgoingfw.pl");
-       safe_system("/var/ipfire/outgoing/bin/outgoingfw.pl");
+       int retval = safe_system("/var/ipfire/firewall/bin/rules.pl");
+
+       /* If rules.pl has been successfully executed, the indicator
+        * file is removed. */
+       if (retval == 0) {
+               unlink("/var/ipfire/firewall/reread");
+       }
+
        return 0;
 }
index 674b211b5cc0bdeaaa3f65c8bd103fe1834b7712..78eb11ad85ec58558c290172a26c03006894bc6c 100644 (file)
@@ -1,31 +1,31 @@
-/* IPFire helper program - getconntracktable\r
- *\r
- * This program is distributed under the terms of the GNU General Public\r
- * Licence.  See the file COPYING for details.\r
- *\r
- * The kernel's connection tracking table is not readable by\r
- * non-root users. So this helper will just read and output it.\r
- */\r
-\r
-#include <stdio.h>\r
-#include <stdlib.h>\r
-#include "setuid.h"\r
-\r
-int main(void) {\r
-       if (!(initsetuid()))\r
-               exit(1);\r
-\r
-       FILE *fp = fopen("/proc/net/nf_conntrack", "r");\r
-       if (fp == NULL) {\r
-               exit(1);\r
-       }\r
-\r
-       /* Read content line by line and write it to stdout. */\r
-       char linebuf[STRING_SIZE];\r
-       while (fgets(linebuf, STRING_SIZE, fp)) {\r
-               printf("%s", linebuf);\r
-       }\r
-\r
-       fclose(fp);\r
-       return 0;\r
-}\r
+/* IPFire helper program - getconntracktable
+ *
+ * This program is distributed under the terms of the GNU General Public
+ * Licence.  See the file COPYING for details.
+ *
+ * The kernel's connection tracking table is not readable by
+ * non-root users. So this helper will just read and output it.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "setuid.h"
+
+int main(void) {
+       if (!(initsetuid()))
+               exit(1);
+
+       FILE *fp = fopen("/proc/net/nf_conntrack", "r");
+       if (fp == NULL) {
+               exit(1);
+       }
+
+       /* Read content line by line and write it to stdout. */
+       char linebuf[STRING_SIZE];
+       while (fgets(linebuf, STRING_SIZE, fp)) {
+               printf("%s", linebuf);
+       }
+
+       fclose(fp);
+       return 0;
+}
index e56203e27faab22dd237ead67991a2502657e751..115ec2a06373359262a6b992b7a77f22d3370798 100644 (file)
@@ -1,44 +1,44 @@
-/* SmoothWall helper program - iowrap.\r
- *\r
- * This program is distributed under the terms of the GNU General Public\r
- * Licence.  See the file COPYING for details.\r
- *\r
- * (c) Lawrence Manning, 2001\r
- * Installer helper for redirecting stdout/stderr to a file/terminal.\r
- * init calls ash through this program to shove it on a tty.\r
- * \r
- * $Id: iowrap.c,v 1.2 2001/11/27 15:20:50 riddles Exp $\r
- * \r
- */\r
-\r
-#include <stdio.h>\r
-#include <sys/types.h>\r
-#include <sys/stat.h>\r
-#include <fcntl.h>\r
-#include <unistd.h>\r
-\r
-int main(int argc, char *argv[])\r
-{\r
-       /* Prog takes one argument.  A device to run on (like a getty) */\r
-       if (argc >= 2)\r
-       {\r
-               int fd;\r
-               \r
-               if ((fd = open(argv[1], O_RDWR)) == -1)\r
-               {\r
-                       printf("Couldn't open device\n");\r
-                       return 0;\r
-               }\r
-               dup2(fd, 0);\r
-               dup2(fd, 1);\r
-               dup2(fd, 2);\r
-               /* Now its sending/reading on that device. */\r
-       }\r
-       \r
-       if (argc >= 3)  \r
-               execvp(argv[2], &argv[2]);\r
-       else\r
-               printf("No command\n");\r
-\r
-       return 0;\r
-}\r
+/* SmoothWall helper program - iowrap.
+ *
+ * This program is distributed under the terms of the GNU General Public
+ * Licence.  See the file COPYING for details.
+ *
+ * (c) Lawrence Manning, 2001
+ * Installer helper for redirecting stdout/stderr to a file/terminal.
+ * init calls ash through this program to shove it on a tty.
+ * 
+ * $Id: iowrap.c,v 1.2 2001/11/27 15:20:50 riddles Exp $
+ * 
+ */
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+int main(int argc, char *argv[])
+{
+       /* Prog takes one argument.  A device to run on (like a getty) */
+       if (argc >= 2)
+       {
+               int fd;
+               
+               if ((fd = open(argv[1], O_RDWR)) == -1)
+               {
+                       printf("Couldn't open device\n");
+                       return 0;
+               }
+               dup2(fd, 0);
+               dup2(fd, 1);
+               dup2(fd, 2);
+               /* Now its sending/reading on that device. */
+       }
+       
+       if (argc >= 3)  
+               execvp(argv[2], &argv[2]);
+       else
+               printf("No command\n");
+
+       return 0;
+}
index 9115b4f8fdb418fd3e63f3f4904560465a6325f6..8a13fa60a8be4203383ed1a72742b7108b910791 100644 (file)
@@ -1,25 +1,25 @@
-/* SmoothWall helper program - smoothiedeath\r
- *\r
- * This program is distributed under the terms of the GNU General Public\r
- * Licence.  See the file COPYING for details.\r
- *\r
- * (c) Lawrence Manning, 2001\r
- * Simple program intended to be installed setuid(0) that can be used for\r
- * starting shutdown.\r
- * \r
- * $Id: ipcopdeath.c,v 1.2 2003/12/11 10:57:34 riddles Exp $\r
- * \r
- */\r
-         \r
-#include <stdlib.h>\r
-#include "setuid.h"\r
-\r
-int main(void)\r
-{\r
-       if (!(initsetuid()))\r
-               exit(1);\r
-       \r
-       safe_system("/sbin/shutdown -h now");\r
-       \r
-       return 0;\r
-}\r
+/* SmoothWall helper program - smoothiedeath
+ *
+ * This program is distributed under the terms of the GNU General Public
+ * Licence.  See the file COPYING for details.
+ *
+ * (c) Lawrence Manning, 2001
+ * Simple program intended to be installed setuid(0) that can be used for
+ * starting shutdown.
+ * 
+ * $Id: ipcopdeath.c,v 1.2 2003/12/11 10:57:34 riddles Exp $
+ * 
+ */
+         
+#include <stdlib.h>
+#include "setuid.h"
+
+int main(void)
+{
+       if (!(initsetuid()))
+               exit(1);
+       
+       safe_system("/sbin/shutdown -h now");
+       
+       return 0;
+}
index dd7988e1821205f2e772f57cf2c4ba15e1702961..10230c3e102429635ad1ca2d7f029bb35f9fce8e 100644 (file)
@@ -1,25 +1,25 @@
-/* SmoothWall helper program - smoothierebirth\r
- *\r
- * This program is distributed under the terms of the GNU General Public\r
- * Licence.  See the file COPYING for details.\r
- *\r
- * (c) Lawrence Manning, 2001\r
- * Simple program intended to be installed setuid(0) that can be used for\r
- * starting reboot.\r
- * \r
- * $Id: ipcoprebirth.c,v 1.2 2003/12/11 10:57:34 riddles Exp $\r
- * \r
- */\r
-         \r
-#include <stdlib.h>\r
-#include "setuid.h"\r
-\r
-int main(void)\r
-{\r
-       if (!(initsetuid()))\r
-               exit(1);\r
-                       \r
-       safe_system("/sbin/shutdown -r now");\r
-       \r
-       return 0;\r
-}\r
+/* SmoothWall helper program - smoothierebirth
+ *
+ * This program is distributed under the terms of the GNU General Public
+ * Licence.  See the file COPYING for details.
+ *
+ * (c) Lawrence Manning, 2001
+ * Simple program intended to be installed setuid(0) that can be used for
+ * starting reboot.
+ * 
+ * $Id: ipcoprebirth.c,v 1.2 2003/12/11 10:57:34 riddles Exp $
+ * 
+ */
+         
+#include <stdlib.h>
+#include "setuid.h"
+
+int main(void)
+{
+       if (!(initsetuid()))
+               exit(1);
+                       
+       safe_system("/sbin/shutdown -r now");
+       
+       return 0;
+}
index 05dddaf2404304c233d49f5d0f14f6cd9fd0af0c..5e758791cd4cc96e8d81454333f7b6c110d3d08a 100644 (file)
-/*\r
- * This file is part of the IPCop Firewall.\r
- *\r
- * IPCop is free software; you can redistribute it and/or modify\r
- * it under the terms of the GNU General Public License as published by\r
- * the Free Software Foundation; either version 2 of the License, or\r
- * (at your option) any later version.\r
- *\r
- * IPCop is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
- * GNU General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * along with IPCop; if not, write to the Free Software\r
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA\r
- *\r
- * Copyright (C) 2005-10-25 Franck Bourdonnec\r
- *\r
- * $Id: ipcopreboot.c,v 1.1.2.2 2005/10/24 23:05:50 franck78 Exp $\r
- *\r
- */\r
-\r
-#include <stdio.h>\r
-#include <string.h>\r
-#include <stdlib.h>\r
-#include "setuid.h"\r
-\r
-\r
-/* define operations */\r
-#define OP_REBOOT        "boot"\r
-#define OP_REBOOT_FS     "bootfs" // add filesystem check option (not yet in GUI)\r
-#define OP_SHUTDOWN      "down"\r
-#define OP_SCHEDULE_ADD   "cron+"\r
-#define OP_SCHEDULE_REM   "cron-"\r
-#define OP_SCHEDULE_GET   "cron?"\r
-\r
-int main(int argc, char**argv)\r
-{\r
-\r
-       if (!(initsetuid()))\r
-           return 1;\r
-\r
-       // Check what command is asked\r
-       if (argc==1)\r
-       {           \r
-           fprintf (stderr, "Missing reboot command!\n");\r
-           return 1;\r
-       }\r
-\r
-       if (argc==2 && strcmp(argv[1], OP_SHUTDOWN)==0)\r
-       {\r
-           safe_system("/sbin/shutdown -h now");\r
-           return 0;\r
-       }\r
-\r
-       if (argc==2 && strcmp(argv[1], OP_REBOOT)==0)\r
-       {\r
-           safe_system("/sbin/shutdown -r now");\r
-           return 0;\r
-       }\r
-\r
-       if (argc==2 && strcmp(argv[1], OP_REBOOT_FS)==0)\r
-       {\r
-           safe_system("/sbin/shutdown -F -r now");\r
-           return 0;\r
-       }\r
-\r
-       // output schedule to stdout\r
-       if (argc==2 && strcmp(argv[1], OP_SCHEDULE_GET)==0)\r
-       {\r
-           safe_system("/bin/grep /sbin/shutdown /var/spool/cron/root.orig");\r
-           return 0;\r
-       }\r
-\r
-       if (argc==2 && strcmp(argv[1], OP_SCHEDULE_REM)==0)\r
-       {\r
-           safe_system("/usr/bin/perl -i -p -e 's/^.*\\/sbin\\/shutdown.*$//s' /var/spool/cron/root.orig");\r
-           safe_system("/usr/bin/fcrontab -u root -z");\r
-           return 0;\r
-       }\r
-\r
-       if (argc==6 && strcmp(argv[1], OP_SCHEDULE_ADD)==0)\r
-       {\r
-           // check args\r
-           if (!(  strlen(argv[2])<3 &&\r
-                   strspn(argv[2], "0123456789") == strlen (argv[2]) &&\r
-                   strlen(argv[3])<3 &&\r
-                   strspn(argv[3], "0123456789") == strlen (argv[3]) &&\r
-                   strlen(argv[4])<14 &&\r
-                   strspn(argv[4], "1234567,*") == strlen (argv[4])  &&\r
-                   ((strcmp(argv[5], "-r")==0) ||      //reboot\r
-                    (strcmp(argv[5], "-h")==0))  )     //hangup\r
-               ) {\r
-                       fprintf (stderr, "Bad cron+ parameters!\n");\r
-                       return 1;\r
-           }\r
-           \r
-           // remove old entry                               \r
-           safe_system("/usr/bin/perl -i -p -e 's/^.*\\/sbin\\/shutdown.*$//s' /var/spool/cron/root.orig");\r
-\r
-           // add new entry\r
-           FILE *fd = NULL;\r
-           if ((fd = fopen("/var/spool/cron/root.orig", "a")))\r
-           {\r
-               fprintf (fd,"%s %s * * %s /sbin/shutdown %s 1\n",argv[2],argv[3],argv[4],argv[5]);\r
-               fclose (fd);\r
-           }\r
-           \r
-           // inform cron\r
-           safe_system("/usr/bin/fcrontab -u root -z");\r
-           return 0;\r
-       }\r
-\r
-       fprintf (stderr, "Bad reboot command!\n");\r
-       return 1;\r
-}\r
+/*
+ * This file is part of the IPCop Firewall.
+ *
+ * IPCop is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * IPCop is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with IPCop; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+ *
+ * Copyright (C) 2005-10-25 Franck Bourdonnec
+ *
+ * $Id: ipcopreboot.c,v 1.1.2.2 2005/10/24 23:05:50 franck78 Exp $
+ *
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include "setuid.h"
+
+
+/* define operations */
+#define OP_REBOOT        "boot"
+#define OP_REBOOT_FS     "bootfs" // add filesystem check option (not yet in GUI)
+#define OP_SHUTDOWN      "down"
+#define OP_SCHEDULE_ADD   "cron+"
+#define OP_SCHEDULE_REM   "cron-"
+#define OP_SCHEDULE_GET   "cron?"
+
+int main(int argc, char**argv)
+{
+
+       if (!(initsetuid()))
+           return 1;
+
+       // Check what command is asked
+       if (argc==1)
+       {           
+           fprintf (stderr, "Missing reboot command!\n");
+           return 1;
+       }
+
+       if (argc==2 && strcmp(argv[1], OP_SHUTDOWN)==0)
+       {
+           safe_system("/sbin/shutdown -h now");
+           return 0;
+       }
+
+       if (argc==2 && strcmp(argv[1], OP_REBOOT)==0)
+       {
+           safe_system("/sbin/shutdown -r now");
+           return 0;
+       }
+
+       if (argc==2 && strcmp(argv[1], OP_REBOOT_FS)==0)
+       {
+           safe_system("/sbin/shutdown -F -r now");
+           return 0;
+       }
+
+       // output schedule to stdout
+       if (argc==2 && strcmp(argv[1], OP_SCHEDULE_GET)==0)
+       {
+           safe_system("/bin/grep /sbin/shutdown /var/spool/cron/root.orig");
+           return 0;
+       }
+
+       if (argc==2 && strcmp(argv[1], OP_SCHEDULE_REM)==0)
+       {
+           safe_system("/usr/bin/perl -i -p -e 's/^.*\\/sbin\\/shutdown.*$//s' /var/spool/cron/root.orig");
+           safe_system("/usr/bin/fcrontab -u root -z");
+           return 0;
+       }
+
+       if (argc==6 && strcmp(argv[1], OP_SCHEDULE_ADD)==0)
+       {
+           // check args
+           if (!(  strlen(argv[2])<3 &&
+                   strspn(argv[2], "0123456789") == strlen (argv[2]) &&
+                   strlen(argv[3])<3 &&
+                   strspn(argv[3], "0123456789") == strlen (argv[3]) &&
+                   strlen(argv[4])<14 &&
+                   strspn(argv[4], "1234567,*") == strlen (argv[4])  &&
+                   ((strcmp(argv[5], "-r")==0) ||      //reboot
+                    (strcmp(argv[5], "-h")==0))  )     //hangup
+               ) {
+                       fprintf (stderr, "Bad cron+ parameters!\n");
+                       return 1;
+           }
+           
+           // remove old entry                               
+           safe_system("/usr/bin/perl -i -p -e 's/^.*\\/sbin\\/shutdown.*$//s' /var/spool/cron/root.orig");
+
+           // add new entry
+           FILE *fd = NULL;
+           if ((fd = fopen("/var/spool/cron/root.orig", "a")))
+           {
+               fprintf (fd,"%s %s * * %s /sbin/shutdown %s 1\n",argv[2],argv[3],argv[4],argv[5]);
+               fclose (fd);
+           }
+           
+           // inform cron
+           safe_system("/usr/bin/fcrontab -u root -z");
+           return 0;
+       }
+
+       fprintf (stderr, "Bad reboot command!\n");
+       return 1;
+}
index 365807c9e4ab336a5f208a30592e3a8b70a208f7..570fdebab4583e3c10f6d8f2a56df42d3cfbed57 100644 (file)
@@ -13,7 +13,9 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <signal.h>
+
 #include "setuid.h"
+#include "netutil.h"
 
 /*
     This module is responsible for start stop of the vpn system.
diff --git a/src/misc-progs/netutil.h b/src/misc-progs/netutil.h
new file mode 100644 (file)
index 0000000..e96eb5d
--- /dev/null
@@ -0,0 +1,48 @@
+
+#ifndef NETUTIL_H
+#define NETUTIL_H 1
+
+#include <stdlib.h>
+
+#define LETTERS "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
+#define NUMBERS "0123456789"
+#define LETTERS_NUMBERS LETTERS NUMBERS
+#define IP_NUMBERS "./" NUMBERS
+#define PORT_NUMBERS ":-" NUMBERS
+#define VALID_FQDN LETTERS_NUMBERS ".-"
+
+#define VALID_IP(ip) (strlen(ip) > 6 \
+               && strlen(ip) < 16 \
+               && strspn(ip, NUMBERS ".") == strlen(ip))
+
+#define VALID_IP_AND_MASK(ip) (strlen(ip) > 6 \
+               && strlen(ip) < 32 \
+               && strspn(ip, IP_NUMBERS) == strlen(ip))
+
+#define VALID_PORT(port) (strlen(port) \
+               && strlen(port) < 6 \
+               && strspn(port, NUMBERS) == strlen(port))
+
+#define VALID_PORT_RANGE(port) (strlen(port) \
+               && strlen(port) < 12 \
+               && strspn(port, PORT_NUMBERS) == strlen(port))
+
+#define VALID_SHORT_MASK(ip) (strlen(ip) > 1 \
+               && strlen(ip) < 3 \
+               && strspn(ip, NUMBERS) == strlen(ip))
+
+/* Can't find any info on valid characters/length hopefully these are
+ * reasonable guesses */
+#define VALID_DEVICE(dev) (strlen(dev) \
+               && strlen(dev) < 16 \
+               && strspn(dev, LETTERS_NUMBERS ":.") == strlen(dev))
+
+/* Again, can't find any hard and fast rules for protocol names, these
+ * restrictions are based on the keywords currently listed in
+ * <http://www.iana.org/assignments/protocol-numbers>
+ * though currently the ipcop cgis will only pass tcp, udp or gre anyway */
+#define VALID_PROTOCOL(prot) (strlen(prot) \
+               &&  strlen(prot) <16 \
+               &&  strspn(prot, LETTERS_NUMBERS "-") == strlen(prot))
+
+#endif
index 76916f147cb009a587fdee449a2f37303468e70a..257778892a1868bdb302614de2a1fcc970b3d619 100644 (file)
@@ -8,6 +8,7 @@
 #include <netinet/in.h>
 #include <fcntl.h>
 #include "setuid.h"
+#include "netutil.h"
 #include "libsmooth.h"
 
 #define noovpndebug
@@ -27,6 +28,7 @@ char enableorange[STRING_SIZE] = "off";
 char OVPNRED[STRING_SIZE] = "OVPN";
 char OVPNBLUE[STRING_SIZE] = "OVPN_BLUE_";
 char OVPNORANGE[STRING_SIZE] = "OVPN_ORANGE_";
+char OVPNBLOCK[STRING_SIZE] = "OVPNBLOCK";
 char OVPNNAT[STRING_SIZE] = "OVPNNAT";
 char WRAPPERVERSION[STRING_SIZE] = "ipfire-2.2.3";
 
@@ -162,7 +164,6 @@ connection *getConnections() {
 int readPidFile(const char *pidfile) {
        FILE *fp = fopen(pidfile, "r");
        if (fp == NULL) {
-               fprintf(stderr, "PID file not found: '%s'\n", pidfile);
                exit(1);
        }
 
@@ -174,7 +175,6 @@ int readPidFile(const char *pidfile) {
 }
 
 void ovpnInit(void) {
-       
        // Read OpenVPN configuration
        kv = initkeyvalues();
        if (!readkeyvalues(kv, CONFIG_ROOT "/ovpn/settings")) {
@@ -183,17 +183,14 @@ void ovpnInit(void) {
        }
 
        if (!findkey(kv, "ENABLED", enablered)) {
-               fprintf(stderr, "Cannot read ENABLED\n");
                exit(1);
        }
 
        if (!findkey(kv, "ENABLED_BLUE", enableblue)){
-               fprintf(stderr, "Cannot read ENABLED_BLUE\n");
                exit(1);
        }
 
        if (!findkey(kv, "ENABLED_ORANGE", enableorange)){
-               fprintf(stderr, "Cannot read ENABLED_ORANGE\n");
                exit(1);
        }
        freekeyvalues(kv);
@@ -219,24 +216,22 @@ void ovpnInit(void) {
        }
 
        kv=initkeyvalues();
-       if (!readkeyvalues(kv, CONFIG_ROOT "/ethernet/settings"))
-       {
+       if (!readkeyvalues(kv, CONFIG_ROOT "/ethernet/settings")) {
                fprintf(stderr, "Cannot read ethernet settings\n");
                exit(1);
        }
        
-       if (strcmp(enableblue, "on")==0){
-               if (!findkey(kv, "BLUE_DEV", blueif)){
-                       fprintf(stderr, "Cannot read BLUE_DEV\n");
+       if (strcmp(enableblue, "on") == 0) {
+               if (!findkey(kv, "BLUE_DEV", blueif)) {
                        exit(1);
                }
        }
-       if (strcmp(enableorange, "on")==0){
-               if (!findkey(kv, "ORANGE_DEV", orangeif)){
-                       fprintf(stderr, "Cannot read ORNAGE_DEV\n");
+
+       if (strcmp(enableorange, "on") == 0) {
+               if (!findkey(kv, "ORANGE_DEV", orangeif)) {
                        exit(1);
                }
-       }               
+       }
        freekeyvalues(kv);
 }
 
@@ -253,20 +248,13 @@ void setChainRules(char *chain, char *interface, char *protocol, char *port)
 
        sprintf(str, "/sbin/iptables -A %sINPUT -i %s -p %s --dport %s -j ACCEPT", chain, interface, protocol, port);
        executeCommand(str);
-       sprintf(str, "/sbin/iptables -A %sINPUT -i tun+ -j ACCEPT", chain);
-       executeCommand(str);
-       sprintf(str, "/sbin/iptables -A %sFORWARD -i tun+ -j ACCEPT", chain);
-       executeCommand(str);
 }
 
 void flushChain(char *chain) {
        char str[STRING_SIZE];
 
-       sprintf(str, "/sbin/iptables -F %sINPUT", chain);
-       executeCommand(str);
-       sprintf(str, "/sbin/iptables -F %sFORWARD", chain);
+       sprintf(str, "/sbin/iptables -F %s", chain);
        executeCommand(str);
-       safe_system(str);
 }
 
 void flushChainNAT(char *chain) {
@@ -276,15 +264,18 @@ void flushChainNAT(char *chain) {
        executeCommand(str);
 }
 
+void flushChainINPUT(char *chain) {
+       char str[STRING_SIZE];
+
+       snprintf(str, STRING_SIZE, "%sINPUT", chain);
+       flushChain(str);
+}
+
 void deleteChainReference(char *chain) {
        char str[STRING_SIZE];
 
        sprintf(str, "/sbin/iptables -D INPUT -j %sINPUT", chain);
        executeCommand(str);
-       safe_system(str);
-       sprintf(str, "/sbin/iptables -D FORWARD -j %sFORWARD", chain);
-       executeCommand(str);
-       safe_system(str);
 }
 
 void deleteChain(char *chain) {
@@ -292,8 +283,6 @@ void deleteChain(char *chain) {
 
        sprintf(str, "/sbin/iptables -X %sINPUT", chain);
        executeCommand(str);
-       sprintf(str, "/sbin/iptables -X %sFORWARD", chain);
-       executeCommand(str);
 }
 
 void deleteAllChains(void) {
@@ -301,34 +290,34 @@ void deleteAllChains(void) {
        deleteChainReference(OVPNRED);
        deleteChainReference(OVPNBLUE);
        deleteChainReference(OVPNORANGE);
-       flushChain(OVPNRED);
-       flushChain(OVPNBLUE);
-       flushChain(OVPNORANGE);
+       flushChainINPUT(OVPNRED);
+       flushChainINPUT(OVPNBLUE);
+       flushChainINPUT(OVPNORANGE);
        deleteChain(OVPNRED);
        deleteChain(OVPNBLUE);
        deleteChain(OVPNORANGE);
+
+       // Only flush chains that are created by the firewall
+       flushChain(OVPNBLOCK);
+       flushChainNAT(OVPNNAT);
 }
 
 void createChainReference(char *chain) {
        char str[STRING_SIZE];
        sprintf(str, "/sbin/iptables -I INPUT %s -j %sINPUT", "14", chain);
        executeCommand(str);
-       sprintf(str, "/sbin/iptables -I FORWARD %s -j %sFORWARD", "12", chain);
-       executeCommand(str);
 }
 
 void createChain(char *chain) {
        char str[STRING_SIZE];
        sprintf(str, "/sbin/iptables -N %sINPUT", chain);
        executeCommand(str);
-       sprintf(str, "/sbin/iptables -N %sFORWARD", chain);
-       executeCommand(str);
 }
 
 void createAllChains(void) {
        // create chain and chain references
        if (!strcmp(enableorange, "on")) {
-               if (strlen(orangeif)) {
+               if (strlen(orangeif) > 0) {
                        createChain(OVPNORANGE);
                        createChainReference(OVPNORANGE);
                } else {
@@ -338,7 +327,7 @@ void createAllChains(void) {
        }
 
        if (!strcmp(enableblue, "on")) {
-               if (strlen(blueif)) {
+               if (strlen(blueif) > 0) {
                        createChain(OVPNBLUE);
                        createChainReference(OVPNBLUE);
                } else {
@@ -348,7 +337,7 @@ void createAllChains(void) {
        }
 
        if (!strcmp(enablered, "on")) {
-               if (strlen(redif)) {
+               if (strlen(redif) > 0) {
                        createChain(OVPNRED);
                        createChainReference(OVPNRED);
                } else {
@@ -466,14 +455,14 @@ void setFirewallRules(void) {
 
        if (!findkey(kv, "VPN_IP", dovpnip)){
                fprintf(stderr, "Cannot read VPN_IP\n");
-//             exit(1); step further as we don't need an ip
        }
        freekeyvalues(kv);
 
        // Flush all chains.
-       flushChain(OVPNRED);
-       flushChain(OVPNBLUE);
-       flushChain(OVPNORANGE);
+       flushChainINPUT(OVPNRED);
+       flushChainINPUT(OVPNBLUE);
+       flushChainINPUT(OVPNORANGE);
+       flushChain(OVPNBLOCK);
        flushChainNAT(OVPNNAT);
 
        // set firewall rules
@@ -497,6 +486,11 @@ void setFirewallRules(void) {
                                OVPNRED, redif, conn->proto, conn->port);
                        executeCommand(command);
 
+                       /* Block all communication from the transfer nets. */
+                       snprintf(command, STRING_SIZE, "/sbin/iptables -A %s -s %s -j DROP",
+                               OVPNBLOCK, conn->transfer_subnet);
+                       executeCommand(command);
+
                        local_subnet_address = getLocalSubnetAddress(conn);
                        transfer_subnet_address = calcTransferNetAddress(conn);
 
@@ -529,7 +523,7 @@ void stopDaemon(void) {
 void startDaemon(void) {
        char command[STRING_SIZE];
        
-       if (!((strcmp(enablered, "on")==0) || (strcmp(enableblue, "on")==0) || (strcmp(enableorange, "on")==0))){
+       if (!((strcmp(enablered, "on") == 0) || (strcmp(enableblue, "on") == 0) || (strcmp(enableorange, "on") == 0))) {
                fprintf(stderr, "OpenVPN is not enabled on any interface\n");
                exit(1);
        } else {
index 113216faa71dede918f35c49f740d25d74d9e0aa..fe6edfc32948c496df9f05ffa057bdcb427978ae 100644 (file)
 
 int main(int argc, char *argv[]) {
        int i;
-       char command[1024];
-       char add[STRING_SIZE];
-       
+       char command[STRING_SIZE] = "/opt/pakfire/pakfire";
+       char temp[STRING_SIZE];
+
        if (!(initsetuid()))
                exit(1);
 
-       snprintf(command, STRING_SIZE, "/opt/pakfire/pakfire");
-
        for (i = 1; i < argc; i++) {
-               sprintf(add, " %s", argv[i]);
-               strcat(command, add);
+               snprintf(temp, STRING_SIZE, "%s %s", command, argv[i]);
+               snprintf(command, STRING_SIZE, "%s", temp);
        }
-       
+
        return safe_system(command);
 }
index e831858819e18d98c5e11404953bad65580cf4b6..21c523600c75b5223106d6aeb284db40f30e9531 100644 (file)
@@ -19,7 +19,9 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <signal.h>
+
 #include "setuid.h"
+#include "netutil.h"
 
 FILE *fd = NULL;
 FILE *hosts = NULL;
index ea4bc11dbec4e3016ac6b0d64f77cbe0e5b4ce97..93af1cb0a4ecd1e7832aad8b6943c9d903695680 100644 (file)
@@ -13,8 +13,6 @@
  *
  */
 
-#include "libsmooth.h"
-#include "setuid.h"
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <sys/stat.h>
 #include <fcntl.h>
 
+#include "libsmooth.h"
+#include "setuid.h"
+#include "netutil.h"
+
 struct keyvalue *kv = NULL;
 FILE *file = NULL;
 
diff --git a/src/misc-progs/setdmzholes.c b/src/misc-progs/setdmzholes.c
deleted file mode 100644 (file)
index 7a2643d..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-/* SmoothWall helper program - setdmzhole\r
- *\r
- * This program is distributed under the terms of the GNU General Public\r
- * Licence.  See the file COPYING for details.\r
- *\r
- * (c) Daniel Goscomb, 2001\r
- * \r
- * Modifications and improvements by Lawrence Manning.\r
- *\r
- * 10/04/01 Aslak added protocol support\r
- * This program reads the list of ports to forward and setups iptables\r
- * and rules in ipmasqadm to enable them.\r
- * \r
- * $Id: setdmzholes.c,v 1.5.2.3 2005/10/18 17:05:27 franck78 Exp $\r
- * \r
- */\r
-#include "libsmooth.h"\r
-#include <stdio.h>\r
-#include <string.h>\r
-#include <stdlib.h>\r
-#include "setuid.h"\r
-\r
-FILE *fwdfile = NULL;\r
-\r
-void exithandler(void)\r
-{\r
-       if (fwdfile)\r
-               fclose(fwdfile);\r
-}\r
-\r
-int main(void)\r
-{\r
-       int count;\r
-       char *protocol;\r
-       char *locip;\r
-       char *remip;\r
-       char *remport;\r
-       char *enabled;\r
-       char *src_net;\r
-       char *dst_net;\r
-       char s[STRING_SIZE];\r
-       char *result;\r
-       struct keyvalue *kv = NULL;\r
-       char orange_dev[STRING_SIZE] = "";\r
-       char blue_dev[STRING_SIZE] = "";\r
-       char green_dev[STRING_SIZE] = "";\r
-       char *idev;\r
-       char *odev;\r
-       char command[STRING_SIZE];\r
-\r
-       if (!(initsetuid()))\r
-               exit(1);\r
-\r
-       atexit(exithandler);\r
-\r
-       kv=initkeyvalues();\r
-       if (!readkeyvalues(kv, CONFIG_ROOT "/ethernet/settings"))\r
-       {\r
-               fprintf(stderr, "Cannot read ethernet settings\n");\r
-               exit(1);\r
-       }\r
-\r
-       if (!findkey(kv, "GREEN_DEV", green_dev))\r
-       {\r
-               fprintf(stderr, "Cannot read GREEN_DEV\n");\r
-               exit(1);\r
-       }\r
-       findkey(kv, "BLUE_DEV", blue_dev);\r
-       findkey(kv, "ORANGE_DEV", orange_dev);\r
-\r
-       if (!(fwdfile = fopen(CONFIG_ROOT "/dmzholes/config", "r")))\r
-       {\r
-               fprintf(stderr, "Couldn't open dmzholes settings file\n");\r
-               exit(1);\r
-       }\r
-\r
-       safe_system("/sbin/iptables -F DMZHOLES");\r
-\r
-       while (fgets(s, STRING_SIZE, fwdfile) != NULL)\r
-       {\r
-               if (s[strlen(s) - 1] == '\n')\r
-                       s[strlen(s) - 1] = '\0';\r
-               result = strtok(s, ",");\r
-               \r
-               count = 0;\r
-               protocol = NULL;\r
-               locip = NULL; remip = NULL;\r
-               remport = NULL;\r
-               enabled = NULL;\r
-               src_net = NULL;\r
-               dst_net = NULL;\r
-               idev = NULL;\r
-               odev = NULL;\r
-               \r
-               while (result)\r
-               {\r
-                       if (count == 0)\r
-                               protocol = result;\r
-                       else if (count == 1)\r
-                               locip = result;\r
-                       else if (count == 2)\r
-                               remip = result;\r
-                       else if (count == 3)\r
-                               remport = result;\r
-                       else if (count == 4)\r
-                               enabled = result;\r
-                       else if (count == 5)\r
-                               src_net = result;\r
-                       else if (count == 6)\r
-                               dst_net = result;\r
-                       count++;\r
-                       result = strtok(NULL, ",");\r
-               }\r
-\r
-               if (!(protocol && locip && remip && remport && enabled))\r
-               {\r
-                       fprintf(stderr, "Bad line:\n");\r
-                       break;\r
-               }\r
-\r
-               if (!VALID_PROTOCOL(protocol))\r
-               {\r
-                       fprintf(stderr, "Bad protocol: %s\n", protocol);\r
-                       exit(1);\r
-               }\r
-               if (!VALID_IP_AND_MASK(locip))\r
-               {\r
-                       fprintf(stderr, "Bad local IP: %s\n", locip);\r
-                       exit(1);\r
-               }\r
-               if (!VALID_IP_AND_MASK(remip))\r
-               {\r
-                       fprintf(stderr, "Bad remote IP: %s\n", remip);\r
-                       exit(1);\r
-               }\r
-               if (!VALID_PORT_RANGE(remport))\r
-               {\r
-                       fprintf(stderr, "Bad remote port: %s\n", remport);\r
-                       exit(1);\r
-               }\r
-               \r
-               if (!src_net) { src_net = strdup ("orange");}\r
-               if (!dst_net) { dst_net = strdup ("green");}\r
-               \r
-               if (!strcmp(src_net, "blue"))   { idev = blue_dev; }\r
-               if (!strcmp(src_net, "orange")) { idev = orange_dev; }\r
-               if (!strcmp(dst_net, "blue"))   { odev = blue_dev; }\r
-               if (!strcmp(dst_net, "green"))  { odev = green_dev; }\r
-               \r
-               if (!strcmp(enabled, "on") && strlen(idev) && strlen (odev))\r
-               {\r
-                       char *ctr;\r
-                       /* If remport contains a - we need to change it to a : */\r
-                       if ((ctr = strchr(remport,'-')) != NULL){*ctr = ':';}\r
-                       memset(command, 0, STRING_SIZE);\r
-                       snprintf(command, STRING_SIZE - 1, "/sbin/iptables -A DMZHOLES -p %s -i %s -o %s -s %s -d %s --dport %s -j ACCEPT", protocol, idev, odev, locip, remip, remport);\r
-                       safe_system(command);\r
-               }\r
-       }\r
-\r
-       return 0;\r
-}\r
diff --git a/src/misc-progs/setportfw.c b/src/misc-progs/setportfw.c
deleted file mode 100644 (file)
index a65aebd..0000000
+++ /dev/null
@@ -1,369 +0,0 @@
-/* SmoothWall helper program - setportfw\r
- *\r
- * This program is distributed under the terms of the GNU General Public\r
- * Licence.  See the file COPYING for details.\r
- *\r
- * (c) Daniel Goscomb, 2001\r
- * Copyright (c) 2002/04/13 Steve Bootes - Added source ip support for aliases\r
- * \r
- * Modifications and improvements by Lawrence Manning.\r
- *\r
- * 10/04/01 Aslak added protocol support\r
- * This program reads the list of ports to forward and setups iptables\r
- * and rules in ipmasqadm to enable them.\r
- *\r
- * 02/11/03 Darren Critchley modifications to allow it to open multiple\r
- *                                                      source ip addresses\r
- * 02/25/03 Darren Critchley modifications to allow port ranges\r
- * 04/01/03 Darren Critchley modifications to allow gre protocol\r
- * 20/04/03 Robert Kerr Fixed root exploit, validated all variables properly,\r
- *                      tidied up the iptables logic, killed duplicated code,\r
- *                      removed srciptmp (unecessary)\r
- *\r
- * $Id: setportfw.c,v 1.3.2.6 2005/08/24 18:44:19 gespinasse Exp $\r
- * \r
- */\r
-\r
-#include <stdio.h>\r
-#include <string.h>\r
-#include <stdlib.h>\r
-#include "libsmooth.h"\r
-#include "setuid.h"\r
-\r
-struct keyvalue *kv = NULL;\r
-FILE *fwdfile = NULL;\r
-\r
-void exithandler(void)\r
-{\r
-       if(kv)\r
-               freekeyvalues(kv);\r
-       if (fwdfile)\r
-               fclose(fwdfile);\r
-}\r
-\r
-int main(void)\r
-{\r
-       FILE *ipfile = NULL, *ifacefile = NULL;\r
-       int count;\r
-       char iface[STRING_SIZE] ="";
-       char locip[STRING_SIZE] ="";
-       char greenip[STRING_SIZE] ="", greenmask[STRING_SIZE] ="";
-       char bluedev[STRING_SIZE] ="", blueip[STRING_SIZE] ="", bluemask[STRING_SIZE] ="";
-       char orangedev[STRING_SIZE] ="", orangeip[STRING_SIZE] ="", orangemask[STRING_SIZE] ="";
-       char *protocol;\r
-       char *srcip;\r
-       char *locport;\r
-       char *remip;\r
-       char *remport;\r
-       char *origip;\r
-       char *enabled;\r
-       char s[STRING_SIZE];\r
-       char *result;\r
-       char *key1;\r
-       char *key2;\r
-       char command[STRING_SIZE];\r
-\r
-       if (!(initsetuid()))\r
-               exit(1);\r
-\r
-       atexit(exithandler);\r
-\r
-       /* Read in and verify config */\r
-       kv=initkeyvalues();\r
-\r
-       if (!readkeyvalues(kv, CONFIG_ROOT "/ethernet/settings"))\r
-       {\r
-               fprintf(stderr, "Cannot read ethernet settings\n");\r
-               exit(1);\r
-       }\r
-\r
-       if (!findkey(kv, "GREEN_ADDRESS", greenip))\r
-       {\r
-               fprintf(stderr, "Cannot read GREEN_ADDRESS\n");\r
-               exit(1);\r
-       }\r
-\r
-       if (!VALID_IP(greenip))\r
-       {\r
-               fprintf(stderr, "Bad GREEN_ADDRESS: %s\n", greenip);\r
-               exit(1);\r
-       }\r
-\r
-       if (!findkey(kv, "GREEN_NETMASK", greenmask))\r
-       {\r
-               fprintf(stderr, "Cannot read GREEN_NETMASK\n");\r
-               exit(1);\r
-       }\r
-\r
-       if (!VALID_IP(greenmask))\r
-       {\r
-               fprintf(stderr, "Bad GREEN_NETMASK: %s\n", greenmask);\r
-               exit(1);\r
-       }\r
-\r
-       /* Get the BLUE interface details */\r
-       findkey(kv, "BLUE_DEV", bluedev);\r
-\r
-       if (strlen(bluedev))\r
-       {\r
-\r
-               if (!VALID_DEVICE(bluedev))\r
-               {\r
-                       fprintf(stderr, "Bad BLUE_DEV: %s\n", bluedev);\r
-                       exit(1);\r
-               }\r
-\r
-               if (!findkey(kv, "BLUE_ADDRESS", blueip))\r
-               {\r
-                       fprintf(stderr, "Cannot read BLUE_ADDRESS\n");\r
-                       exit(1);\r
-               }\r
-\r
-               if (!VALID_IP(blueip))\r
-               {\r
-                       fprintf(stderr, "Bad BLUE_ADDRESS: %s\n", blueip);\r
-                       exit(1);\r
-               }\r
-\r
-               if (!findkey(kv, "BLUE_NETMASK", bluemask))\r
-               {\r
-                       fprintf(stderr, "Cannot read BLUE_NETMASK\n");\r
-                       exit(1);\r
-               }\r
-\r
-               if (!VALID_IP(bluemask))\r
-               {\r
-                       fprintf(stderr, "Bad BLUE_NETMASK: %s\n", bluemask);\r
-                       exit(1);\r
-               }\r
-\r
-       }\r
-\r
-       /* Get the ORANGE interface details */\r
-       findkey(kv, "ORANGE_DEV", orangedev);\r
-\r
-       if (strlen(orangedev))\r
-       {\r
-\r
-               if (!VALID_DEVICE(orangedev))\r
-               {\r
-                       fprintf(stderr, "Bad ORANGE_DEV: %s\n", orangedev);\r
-                       exit(1);\r
-               }\r
-\r
-               if (!findkey(kv, "ORANGE_ADDRESS", orangeip))\r
-               {\r
-                       fprintf(stderr, "Cannot read ORANGE_ADDRESS\n");\r
-                       exit(1);\r
-               }\r
-\r
-               if (!VALID_IP(orangeip))\r
-               {\r
-                       fprintf(stderr, "Bad ORANGE_ADDRESS: %s\n", orangeip);\r
-                       exit(1);\r
-               }\r
-\r
-               if (!findkey(kv, "ORANGE_NETMASK", orangemask))\r
-               {\r
-                       fprintf(stderr, "Cannot read ORANGE_NETMASK\n");\r
-                       exit(1);\r
-               }\r
-\r
-               if (!VALID_IP(orangemask))\r
-               {\r
-                       fprintf(stderr, "Bad ORANGE_NETMASK: %s\n", orangemask);\r
-                       exit(1);\r
-               }\r
-\r
-       }\r
-\r
-\r
-       if (!(ipfile = fopen(CONFIG_ROOT "/red/local-ipaddress", "r")))\r
-       {\r
-               fprintf(stderr, "Couldn't open local ip file\n");\r
-               exit(1);\r
-       }\r
-       fgets(locip, STRING_SIZE, ipfile);\r
-       if (locip[strlen(locip) - 1] == '\n')\r
-               locip[strlen(locip) - 1] = '\0';\r
-       fclose (ipfile);\r
-       if (!VALID_IP(locip))\r
-       {\r
-               fprintf(stderr, "Bad local IP: %s\n", locip);\r
-               exit(1);\r
-       }\r
-       \r
-       if (!(ifacefile = fopen(CONFIG_ROOT "/red/iface", "r")))\r
-       {\r
-               fprintf(stderr, "Couldn't open iface file\n");\r
-               exit(1);\r
-       }\r
-       fgets(iface, STRING_SIZE, ifacefile);\r
-       if (iface[strlen(iface) - 1] == '\n')\r
-               iface[strlen(iface) - 1] = '\0';\r
-       fclose (ifacefile);\r
-       if (!VALID_DEVICE(iface))\r
-       {\r
-               fprintf(stderr, "Bad iface: %s\n", iface);\r
-               exit(1);\r
-       }\r
-       \r
-       if (!(fwdfile = fopen(CONFIG_ROOT "/portfw/config", "r")))\r
-       {\r
-               fprintf(stderr, "Couldn't open portfw settings file\n");\r
-               exit(1);\r
-       }\r
-\r
-       safe_system("/sbin/iptables -t nat -F PORTFW");\r
-       safe_system("/sbin/iptables -t mangle -F PORTFWMANGLE");\r
-       safe_system("/sbin/iptables -F PORTFWACCESS");\r
-\r
-       while (fgets(s, STRING_SIZE, fwdfile) != NULL)\r
-       {\r
-               if (s[strlen(s) - 1] == '\n')\r
-                       s[strlen(s) - 1] = '\0';\r
-               result = strtok(s, ",");\r
-\r
-               count = 0;\r
-               key1 = NULL;\r
-               key2 = NULL;\r
-               protocol = NULL;\r
-               srcip = NULL;\r
-               locport = NULL;\r
-               remip = NULL;\r
-               origip = NULL;\r
-               remport = NULL;\r
-               enabled = NULL;\r
-               while (result)\r
-               {\r
-                       if (count == 0)\r
-                               key1 = result;\r
-                       else if (count == 1)\r
-                               key2 = result;\r
-                       else if (count == 2)\r
-                               protocol = result;\r
-                       else if (count == 3)\r
-                               locport = result;\r
-                       else if (count == 4)\r
-                               remip = result;\r
-                       else if (count == 5)\r
-                               remport = result;\r
-                       else if (count == 6)\r
-                               enabled = result;\r
-                       else if (count == 7)\r
-                               srcip = result;\r
-                       else if (count == 8)\r
-                               origip = result;\r
-                       count++;\r
-                       result = strtok(NULL, ",");\r
-               }\r
-               \r
-               if (!(key1 && key2 && protocol && locport && remip && remport && enabled\r
-                       && srcip && origip))\r
-                       break;\r
-               \r
-               if (!VALID_PROTOCOL(protocol))\r
-               {\r
-                       fprintf(stderr, "Bad protocol: %s\n", protocol);\r
-                       exit(1);\r
-               }\r
-               if (strcmp(protocol, "gre") == 0)\r
-               {\r
-                       locport = "0";\r
-                       remport = "0";\r
-               }\r
-               if (strcmp(origip,"0") && !VALID_IP_AND_MASK(origip))\r
-               {\r
-                       fprintf(stderr, "Bad IP: %s\n", origip);\r
-                       exit(1);\r
-               }\r
-               if (!VALID_PORT_RANGE(locport))\r
-               {\r
-                       fprintf(stderr, "Bad local port: %s\n", locport);\r
-                       exit(1);\r
-               }\r
-               if (!VALID_IP(remip))\r
-               {\r
-                       fprintf(stderr, "Bad remote IP: %s\n", remip);\r
-                       exit(1);\r
-               }\r
-               if (!VALID_PORT_RANGE(remport))\r
-               {\r
-                       fprintf(stderr, "Bad remote port: %s\n", remport);\r
-                       exit(1);\r
-               }\r
-\r
-                /* check for source ip in config file. If it's there\r
-                 * and it's not 0.0.0.0, use it; else use the\r
-                 * local ip address. (This makes sure we can use old-style\r
-                 * config files without the source ip) */\r
-               if (!srcip || !strcmp(srcip, "0.0.0.0"))\r
-                       srcip = locip;\r
-               if (strcmp(srcip,"0") && !VALID_IP(srcip))\r
-               {\r
-                       fprintf(stderr, "Bad source IP: %s\n", srcip);\r
-                       exit(1);\r
-               }\r
-\r
-               /* This may seem complicated... refer to portfw.pl for an explanation of\r
-                * the keys and their meaning in certain circumstances */\r
-                        \r
-               if (strcmp(enabled, "on") == 0)\r
-               {\r
-\r
-                       /* If key2 is a zero, then it is a portfw command, otherwise it is an\r
-                        * external access command */\r
-                       if (strcmp(key2, "0") == 0) \r
-                       {\r
-                               memset(command, 0, STRING_SIZE);\r
-                               if (strcmp(protocol, "gre") == 0)\r
-                                       snprintf(command, STRING_SIZE - 1, "/sbin/iptables -t nat -A PORTFW -p %s -d %s -j DNAT --to %s", protocol, srcip, remip);\r
-                               else \r
-                               {\r
-                                       char *ctr;\r
-                                       /* If locport contains a - we need to change it to a : */\r
-                                       if ((ctr = strchr(locport, '-')) != NULL) {*ctr = ':';}\r
-                                       /* If remport contains a : we need to change it to a - */\r
-                                       if ((ctr = strchr(remport,':')) != NULL){*ctr = '-';}\r
-                                       snprintf(command, STRING_SIZE - 1, "/sbin/iptables -t nat -A PORTFW -p %s -d %s --dport %s -j DNAT --to %s:%s", protocol, srcip, locport, remip, remport);\r
-                                       safe_system(command);\r
-                                       /* Now if remport contains a - we need to change it to a : */\r
-                                       if ((ctr = strchr(remport,'-')) != NULL){*ctr = ':';}\r
-                                       snprintf(command, STRING_SIZE - 1, "/sbin/iptables -t mangle -A PORTFWMANGLE -p %s -s %s/%s -d %s --dport %s -j MARK --set-mark 1", protocol, greenip, greenmask, srcip, locport);\r
-                                       if (strlen(bluedev))\r
-                                       {\r
-                                               safe_system(command);\r
-                                               snprintf(command, STRING_SIZE - 1, "/sbin/iptables -t mangle -A PORTFWMANGLE -p %s -s %s/%s -d %s --dport %s -j MARK --set-mark 2", protocol, blueip, bluemask, srcip, locport);\r
-                                       }\r
-                                       if (strlen(orangedev))\r
-                                       {\r
-                                               safe_system(command);\r
-                                               snprintf(command, STRING_SIZE - 1, "/sbin/iptables -t mangle -A PORTFWMANGLE -p %s -s %s/%s -d %s --dport %s -j MARK --set-mark 3", protocol, orangeip, orangemask, srcip, locport);\r
-                                       }\r
-                               }\r
-                               safe_system(command);\r
-                       }\r
-\r
-                       /* if key2 is not "0" then it's an external access rule, if key2 is "0"\r
-                        * then the portfw rule may contain external access information if origip\r
-                        * is not "0" (the only defined not 0 value seems to be 0.0.0.0 - open\r
-                        * to all; again, check portfw.pl for more details) */\r
-                       if(strcmp(key2, "0") || strcmp(origip,"0") )\r
-                       {\r
-                               memset(command, 0, STRING_SIZE);\r
-                               if (strcmp(protocol, "gre") == 0)\r
-                                       snprintf(command, STRING_SIZE - 1, "/sbin/iptables -A PORTFWACCESS -i %s -p %s -s %s -d %s -j ACCEPT", iface, protocol, origip, remip);\r
-                               else\r
-                               {\r
-                                       char *ctr;\r
-                                       /* If remport contains a - we need to change it to a : */\r
-                                       if ((ctr = strchr(remport,'-')) != NULL){*ctr = ':';}\r
-                                       snprintf(command, STRING_SIZE - 1, "/sbin/iptables -A PORTFWACCESS -i %s -p %s -s %s -d %s --dport %s -j ACCEPT", iface, protocol, origip, remip, remport);\r
-                               }\r
-                               safe_system(command);\r
-                       }\r
-               }\r
-       }\r
-\r
-       return 0;\r
-}\r
index d7fabd494122a947307dc9f82c19e313c95405cd..e54b5d3abe7b66e20e76f6cc66cd91db1fab8ac8 100644 (file)
-/* This file is part of the IPCop Firewall.\r
- *\r
- * IPCop is free software; you can redistribute it and/or modify\r
- * it under the terms of the GNU General Public License as published by\r
- * the Free Software Foundation; either version 2 of the License, or\r
- * (at your option) any later version.\r
- *\r
- * IPCop is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
- * GNU General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * along with IPCop; if not, write to the Free Software\r
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA\r
- *\r
- * Copyright (C) 2003-04-22 Robert Kerr <rkerr@go.to>\r
- *\r
- * $Id: setuid.c,v 1.2.2.1 2005/11/18 14:51:43 franck78 Exp $\r
- *\r
- */\r
-\r
-#include <stdio.h>\r
-#include <string.h>\r
-#include <errno.h>\r
-#include <unistd.h>\r
-#include <stdlib.h>\r
-#include <sys/types.h>\r
-#include <limits.h>\r
-#include <sys/time.h>\r
-#include <sys/resource.h>\r
-#include <sys/stat.h>\r
-#include <fcntl.h>\r
-#include <grp.h>\r
-#include <signal.h>\r
-#include <sys/wait.h>\r
-#include <glob.h>\r
-#include "setuid.h"\r
-\r
-#ifndef OPEN_MAX\r
-#define OPEN_MAX 256\r
-#endif\r
-\r
-/* Trusted environment for executing commands */\r
-char * trusted_env[4]={\r
-       "PATH=/usr/bin:/usr/sbin:/sbin:/bin",\r
-       "SHELL=/bin/sh",\r
-       "TERM=dumb",\r
-       NULL};\r
-\r
-/* Spawns a child process that uses /bin/sh to interpret a command.\r
- * This is much the same in use and purpose as system(), yet as it uses execve\r
- * to pass a trusted environment it's immune to attacks based upon changing\r
- * IFS, ENV, BASH_ENV and other such variables.\r
- * Note this does NOT guard against any other attacks, inparticular you MUST\r
- * validate the command you are passing. If the command is formed from user\r
- * input be sure to check this input is what you expect. Nasty things can\r
- * happen if a user can inject ; or `` into your command for example */\r
-int safe_system(char* command)\r
-{\r
-       return system_core( command, 0, 0, "safe_system" );\r
-}\r
-\r
-/* Much like safe_system but lets you specify a non-root uid and gid to run\r
- * the command as */\r
-int unpriv_system(char* command, uid_t uid, gid_t gid)\r
-{\r
-       return system_core(command, uid, gid, "unpriv_system" );\r
-}\r
-\r
-int system_core(char* command, uid_t uid, gid_t gid, char *error)\r
-{\r
-       int pid, status;\r
-\r
-       if(!command)\r
-               return 1;\r
-\r
-       switch( pid = fork() )\r
-       {\r
-               case -1:\r
-                       return -1;\r
-               case 0: /* child */\r
-               {\r
-                       char * argv[4];\r
-                       if (gid && setgid(gid)) \r
-                       {\r
-                               fprintf(stderr, "%s: ", error);\r
-                               perror("Couldn't setgid");\r
-                               exit(127);\r
-                       }\r
-                       if (uid && setuid(uid))\r
-                       {\r
-                               fprintf(stderr, "%s: ", error);\r
-                               perror("Couldn't setuid");\r
-                               exit(127);\r
-                       }\r
-                       argv[0] = "sh";\r
-                       argv[1] = "-c";\r
-                       argv[2] = command;\r
-                       argv[3] = NULL;\r
-                       execve("/bin/sh", argv, trusted_env);\r
-                       fprintf(stderr, "%s: ", error);\r
-                       perror("execve failed");\r
-                       exit(127);\r
-               }\r
-               default: /* parent */\r
-                       do {\r
-                               if( waitpid(pid, &status, 0) == -1 ) {\r
-                                       if( errno != EINTR )\r
-                                               return -1;\r
-                                       } else\r
-                                               return status;\r
-                       } while (1);\r
-       }\r
-\r
-}\r
-\r
-/* BSD style safe strcat; from the secure programming cookbook */\r
-size_t strlcat(char *dst, const char *src, size_t len) {\r
-       char       *dstptr = dst;\r
-       size_t     dstlen, tocopy = len;\r
-       const char *srcptr = src;\r
-\r
-       while (tocopy-- && *dstptr) dstptr++;\r
-       dstlen = dstptr - dst;\r
-       if (!(tocopy = len - dstlen)) return (dstlen + strlen(src));\r
-       while (*srcptr) {\r
-               if (tocopy != 1) {\r
-                       *dstptr++ = *srcptr;\r
-                       tocopy--;\r
-               }\r
-               srcptr++;\r
-       }\r
-       *dstptr = 0;\r
-\r
-       return (dstlen + (srcptr - src));\r
-}\r
-\r
-/* General routine to initialise a setuid root program, and put the\r
- * environment in a known state. Returns 1 on success, if initsetuid() returns\r
- * 0 then you should exit(1) immediately, DON'T attempt to recover from the\r
- * error */\r
-int initsetuid(void)\r
-{\r
-       int fds,i;\r
-       struct stat st;\r
-       struct rlimit rlim;\r
-\r
-       /* Prevent signal tricks by ignoring all except SIGKILL and SIGCHILD */\r
-               for( i = 0; i < NSIG; i++ ) {\r
-                       if( i != SIGKILL && i != SIGCHLD )\r
-                               signal(i, SIG_IGN);\r
-       }\r
-\r
-       /* dump all non-standard file descriptors (a full descriptor table could\r
-        * lead to DoS by preventing us opening files) */\r
-       if ((fds = getdtablesize()) == -1) fds = OPEN_MAX;\r
-       for( i = 3; i < fds; i++ ) close(i);\r
-\r
-       /* check stdin, stdout & stderr are open before going any further */\r
-       for( i = 0; i < 3; i++ )\r
-               if( fstat(i, &st) == -1 && ((errno != EBADF) || (close(i), open("/dev/null", O_RDWR, 0)) != i ))\r
-                       return 0;\r
-\r
-       /* disable core dumps in case we're processing sensitive information */\r
-       rlim.rlim_cur = rlim.rlim_max = 0;\r
-       if(setrlimit(RLIMIT_CORE, &rlim))\r
-               { perror("Couldn't disable core dumps"); return 0; }\r
-\r
-       /* drop any supplementary groups, set uid & gid to root */\r
-       if (setgroups(0, NULL)) { perror("Couldn't clear group list"); return 0; }\r
-       if (setgid(0))          { perror("Couldn't setgid(0)");        return 0; }\r
-       if (setuid(0))          { perror("Couldn't setuid(0)");        return 0; }\r
-\r
-       return 1;\r
-}\r
-\r
-/* check whether a file exists */\r
-int file_exists(const char *fname) {\r
-       struct stat st;\r
-       stat(fname, &st);\r
-       return S_ISREG(st.st_mode) ? 1 : 0;\r
-}\r
-\r
-/* check whether a file exists. fname is wildcard eg: file_exists (/tmp/foo*) */\r
-int file_exists_w(const char *fname)\r
-{\r
-       /* do a quick check first */\r
-       struct stat st;\r
-       stat(fname, &st);\r
-       if (S_ISREG(st.st_mode))\r
-               return 1;\r
-\r
-       /* check for possible wild cards in name */\r
-       glob_t globbuf;\r
-       int retval=0;\r
-       if (glob(fname, GLOB_ERR, NULL, &globbuf)==0) {\r
-               if (globbuf.gl_pathc>0) {\r
-                       retval=1;\r
-               }\r
-       }\r
-       globfree(&globbuf);\r
-       return retval;\r
-}\r
+/* This file is part of the IPCop Firewall.
+ *
+ * IPCop is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * IPCop is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with IPCop; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+ *
+ * Copyright (C) 2003-04-22 Robert Kerr <rkerr@go.to>
+ *
+ * $Id: setuid.c,v 1.2.2.1 2005/11/18 14:51:43 franck78 Exp $
+ *
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <limits.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <grp.h>
+#include <signal.h>
+#include <sys/wait.h>
+#include <glob.h>
+#include "setuid.h"
+
+#ifndef OPEN_MAX
+#define OPEN_MAX 256
+#endif
+
+/* Trusted environment for executing commands */
+char * trusted_env[4] = {
+       "PATH=/usr/bin:/usr/sbin:/sbin:/bin",
+       "SHELL=/bin/sh",
+       "TERM=dumb",
+       NULL
+};
+
+/* Spawns a child process that uses /bin/sh to interpret a command.
+ * This is much the same in use and purpose as system(), yet as it uses execve
+ * to pass a trusted environment it's immune to attacks based upon changing
+ * IFS, ENV, BASH_ENV and other such variables.
+ * Note this does NOT guard against any other attacks, inparticular you MUST
+ * validate the command you are passing. If the command is formed from user
+ * input be sure to check this input is what you expect. Nasty things can
+ * happen if a user can inject ; or `` into your command for example */
+int safe_system(char* command) {
+       return system_core(command, 0, 0, "safe_system");
+}
+
+/* Much like safe_system but lets you specify a non-root uid and gid to run
+ * the command as */
+int unpriv_system(char* command, uid_t uid, gid_t gid) {
+       return system_core(command, uid, gid, "unpriv_system");
+}
+
+int system_core(char* command, uid_t uid, gid_t gid, char *error) {
+       int pid, status;
+
+       if(!command)
+               return 1;
+
+       switch(pid = fork()) {
+               case -1:
+                       return -1;
+
+               case 0: /* child */ {
+                       char *argv[4];
+
+                       if (gid && setgid(gid)) {
+                               fprintf(stderr, "%s: ", error);
+                               perror("Couldn't setgid");
+                               exit(127);
+                       }
+
+                       if (uid && setuid(uid)) {
+                               fprintf(stderr, "%s: ", error);
+                               perror("Couldn't setuid");
+                               exit(127);
+                       }
+
+                       argv[0] = "sh";
+                       argv[1] = "-c";
+                       argv[2] = command;
+                       argv[3] = NULL;
+                       execve("/bin/sh", argv, trusted_env);
+                       fprintf(stderr, "%s: ", error);
+                       perror("execve failed");
+                       exit(127);
+               }
+
+               default: /* parent */
+                       do {
+                               if (waitpid(pid, &status, 0) == -1) {
+                                       if (errno != EINTR)
+                                               return -1;
+                                       } else {
+                                               return status;
+                                       }
+                       } while (1);
+       }
+
+}
+
+/* General routine to initialise a setuid root program, and put the
+ * environment in a known state. Returns 1 on success, if initsetuid() returns
+ * 0 then you should exit(1) immediately, DON'T attempt to recover from the
+ * error */
+int initsetuid(void) {
+       int fds, i;
+       struct stat st;
+       struct rlimit rlim;
+
+       /* Prevent signal tricks by ignoring all except SIGKILL and SIGCHILD */
+       for (i = 0; i < NSIG; i++) {
+               if (i != SIGKILL && i != SIGCHLD)
+                       signal(i, SIG_IGN);
+       }
+
+       /* dump all non-standard file descriptors (a full descriptor table could
+        * lead to DoS by preventing us opening files) */
+       if ((fds = getdtablesize()) == -1)
+               fds = OPEN_MAX;
+       for (i = 3; i < fds; i++)
+               close(i);
+
+       /* check stdin, stdout & stderr are open before going any further */
+       for (i = 0; i < 3; i++)
+               if( fstat(i, &st) == -1 && ((errno != EBADF) || (close(i), open("/dev/null", O_RDWR, 0)) != i))
+                       return 0;
+
+       /* disable core dumps in case we're processing sensitive information */
+       rlim.rlim_cur = rlim.rlim_max = 0;
+       if (setrlimit(RLIMIT_CORE, &rlim)) {
+               perror("Couldn't disable core dumps");
+               return 0;
+       }
+
+       /* drop any supplementary groups, set uid & gid to root */
+       if (setgroups(0, NULL)) {
+               perror("Couldn't clear group list");
+               return 0;
+       }
+
+       if (setgid(0)) {
+               perror("Couldn't setgid(0)");
+               return 0;
+       }
+
+       if (setuid(0)) {
+               perror("Couldn't setuid(0)");
+               return 0;
+       }
+
+       return 1;
+}
index e253a765704b0cdb0154293d59ce854faac48ee4..2e90537a6db86bd4e1f0ffb4b4a6f238f948afa5 100644 (file)
 /* As nothing in setuid.c uses STRING_SIZE specifically there's no real reason
  * to redefine it if it already is set */
 #ifndef STRING_SIZE
-#define STRING_SIZE 256
+#define STRING_SIZE 1024
 #endif
-#define LETTERS "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
-#define NUMBERS "0123456789"
-#define LETTERS_NUMBERS LETTERS NUMBERS
-#define IP_NUMBERS "./" NUMBERS
-#define PORT_NUMBERS ":-" NUMBERS
-#define VALID_FQDN LETTERS_NUMBERS ".-"
-
-
-#define VALID_IP(ip) (strlen(ip) > 6 \
-                   && strlen(ip) < 16 \
-                   && strspn(ip, NUMBERS ".") == strlen(ip))
-
-#define VALID_IP_AND_MASK(ip) (strlen(ip) > 6 \
-                            && strlen(ip) < 32 \
-                            && strspn(ip, IP_NUMBERS) == strlen(ip))
-
-#define VALID_PORT(port) (strlen(port) \
-                       && strlen(port) < 6 \
-                       && strspn(port, NUMBERS) == strlen(port))
-
-#define VALID_PORT_RANGE(port) (strlen(port) \
-                             && strlen(port) < 12 \
-                             && strspn(port, PORT_NUMBERS) == strlen(port))
-
-#define VALID_SHORT_MASK(ip) (strlen(ip) > 1 \
-                             && strlen(ip) < 3 \
-                             && strspn(ip, NUMBERS) == strlen(ip))
-
-/* Can't find any info on valid characters/length hopefully these are
- * reasonable guesses */
-#define VALID_DEVICE(dev) (strlen(dev) \
-                        && strlen(dev) < 16 \
-                        && strspn(dev, LETTERS_NUMBERS ":.") == strlen(dev))
-
-/* Again, can't find any hard and fast rules for protocol names, these
- * restrictions are based on the keywords currently listed in
- * <http://www.iana.org/assignments/protocol-numbers>
- * though currently the ipcop cgis will only pass tcp, udp or gre anyway */
-#define VALID_PROTOCOL(prot) (strlen(prot) \
-                          &&  strlen(prot) <16 \
-                          &&  strspn(prot, LETTERS_NUMBERS "-") == strlen(prot))
 
 extern char * trusted_env[4];
 
 int system_core(char* command, uid_t uid, gid_t gid, char *error);
 int safe_system(char* command);
 int unpriv_system(char* command, uid_t uid, gid_t gid);
-size_t strlcat(char *dst, const char *src, size_t len);
 int initsetuid(void);
 
-/* check whether a file exists */
-int file_exists(const char *fname);        
-int file_exists_w(const char *fname); //wildcard filename test
+/* Compatibility for the local copy of strlcat,
+ * which has been removed. */
+#define strlcat(src, dst, size) strncat(src, dst, size)
 
 #endif
diff --git a/src/misc-progs/setxtaccess.c b/src/misc-progs/setxtaccess.c
deleted file mode 100644 (file)
index 27a03e0..0000000
+++ /dev/null
@@ -1,168 +0,0 @@
-/* SmoothWall helper program - setxtaccess\r
- *\r
- * This program is distributed under the terms of the GNU General Public\r
- * Licence.  See the file COPYING for details.\r
- *\r
- * (c) Daniel Goscomb, 2001\r
- * \r
- * Modifications and improvements by Lawrence Manning.\r
- *\r
- * 10/04/01 Aslak added protocol support\r
- * \r
- * (c) Steve Bootes 2002/04/14 - Added source IP support for aliases\r
- *\r
- * 19/04/03 Robert Kerr Fixed root exploit\r
- *\r
- * $Id: setxtaccess.c,v 1.3.2.1 2005/01/04 17:21:40 eoberlander Exp $\r
- * \r
- */\r
-\r
-#include <stdio.h>\r
-#include <stdlib.h>\r
-#include <string.h>\r
-#include "setuid.h"\r
-\r
-FILE *ifacefile = NULL;\r
-FILE *fwdfile = NULL;\r
-FILE *ipfile = NULL;\r
-\r
-void exithandler(void)\r
-{\r
-       if (fwdfile)\r
-               fclose(fwdfile);\r
-}\r
-\r
-int main(void)\r
-{\r
-       char iface[STRING_SIZE] = "";\r
-       char locip[STRING_SIZE] = "";\r
-       char s[STRING_SIZE] = "";\r
-       int count;\r
-       char *protocol;\r
-       char *destip;\r
-       char *remip;\r
-       char *locport;\r
-       char *enabled;\r
-       char *information;\r
-       char *result;\r
-       char command[STRING_SIZE];\r
-\r
-       if (!(initsetuid()))\r
-               exit(1);\r
-\r
-       atexit(exithandler);\r
-\r
-       if (!(ipfile = fopen(CONFIG_ROOT "/red/local-ipaddress", "r")))\r
-       {\r
-               fprintf(stderr, "Couldn't open local ip file\n");\r
-               exit(1);\r
-       }\r
-       if (fgets(locip, STRING_SIZE, ipfile))\r
-       {\r
-               if (locip[strlen(locip) - 1] == '\n')\r
-                       locip[strlen(locip) - 1] = '\0';\r
-       }\r
-       fclose (ipfile);\r
-       if (!VALID_IP(locip))\r
-       {\r
-               fprintf(stderr, "Bad local IP: %s\n", locip);\r
-               exit(1);\r
-       }\r
-\r
-       if (!(ifacefile = fopen(CONFIG_ROOT "/red/iface", "r")))\r
-       {\r
-               fprintf(stderr, "Couldn't open iface file\n");\r
-               exit(1);\r
-       }\r
-       if (fgets(iface, STRING_SIZE, ifacefile))\r
-       {\r
-               if (iface[strlen(iface) - 1] == '\n')\r
-                       iface[strlen(iface) - 1] = '\0';\r
-       }\r
-               fclose (ifacefile);\r
-       if (!VALID_DEVICE(iface))\r
-       {\r
-               fprintf(stderr, "Bad iface: %s\n", iface);\r
-               exit(1);\r
-       }\r
\r
-       if (!(fwdfile = fopen(CONFIG_ROOT "/xtaccess/config", "r")))\r
-       {\r
-               fprintf(stderr, "Couldn't open xtaccess settings file\n");\r
-               exit(1);\r
-       }\r
-\r
-       safe_system("/sbin/iptables -F XTACCESS");\r
-\r
-       while (fgets(s, STRING_SIZE, fwdfile) != NULL)\r
-       {\r
-               if (s[strlen(s) - 1] == '\n')\r
-                       s[strlen(s) - 1] = '\0';\r
-               count = 0;\r
-               protocol = NULL;\r
-               remip = NULL;\r
-               destip = NULL;\r
-               locport = NULL;\r
-               enabled = NULL;\r
-               information = NULL;\r
-               result = strtok(s, ",");\r
-               while (result)\r
-               {\r
-                       if (count == 0)\r
-                               protocol = result;\r
-                       else if (count == 1)\r
-                               remip = result;\r
-                       else if (count == 2)\r
-                               locport = result;\r
-                       else if (count == 3)\r
-                               enabled = result;\r
-                       else if (count == 4)\r
-                               destip = result;\r
-                       else\r
-                               information = result;\r
-                       count++;\r
-                       result = strtok(NULL, ",");\r
-               }\r
-\r
-               if (!(protocol && remip && locport && enabled))\r
-                       break;\r
-               \r
-               if (!VALID_PROTOCOL(protocol))\r
-               {\r
-                       fprintf(stderr, "Bad protocol: %s\n", protocol);\r
-                       exit(1);\r
-               }\r
-               if (!VALID_IP_AND_MASK(remip))\r
-               {\r
-                       fprintf(stderr, "Bad remote IP: %s\n", remip);\r
-                       exit(1);\r
-               }\r
-               if (!VALID_PORT_RANGE(locport))\r
-               {\r
-                       fprintf(stderr, "Bad local port: %s\n", locport);\r
-                       exit(1);\r
-               }\r
-\r
-                /* check for destination ip in config file. If it's there\r
-                 * and it's not 0.0.0.0, use it; else use the current\r
-                 * local ip address. (This makes sure we can use old-style\r
-                 * config files without the destination ip) */\r
-               if (!destip || !strcmp(destip, "0.0.0.0"))\r
-                       destip = locip;\r
-               if (!VALID_IP(destip))\r
-               {\r
-                       fprintf(stderr, "Bad destination IP: %s\n", remip);\r
-                       exit(1);\r
-               }\r
-\r
-               if (strcmp(enabled, "on") == 0)\r
-               {\r
-                       memset(command, 0, STRING_SIZE);\r
-                       snprintf(command, STRING_SIZE - 1, "/sbin/iptables -A XTACCESS -i %s -p %s -s %s -d %s --dport %s -j ACCEPT",\r
-       iface, protocol, remip, destip, locport);\r
-                       safe_system(command);\r
-               }\r
-       }\r
-       \r
-       return 0;\r
-}\r
index d9dd8463fb15c32196ad92a96b456337d264026f..c6451acba3a031baaa1f2ce2856a668395a88a92 100644 (file)
 #include <fcntl.h>
 #include "setuid.h"
 
-#define BUFFER_SIZE 1024
-
-char command[BUFFER_SIZE]; 
-
 int main(int argc, char *argv[]) {
-
         if (!(initsetuid()))
-                exit(1);
+               exit(1);
 
-        if (argc < 2) {
-                fprintf(stderr, "\nNo argument given.\n\nsmartctrl <device>\n\n");
-                exit(1);
-        }
+       if (argc < 2) {
+               fprintf(stderr, "\nNo argument given.\n\nsmartctrl <device>\n\n");
+               exit(1);
+       }
 
+       char command[STRING_SIZE];
+       snprintf(command, STRING_SIZE, "/var/run/hddshutdown-%s", argv[1]);
 
-        sprintf(command, "/var/run/hddshutdown-%s", argv[1]);
-        FILE *fp = fopen(command,"r");
-       if( fp ) {
+        FILE *fp = fopen(command, "r");
+       if (fp != NULL) {
                fclose(fp);
+
                printf("\nDisk %s is in Standby. Do nothing because we won't wakeup\n",argv[1]);
-                exit(1);
+               exit(1);
        }
 
-        sprintf(command, "smartctl -iHA /dev/%s", argv[1]);
-        safe_system(command);
+       snprintf(command, STRING_SIZE, "smartctl -iHA /dev/%s", argv[1]);
+       safe_system(command);
 
         return 0;
 }
index 993cc938d98357b7a6e3fc72e9db9fec974b9c63..8111c84c56ac696084ff7af046e8db866c16fa1c 100644 (file)
 #include <fcntl.h>
 #include <signal.h>
 #include <errno.h>
+
 #include "libsmooth.h"
 #include "setuid.h"
+#include "netutil.h"
 
 #define ERR_ANY 1
 #define ERR_SETTINGS 2    /* error in settings file */
index 12b954baa3f8509ae088fa7990694fd2f2f6dc63..e3a1107c2bff927bb2aa6e6b4d49bcb0e51ff8db 100644 (file)
@@ -5,8 +5,6 @@
  *
  * (c) Alan Hourihane, 2003
  *
- * $Id: wirelessctrl.c,v 1.2.2.5 2005/07/11 10:56:47 franck78 Exp $
- *
  */
 
 #include "libsmooth.h"
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <signal.h>
-#include "setuid.h"
 #include <errno.h>
 
+#include "setuid.h"
+#include "netutil.h"
+
 FILE *fd = NULL;
 char blue_dev[STRING_SIZE] = "";
 char command[STRING_SIZE];
 
-void exithandler(void)
-{
-                               /* added comment mark to the drop rules to be able to collect the bytes by the collectd */
-                               if(strlen(blue_dev))
-                               {
-                               snprintf(command, STRING_SIZE-1, "/sbin/iptables -A WIRELESSINPUT -i %s -j DROP -m comment --comment 'DROP_Wirelessinput'", blue_dev);
-                               safe_system(command);
-                               snprintf(command, STRING_SIZE-1, "/sbin/iptables -A WIRELESSFORWARD -i %s -j DROP -m comment --comment 'DROP_Wirelessforward'", blue_dev);
-                               safe_system(command);
-                               }
-
-                               if (fd)
-                                                       fclose(fd);
+void exithandler(void) {
+       /* added comment mark to the drop rules to be able to collect the bytes by the collectd */
+       if (strlen(blue_dev) > 0) {
+               snprintf(command, STRING_SIZE-1, "/sbin/iptables -A WIRELESSINPUT -i %s -j DROP -m comment --comment 'DROP_Wirelessinput'", blue_dev);
+               safe_system(command);
+               snprintf(command, STRING_SIZE-1, "/sbin/iptables -A WIRELESSFORWARD -i %s -j DROP -m comment --comment 'DROP_Wirelessforward'", blue_dev);
+               safe_system(command);
+       }
+
+       if (fd)
+               fclose(fd);
 }
 
-int main(void)
-{
-                               char green_dev[STRING_SIZE] = "";
-                               char buffer[STRING_SIZE];
-                               char *index, *ipaddress, *macaddress, *enabled;
-                               struct keyvalue *kv = NULL;
-
-                               if (!(initsetuid()))
-                                                       exit(1);
-
-                               /* flush wireless iptables */
-                               safe_system("/sbin/iptables -F WIRELESSINPUT > /dev/null 2> /dev/null");
-                               safe_system("/sbin/iptables -F WIRELESSFORWARD > /dev/null 2> /dev/null");
-
-                               memset(buffer, 0, STRING_SIZE);
-
-                               /* Init the keyvalue structure */
-                               kv=initkeyvalues();
-
-                               /* Read in the current values */
-                               if (!readkeyvalues(kv, CONFIG_ROOT "/ethernet/settings"))
-                               {
-                                                       fprintf(stderr, "Cannot read ethernet settings\n");
-                                                       exit(1);
-                               }
-
-                               /* Read in the firewall values */
-                               if (!readkeyvalues(kv, CONFIG_ROOT "/optionsfw/settings"))
-                               {
-                                                       fprintf(stderr, "Cannot read optionsfw settings\n");
-                                                       exit(1);
-                               }
-
-                               /* Get the GREEN interface details */
-                               if(!findkey(kv, "GREEN_DEV", green_dev))
-                               {
-                                                       fprintf(stderr, "Cannot read GREEN_DEV\n");
-                                                       exit(1);
-                               }
-                               if (!VALID_DEVICE(green_dev))
-                               {
-                                                       fprintf(stderr, "Bad GREEN_DEV: %s\n", green_dev);
-                                                       exit(1);
-                               }
-                               /* Get the BLUE interface details */
-                               if(!findkey(kv, "BLUE_DEV", blue_dev))
-                               {
-                                                       fprintf(stderr, "Cannot read BLUE_DEV\n");
-                                                       exit(1);
-                               }
-                               if (strlen(blue_dev) && !VALID_DEVICE(blue_dev))
-                               {
-                                                       fprintf(stderr, "Bad BLUE_DEV: %s\n", blue_dev);
-                                                       exit(1);
-                               }
-                               if(! strlen(blue_dev) > 0)
-                               {
-                                                       fprintf(stderr, "No BLUE interface\n");
-                                                       exit(0);
-                               }
-
-                               if ((fd = fopen(CONFIG_ROOT "/wireless/nodrop", "r")))
-                                       return 0;
-
-                               /* register exit handler to ensure the block rule is always present */
-                               atexit(exithandler);
-
-                               if (!(fd = fopen(CONFIG_ROOT "/wireless/config", "r")))
-                               {
-                                                       exit(0);
-                               }
-
-                               /* restrict blue access tp the proxy port */
-                               if(findkey(kv, "DROPPROXY", buffer) && strcmp(buffer,"off")){
-                                                       /* Read the proxy values */
-                                                       if (!readkeyvalues(kv, CONFIG_ROOT "/proxy/settings") || !(findkey(kv, "PROXY_PORT", buffer)))
-                                                       {
-                                                                       fprintf(stderr, "Cannot read proxy settings\n");
-                                                                       exit(1);
-                                                       }
-                                                       snprintf(command, STRING_SIZE-1, "/sbin/iptables -A WIRELESSFORWARD -i %s -p tcp  ! --dport %s -j DROP -m comment --comment 'DROP_Wirelessforward'", blue_dev, buffer);
-                                                       safe_system(command);
-                                                       snprintf(command, STRING_SIZE-1, "/sbin/iptables -A WIRELESSINPUT -i %s -p tcp  ! --dport %s -j DROP -m comment --comment 'DROP_Wirelessinput'", blue_dev, buffer);
-                                                       safe_system(command);
-                               }
-
-                               /* not allow blue to acces a samba server running on local fire*/
-                               if(findkey(kv, "DROPSAMBA", buffer) && strcmp(buffer,"off")){
-                                                       snprintf(command, STRING_SIZE-1, "/sbin/iptables -A WIRELESSFORWARD -i %s -p tcp -m multiport --ports 135,137,138,139,445,1025 -j DROP -m comment --comment 'DROP_Wirelessforward'", blue_dev);
-                                                       safe_system(command);
-                                                       snprintf(command, STRING_SIZE-1, "/sbin/iptables -A WIRELESSINPUT -i %s -p tcp -m multiport --ports 135,137,138,139,445,1025 -j DROP -m comment --comment 'DROP_Wirelessinput'", blue_dev);
-                                                       safe_system(command);
-                                                       snprintf(command, STRING_SIZE-1, "/sbin/iptables -A WIRELESSFORWARD -i %s -p udp -m multiport --ports 135,137,138,139,445,1025 -j DROP -m comment --comment 'DROP_Wirelessforward'", blue_dev);
-                                                       safe_system(command);
-                                                       snprintf(command, STRING_SIZE-1, "/sbin/iptables -A WIRELESSINPUT -i %s -p udp -m multiport --ports 135,137,138,139,445,1025 -j DROP -m comment --comment 'DROP_Wirelessinput'", blue_dev);
-                                                       safe_system(command);
-                               }
-
-                               while (fgets(buffer, STRING_SIZE, fd))
-                               {
-                                                       buffer[strlen(buffer) - 1] = 0;
-
-                                                       index = strtok(buffer, ",");
-                                                       ipaddress = strtok(NULL, ",");
-                                                       macaddress = strtok(NULL, ",");
-                                                       enabled = strtok(NULL, ",");
-
-                                                       if (!strncmp(enabled, "on", 2)) {
-
-                                                       /* both specified, added security */
-                                                       if ((strlen(macaddress) == 17) &&
-                                                                       (VALID_IP_AND_MASK(ipaddress))) {
-                                                                       snprintf(command, STRING_SIZE-1, "/sbin/iptables -A WIRELESSINPUT -m mac --mac-source %s -s %s -i %s -j ACCEPT", macaddress, ipaddress, blue_dev);
-                                                                       safe_system(command);
-                                                                       snprintf(command, STRING_SIZE-1, "/sbin/iptables -A WIRELESSFORWARD -m mac --mac-source %s -s %s -i %s ! -o %s -j ACCEPT", macaddress, ipaddress, blue_dev, green_dev);
-                                                                       safe_system(command);
-                                                                       snprintf(command, STRING_SIZE-1, "/sbin/iptables -A WIRELESSFORWARD -m mac --mac-source %s -s %s -i %s -j DMZHOLES", macaddress, ipaddress, blue_dev);
-                                                                       safe_system(command);
-                                                       } else {
-
-                                                                       /* correctly formed mac address is 17 chars */
-                                                                       if (strlen(macaddress) == 17) {
-                                                                                                       snprintf(command, STRING_SIZE-1, "/sbin/iptables -A WIRELESSINPUT -m mac --mac-source %s -i %s -j ACCEPT", macaddress, blue_dev);
-                                                                                                       safe_system(command);
-                                                                                                       snprintf(command, STRING_SIZE-1, "/sbin/iptables -A WIRELESSFORWARD -m mac --mac-source %s -i %s ! -o %s -j ACCEPT", macaddress, blue_dev, green_dev);
-                                                                                                       safe_system(command);
-                                                                                                       snprintf(command, STRING_SIZE-1, "/sbin/iptables -A WIRELESSFORWARD -m mac --mac-source %s -i %s -j DMZHOLES", macaddress, blue_dev);
-                                                                                                       safe_system(command);
-                                                                       }
-
-                                                                       if (VALID_IP_AND_MASK(ipaddress)) {
-                                                                                                       snprintf(command, STRING_SIZE-1, "/sbin/iptables -A WIRELESSINPUT -s %s -i %s -j ACCEPT", ipaddress, blue_dev);
-                                                                                                       safe_system(command);
-                                                                                                       snprintf(command, STRING_SIZE-1, "/sbin/iptables -A WIRELESSFORWARD -s %s -i %s ! -o %s -j ACCEPT", ipaddress, blue_dev, green_dev);
-                                                                                                       safe_system(command);
-                                                                                                       snprintf(command, STRING_SIZE-1, "/sbin/iptables -A WIRELESSFORWARD -s %s -i %s -j DMZHOLES", ipaddress, blue_dev);
-                                                                                                       safe_system(command);
-                                                                       }
-                                                       }
-                                                       }
+int main(void) {
+       char green_dev[STRING_SIZE] = "";
+       char buffer[STRING_SIZE];
+       char *index, *ipaddress, *macaddress, *enabled;
+       struct keyvalue *kv = NULL;
+
+       if (!(initsetuid()))
+               exit(1);
+
+       /* flush wireless iptables */
+       safe_system("/sbin/iptables -F WIRELESSINPUT > /dev/null 2> /dev/null");
+       safe_system("/sbin/iptables -F WIRELESSFORWARD > /dev/null 2> /dev/null");
+
+       memset(buffer, 0, STRING_SIZE);
+
+       /* Init the keyvalue structure */
+       kv=initkeyvalues();
+
+       /* Read in the current values */
+       if (!readkeyvalues(kv, CONFIG_ROOT "/ethernet/settings")) {
+               fprintf(stderr, "Cannot read ethernet settings\n");
+               exit(1);
+       }
+
+       /* Read in the firewall values */
+       if (!readkeyvalues(kv, CONFIG_ROOT "/optionsfw/settings")) {
+               fprintf(stderr, "Cannot read optionsfw settings\n");
+               exit(1);
+       }
+
+       /* Get the GREEN interface details */
+       if (findkey(kv, "GREEN_DEV", green_dev) > 0) {
+               if (!VALID_DEVICE(green_dev)) {
+                       fprintf(stderr, "Bad GREEN_DEV: %s\n", green_dev);
+                       exit(1);
+               }
+       }
+
+       /* Get the BLUE interface details */
+       if (findkey(kv, "BLUE_DEV", blue_dev) > 0) {
+               if ((strlen(blue_dev) > 0) && !VALID_DEVICE(blue_dev)) {
+                       fprintf(stderr, "Bad BLUE_DEV: %s\n", blue_dev);
+                       exit(1);
+               }
+       }
+
+       if (strlen(blue_dev) == 0) {
+               exit(0);
+       }
+
+       if ((fd = fopen(CONFIG_ROOT "/wireless/nodrop", "r")))
+               return 0;
+
+       /* register exit handler to ensure the block rule is always present */
+       atexit(exithandler);
+
+       if (!(fd = fopen(CONFIG_ROOT "/wireless/config", "r"))) {
+               exit(0);
+       }
+
+       /* restrict blue access tp the proxy port */
+       if (findkey(kv, "DROPPROXY", buffer) && strcmp(buffer, "on") == 0) {
+               /* Read the proxy values */
+               if (!readkeyvalues(kv, CONFIG_ROOT "/proxy/settings") || !(findkey(kv, "PROXY_PORT", buffer))) {
+                       fprintf(stderr, "Cannot read proxy settings\n");
+                       exit(1);
+               }
+
+               snprintf(command, STRING_SIZE-1, "/sbin/iptables -A WIRELESSFORWARD -i %s -p tcp  ! --dport %s -j DROP -m comment --comment 'DROP_Wirelessforward'", blue_dev, buffer);
+               safe_system(command);
+               snprintf(command, STRING_SIZE-1, "/sbin/iptables -A WIRELESSINPUT -i %s -p tcp  ! --dport %s -j DROP -m comment --comment 'DROP_Wirelessinput'", blue_dev, buffer);
+               safe_system(command);
+       }
+
+       /* not allow blue to acces a samba server running on local fire*/
+       if (findkey(kv, "DROPSAMBA", buffer) && strcmp(buffer, "on") == 0) {
+               snprintf(command, STRING_SIZE-1, "/sbin/iptables -A WIRELESSFORWARD -i %s -p tcp -m multiport --ports 135,137,138,139,445,1025 -j DROP -m comment --comment 'DROP_Wirelessforward'", blue_dev);
+               safe_system(command);
+               snprintf(command, STRING_SIZE-1, "/sbin/iptables -A WIRELESSINPUT -i %s -p tcp -m multiport --ports 135,137,138,139,445,1025 -j DROP -m comment --comment 'DROP_Wirelessinput'", blue_dev);
+               safe_system(command);
+               snprintf(command, STRING_SIZE-1, "/sbin/iptables -A WIRELESSFORWARD -i %s -p udp -m multiport --ports 135,137,138,139,445,1025 -j DROP -m comment --comment 'DROP_Wirelessforward'", blue_dev);
+               safe_system(command);
+               snprintf(command, STRING_SIZE-1, "/sbin/iptables -A WIRELESSINPUT -i %s -p udp -m multiport --ports 135,137,138,139,445,1025 -j DROP -m comment --comment 'DROP_Wirelessinput'", blue_dev);
+               safe_system(command);
+       }
+
+       while (fgets(buffer, STRING_SIZE, fd)) {
+               buffer[strlen(buffer) - 1] = 0;
+
+               index = strtok(buffer, ",");
+               ipaddress = strtok(NULL, ",");
+               macaddress = strtok(NULL, ",");
+               enabled = strtok(NULL, ",");
+
+               if (strcmp(enabled, "on") == 0) {
+                       /* both specified, added security */
+                       if ((strlen(macaddress) == 17) && (VALID_IP_AND_MASK(ipaddress))) {
+                               snprintf(command, STRING_SIZE-1, "/sbin/iptables -A WIRELESSINPUT -m mac --mac-source %s -s %s -i %s -j ACCEPT", macaddress, ipaddress, blue_dev);
+                               safe_system(command);
+                               snprintf(command, STRING_SIZE-1, "/sbin/iptables -A WIRELESSFORWARD -m mac --mac-source %s -s %s -i %s -j RETURN", macaddress, ipaddress, blue_dev);
+                               safe_system(command);
+                       } else {
+                               /* correctly formed mac address is 17 chars */
+                               if (strlen(macaddress) == 17) {
+                                       snprintf(command, STRING_SIZE-1, "/sbin/iptables -A WIRELESSINPUT -m mac --mac-source %s -i %s -j ACCEPT", macaddress, blue_dev);
+                                       safe_system(command);
+                                       snprintf(command, STRING_SIZE-1, "/sbin/iptables -A WIRELESSFORWARD -m mac --mac-source %s -i %s -j RETURN", macaddress, blue_dev);
+                                       safe_system(command);
                                }
 
-                               /* with this rule you can disable the logging of the dropped wireless input packets*/
-                               if(!findkey(kv, "DROPWIRELESSINPUT", buffer) || strcmp(buffer,"off")){
-                                                       snprintf(command, STRING_SIZE-1, "/sbin/iptables -A WIRELESSINPUT -i %s -j LOG --log-prefix 'DROP_Wirelessinput'", blue_dev);
-                                                       safe_system(command);
+                               if (VALID_IP_AND_MASK(ipaddress)) {
+                                       snprintf(command, STRING_SIZE-1, "/sbin/iptables -A WIRELESSINPUT -s %s -i %s -j ACCEPT", ipaddress, blue_dev);
+                                       safe_system(command);
+                                       snprintf(command, STRING_SIZE-1, "/sbin/iptables -A WIRELESSFORWARD -s %s -i %s -j RETURN", ipaddress, blue_dev);
+                                       safe_system(command);
                                }
-                               /* with this rule you can disable the logging of the dropped wireless forward packets*/
-                               if(!findkey(kv, "DROPWIRELESSFORWARD", buffer) || strcmp(buffer,"off")){
-                                                       snprintf(command, STRING_SIZE-1, "/sbin/iptables -A WIRELESSFORWARD -i %s -j LOG --log-prefix 'DROP_Wirelessforward'", blue_dev);
-                                                       safe_system(command);
-                               }
-
-                               return 0;
+                       }
+               }
+       }
+
+       /* with this rule you can disable the logging of the dropped wireless input packets*/
+       if (findkey(kv, "DROPWIRELESSINPUT", buffer) && strcmp(buffer, "on") == 0) {
+               snprintf(command, STRING_SIZE-1, "/sbin/iptables -A WIRELESSINPUT -i %s -j LOG --log-prefix 'DROP_Wirelessinput'", blue_dev);
+               safe_system(command);
+       }
+
+       /* with this rule you can disable the logging of the dropped wireless forward packets*/
+       if (findkey(kv, "DROPWIRELESSFORWARD", buffer) && strcmp(buffer, "on") == 0) {
+               snprintf(command, STRING_SIZE-1, "/sbin/iptables -A WIRELESSFORWARD -i %s -j LOG --log-prefix 'DROP_Wirelessforward'", blue_dev);
+               safe_system(command);
+       }
+
+       return 0;
 }
diff --git a/src/paks/linux-xen/install.sh b/src/paks/linux-xen/install.sh
deleted file mode 100644 (file)
index f3472dd..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-#!/bin/bash
-############################################################################
-#                                                                          #
-# This file is part of the IPFire Firewall.                                #
-#                                                                          #
-# IPFire is free software; you can redistribute it and/or modify           #
-# it under the terms of the GNU General Public License as published by     #
-# the Free Software Foundation; either version 2 of the License, or        #
-# (at your option) any later version.                                      #
-#                                                                          #
-# IPFire is distributed in the hope that it will be useful,                #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of           #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            #
-# GNU General Public License for more details.                             #
-#                                                                          #
-# You should have received a copy of the GNU General Public License        #
-# along with IPFire; if not, write to the Free Software                    #
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA #
-#                                                                          #
-# Copyright (C) 2010 IPFire-Team <info@ipfire.org>.                        #
-#                                                                          #
-############################################################################
-#
-. /opt/pakfire/lib/functions.sh
-extract_files
-#
-KVER=2.6.32.61
-ROOT=`mount | grep " / " | cut -d" " -f1`
-ROOTUUID=`blkid -c /dev/null -sUUID $ROOT | cut -d'"' -f2`
-if [ ! -z $ROOTUUID ]; then
-       ROOT="UUID=$ROOTUUID"
-fi
-
-MOUNT=`grep "kernel" /boot/grub/grub.conf | tail -n 1`
-# Nur den letzten Parameter verwenden
-echo $MOUNT > /dev/null
-MOUNT=$_
-if [ ! $MOUNT == "rw" ]; then
-       MOUNT="ro"
-fi
-
-ENTRY=`grep "savedefault" /boot/grub/grub.conf | tail -n 1`
-# Nur den letzten Parameter verwenden
-echo $ENTRY > /dev/null
-let ENTRY=$_+1
-#
-# backup grub.conf
-#
-cp /boot/grub/grub.conf /boot/grub/grub-backup-$KVER-xen.conf
-#
-# Add new Entry to grub.conf
-#
-echo "" >> /boot/grub/grub.conf
-echo "title IPFire (legacy XEN-Kernel $KVER)" >> /boot/grub/grub.conf
-echo "  kernel /vmlinuz-$KVER-ipfire-xen root=$ROOT panic=10 console=xvc0 $MOUNT" >> /boot/grub/grub.conf
-echo "  initrd /ipfirerd-$KVER-xen.img" >> /boot/grub/grub.conf
-echo "# savedefault $ENTRY" >> /boot/grub/grub.conf
-#
-# Test if we running already on xen
-#
-uname -r | grep "ipfire-xen";
-if [ ${?} = 0 ]; then
-       #Xen Kernel is active
-       #Set grub default entry to this kernel
-       sed -i -e "s|^default .*|default $ENTRY|g" /boot/grub/grub.conf
-       #Remove ramdisk of normal kernel (not enough space)
-       rm -f /boot/ipfirerd-$KVER.img
-else
-       #Normal Kernel
-       #pygrub crash with "default saved"
-       sed -i -e "s|^default saved|#default saved|g" /boot/grub/grub.conf
-fi
-#
-# Made initramdisk
-#
-/sbin/dracut --force --verbose /boot/ipfirerd-$KVER-xen.img $KVER-ipfire-xen
-#
-# Create new module depency
-#
-depmod -a $KVER-ipfire-xen
diff --git a/src/paks/linux-xen/uninstall.sh b/src/paks/linux-xen/uninstall.sh
deleted file mode 100644 (file)
index fe23165..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/bash
-############################################################################
-#                                                                          #
-# This file is part of the IPFire Firewall.                                #
-#                                                                          #
-# IPFire is free software; you can redistribute it and/or modify           #
-# it under the terms of the GNU General Public License as published by     #
-# the Free Software Foundation; either version 2 of the License, or        #
-# (at your option) any later version.                                      #
-#                                                                          #
-# IPFire is distributed in the hope that it will be useful,                #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of           #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            #
-# GNU General Public License for more details.                             #
-#                                                                          #
-# You should have received a copy of the GNU General Public License        #
-# along with IPFire; if not, write to the Free Software                    #
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA #
-#                                                                          #
-# Copyright (C) 2010 IPFire-Team <info@ipfire.org>.                        #
-#                                                                          #
-############################################################################
-#
-. /opt/pakfire/lib/functions.sh
-remove_files
-mv -f /boot/grub/grub-backup-2.6.32.*-xen.conf /boot/grub/grub.conf
diff --git a/src/patches/binutils-2.22-pt-pax-flags-20111121.patch b/src/patches/binutils-2.22-pt-pax-flags-20111121.patch
new file mode 100644 (file)
index 0000000..3ba1a87
--- /dev/null
@@ -0,0 +1,1859 @@
+--- binutils-2.22/bfd/elf-bfd.h
++++ binutils-2.22/bfd/elf-bfd.h
+@@ -1577,6 +1577,9 @@ struct elf_obj_tdata
+   /* Segment flags for the PT_GNU_STACK segment.  */
+   unsigned int stack_flags;
++  /* Segment flags for the PT_PAX_FLAGS segment.  */
++  unsigned int pax_flags;
++
+   /* Symbol version definitions in external objects.  */
+   Elf_Internal_Verdef *verdef;
+--- binutils-2.22/bfd/elf.c
++++ binutils-2.22/bfd/elf.c
+@@ -1158,6 +1158,7 @@ get_segment_type (unsigned int p_type)
+     case PT_GNU_EH_FRAME: pt = "EH_FRAME"; break;
+     case PT_GNU_STACK: pt = "STACK"; break;
+     case PT_GNU_RELRO: pt = "RELRO"; break;
++    case PT_PAX_FLAGS: pt = "PAX_FLAGS"; break;
+     default: pt = NULL; break;
+     }
+   return pt;
+@@ -2477,6 +2478,9 @@ bfd_section_from_phdr (bfd *abfd, Elf_Internal_Phdr *hdr, int hdr_index)
+     case PT_GNU_RELRO:
+       return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "relro");
++    case PT_PAX_FLAGS:
++      return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "pax_flags");
++
+     default:
+       /* Check for any processor-specific program segment types.  */
+       bed = get_elf_backend_data (abfd);
+@@ -3551,6 +3555,11 @@ get_program_header_size (bfd *abfd, struct bfd_link_info *info)
+       ++segs;
+     }
++    {
++      /* We need a PT_PAX_FLAGS segment.  */
++      ++segs;
++    }
++
+   for (s = abfd->sections; s != NULL; s = s->next)
+     {
+       if ((s->flags & SEC_LOAD) != 0
+@@ -4153,6 +4162,20 @@ _bfd_elf_map_sections_to_segments (bfd *abfd, struct bfd_link_info *info)
+           }
+       }
++    {
++      amt = sizeof (struct elf_segment_map);
++      m = bfd_zalloc (abfd, amt);
++      if (m == NULL)
++      goto error_return;
++      m->next = NULL;
++      m->p_type = PT_PAX_FLAGS;
++      m->p_flags = elf_tdata (abfd)->pax_flags;
++      m->p_flags_valid = 1;
++
++      *pm = m;
++      pm = &m->next;
++    }
++
+       free (sections);
+       elf_tdata (abfd)->segment_map = mfirst;
+     }
+@@ -5417,7 +5440,8 @@ rewrite_elf_program_header (bfd *ibfd, bfd *obfd)
+        6. PT_TLS segment includes only SHF_TLS sections.
+        7. SHF_TLS sections are only in PT_TLS or PT_LOAD segments.
+        8. PT_DYNAMIC should not contain empty sections at the beginning
+-        (with the possible exception of .dynamic).  */
++        (with the possible exception of .dynamic).
++       9. PT_PAX_FLAGS segments do not include any sections.  */
+ #define IS_SECTION_IN_INPUT_SEGMENT(section, segment, bed)            \
+   ((((segment->p_paddr                                                        \
+       ? IS_CONTAINED_BY_LMA (section, segment, segment->p_paddr)      \
+@@ -5425,6 +5449,7 @@ rewrite_elf_program_header (bfd *ibfd, bfd *obfd)
+      && (section->flags & SEC_ALLOC) != 0)                            \
+     || IS_NOTE (segment, section))                                    \
+    && segment->p_type != PT_GNU_STACK                                 \
++   && segment->p_type != PT_PAX_FLAGS                                 \
+    && (segment->p_type != PT_TLS                                      \
+        || (section->flags & SEC_THREAD_LOCAL))                                \
+    && (segment->p_type == PT_LOAD                                     \
+--- binutils-2.22/bfd/elflink.c
++++ binutils-2.22/bfd/elflink.c
+@@ -5545,16 +5545,30 @@ bfd_elf_size_dynamic_sections (bfd *output_bfd,
+     return TRUE;
+   bed = get_elf_backend_data (output_bfd);
++
++  elf_tdata (output_bfd)->pax_flags = PF_NORANDEXEC;
++  if (info->execheap)
++    elf_tdata (output_bfd)->pax_flags |= PF_NOMPROTECT;
++  else if (info->noexecheap)
++    elf_tdata (output_bfd)->pax_flags |= PF_MPROTECT;
++
+   if (info->execstack)
+-    elf_tdata (output_bfd)->stack_flags = PF_R | PF_W | PF_X;
++    {
++      elf_tdata (output_bfd)->stack_flags = PF_R | PF_W | PF_X;
++      elf_tdata (output_bfd)->pax_flags |= PF_EMUTRAMP;
++    }
+   else if (info->noexecstack)
+-    elf_tdata (output_bfd)->stack_flags = PF_R | PF_W;
++    {
++      elf_tdata (output_bfd)->stack_flags = PF_R | PF_W;
++      elf_tdata (output_bfd)->pax_flags |= PF_NOEMUTRAMP;
++    }
+   else
+     {
+       bfd *inputobj;
+       asection *notesec = NULL;
+       int exec = 0;
++      elf_tdata (output_bfd)->pax_flags |= PF_NOEMUTRAMP;
+       for (inputobj = info->input_bfds;
+          inputobj;
+          inputobj = inputobj->link_next)
+@@ -5567,7 +5581,11 @@ bfd_elf_size_dynamic_sections (bfd *output_bfd,
+         if (s)
+           {
+             if (s->flags & SEC_CODE)
+-              exec = PF_X;
++              {
++                elf_tdata (output_bfd)->pax_flags &= ~PF_NOEMUTRAMP;
++                elf_tdata (output_bfd)->pax_flags |= PF_EMUTRAMP;
++                exec = PF_X;
++              }
+             notesec = s;
+           }
+         else if (bed->default_execstack)
+--- binutils-2.22/binutils/readelf.c
++++ binutils-2.22/binutils/readelf.c
+@@ -2740,6 +2740,7 @@ get_segment_type (unsigned long p_type)
+                       return "GNU_EH_FRAME";
+     case PT_GNU_STACK:        return "GNU_STACK";
+     case PT_GNU_RELRO:  return "GNU_RELRO";
++    case PT_PAX_FLAGS:  return "PAX_FLAGS";
+     default:
+       if ((p_type >= PT_LOPROC) && (p_type <= PT_HIPROC))
+--- binutils-2.22/include/bfdlink.h
++++ binutils-2.22/include/bfdlink.h
+@@ -322,6 +322,14 @@ struct bfd_link_info
+   /* TRUE if PT_GNU_RELRO segment should be created.  */
+   unsigned int relro: 1;
++  /* TRUE if PT_PAX_FLAGS segment should be created with PF_NOMPROTECT
++     flags.  */
++  unsigned int execheap: 1;
++
++  /* TRUE if PT_PAX_FLAGS segment should be created with PF_MPROTECT
++     flags.  */
++  unsigned int noexecheap: 1;
++
+   /* TRUE if .eh_frame_hdr section and PT_GNU_EH_FRAME ELF segment
+      should be created.  */
+   unsigned int eh_frame_hdr: 1;
+--- binutils-2.22/include/elf/common.h
++++ binutils-2.22/include/elf/common.h
+@@ -429,6 +429,7 @@
+ #define PT_SUNW_EH_FRAME PT_GNU_EH_FRAME      /* Solaris uses the same value */
+ #define PT_GNU_STACK  (PT_LOOS + 0x474e551) /* Stack flags */
+ #define PT_GNU_RELRO  (PT_LOOS + 0x474e552) /* Read-only after relocation */
++#define PT_PAX_FLAGS  (PT_LOOS + 0x5041580) /* PaX flags */
+ /* Program segment permissions, in program header p_flags field.  */
+@@ -439,6 +440,21 @@
+ #define PF_MASKOS     0x0FF00000      /* New value, Oct 4, 1999 Draft */
+ #define PF_MASKPROC   0xF0000000      /* Processor-specific reserved bits */
++/* Flags to control PaX behavior.  */
++
++#define PF_PAGEEXEC   (1 << 4)        /* Enable  PAGEEXEC */
++#define PF_NOPAGEEXEC (1 << 5)        /* Disable PAGEEXEC */
++#define PF_SEGMEXEC   (1 << 6)        /* Enable  SEGMEXEC */
++#define PF_NOSEGMEXEC (1 << 7)        /* Disable SEGMEXEC */
++#define PF_MPROTECT   (1 << 8)        /* Enable  MPROTECT */
++#define PF_NOMPROTECT (1 << 9)        /* Disable MPROTECT */
++#define PF_RANDEXEC   (1 << 10)       /* Enable  RANDEXEC */
++#define PF_NORANDEXEC (1 << 11)       /* Disable RANDEXEC */
++#define PF_EMUTRAMP   (1 << 12)       /* Enable  EMUTRAMP */
++#define PF_NOEMUTRAMP (1 << 13)       /* Disable EMUTRAMP */
++#define PF_RANDMMAP   (1 << 14)       /* Enable  RANDMMAP */
++#define PF_NORANDMMAP (1 << 15)       /* Disable RANDMMAP */
++
+ /* Values for section header, sh_type field.  */
+ #define SHT_NULL      0               /* Section header table entry unused */
+--- binutils-2.22/ld/emultempl/elf32.em
++++ binutils-2.22/ld/emultempl/elf32.em
+@@ -2285,6 +2285,16 @@ fragment <<EOF
+         link_info.noexecstack = TRUE;
+         link_info.execstack = FALSE;
+       }
++      else if (strcmp (optarg, "execheap") == 0)
++      {
++        link_info.execheap = TRUE;
++        link_info.noexecheap = FALSE;
++      }
++      else if (strcmp (optarg, "noexecheap") == 0)
++      {
++        link_info.noexecheap = TRUE;
++        link_info.execheap = FALSE;
++      }
+ EOF
+ if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
+ fragment <<EOF
+@@ -2368,6 +2378,8 @@ fragment <<EOF
+   -z defs                     Report unresolved symbols in object files.\n"));
+   fprintf (file, _("\
+   -z execstack                Mark executable as requiring executable stack\n"));
++  fprintf (file, _("\
++  -z execheap                 Mark executable as requiring executable heap\n"));
+ EOF
+ if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
+@@ -2391,6 +2403,8 @@ fragment <<EOF
+ fragment <<EOF
+   fprintf (file, _("\
+   -z noexecstack              Mark executable as not requiring executable stack\n"));
++  fprintf (file, _("\
++  -z noexecheap               Mark executable as not requiring executable heap\n"));
+ EOF
+ if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
+ fragment <<EOF
+--- binutils-2.22/ld/ldgram.y
++++ binutils-2.22/ld/ldgram.y
+@@ -1119,6 +1119,8 @@ phdr_type:
+                           $$ = exp_intop (0x6474e550);
+                         else if (strcmp (s, "PT_GNU_STACK") == 0)
+                           $$ = exp_intop (0x6474e551);
++                        else if (strcmp (s, "PT_PAX_FLAGS") == 0)
++                          $$ = exp_intop (0x65041580);
+                         else
+                           {
+                             einfo (_("\
+--- binutils-2.22/ld/testsuite/ld-alpha/tlsbin.rd
++++ binutils-2.22/ld/testsuite/ld-alpha/tlsbin.rd
+@@ -35,13 +35,14 @@ There are [0-9]+ program headers, starting at offset [0-9]+
+ Program Headers:
+   Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align
+-  PHDR +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+150 R E 0x8
++  PHDR +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+188 R E 0x8
+   INTERP +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ R +0x1
+ .*Requesting program interpreter.*
+   LOAD +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ R E 0x10000
+   LOAD +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ RWE 0x10000
+   DYNAMIC +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ RW +0x8
+   TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ R +0x4
++ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+ #...
+ Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 3 entries:
+--- binutils-2.22/ld/testsuite/ld-alpha/tlsbinr.rd
++++ binutils-2.22/ld/testsuite/ld-alpha/tlsbinr.rd
+@@ -42,6 +42,7 @@ Program Headers:
+  +LOAD +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ RWE 0x10000
+  +DYNAMIC +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ RW +0x8
+  +TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ R +0x4
++ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+ #...
+ Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 2 entries:
+--- binutils-2.22/ld/testsuite/ld-alpha/tlspic.rd
++++ binutils-2.22/ld/testsuite/ld-alpha/tlspic.rd
+@@ -38,6 +38,7 @@ Program Headers:
+  +LOAD +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ RWE 0x10000
+  +DYNAMIC +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ RW +0x8
+  +TLS +0x0+10e0 0x0+110e0 0x0+110e0 0x0+60 0x0+80 R +0x4
++ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+ #...
+ Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 7 entries:
+--- binutils-2.22/ld/testsuite/ld-elf/eh1.d
++++ binutils-2.22/ld/testsuite/ld-elf/eh1.d
+@@ -22,11 +22,11 @@ Contents of the .eh_frame section:
+   DW_CFA_nop
+   DW_CFA_nop
+-00000018 0000001c 0000001c FDE cie=00000000 pc=00400078..00400078
+-  DW_CFA_advance_loc: 0 to 00400078
++00000018 0000001c 0000001c FDE cie=00000000 pc=([0-9a-f]+)..\1
++  DW_CFA_advance_loc: 0 to [0-9a-f]+
+   DW_CFA_def_cfa_offset: 16
+   DW_CFA_offset: r6 \(rbp\) at cfa-16
+-  DW_CFA_advance_loc: 0 to 00400078
++  DW_CFA_advance_loc: 0 to [0-9a-f]+
+   DW_CFA_def_cfa_register: r6 \(rbp\)
+ 00000038 ZERO terminator
+--- binutils-2.22/ld/testsuite/ld-elf/eh2.d
++++ binutils-2.22/ld/testsuite/ld-elf/eh2.d
+@@ -22,11 +22,11 @@ Contents of the .eh_frame section:
+   DW_CFA_nop
+   DW_CFA_nop
+-00000018 0000001c 0000001c FDE cie=00000000 pc=00400078..00400078
+-  DW_CFA_advance_loc: 0 to 00400078
++00000018 0000001c 0000001c FDE cie=00000000 pc=([0-9a-f]+)..\1
++  DW_CFA_advance_loc: 0 to [0-9a-f]+
+   DW_CFA_def_cfa_offset: 16
+   DW_CFA_offset: r6 \(rbp\) at cfa-16
+-  DW_CFA_advance_loc: 0 to 00400078
++  DW_CFA_advance_loc: 0 to [0-9a-f]+
+   DW_CFA_def_cfa_register: r6 \(rbp\)
+ 00000038 ZERO terminator
+--- binutils-2.22/ld/testsuite/ld-elf/eh3.d
++++ binutils-2.22/ld/testsuite/ld-elf/eh3.d
+@@ -22,11 +22,11 @@ Contents of the .eh_frame section:
+   DW_CFA_nop
+   DW_CFA_nop
+-00000018 0000001c 0000001c FDE cie=00000000 pc=00400078..00400078
+-  DW_CFA_advance_loc: 0 to 00400078
++00000018 0000001c 0000001c FDE cie=00000000 pc=([0-9a-f]+)..\1
++  DW_CFA_advance_loc: 0 to [0-9a-f]+
+   DW_CFA_def_cfa_offset: 16
+   DW_CFA_offset: r6 \(rbp\) at cfa-16
+-  DW_CFA_advance_loc: 0 to 00400078
++  DW_CFA_advance_loc: 0 to [0-9a-f]+
+   DW_CFA_def_cfa_register: r6 \(rbp\)
+ 00000038 ZERO terminator
+--- binutils-2.22/ld/testsuite/ld-elf/orphan-region.d
++++ binutils-2.22/ld/testsuite/ld-elf/orphan-region.d
+@@ -15,7 +15,9 @@
+ Program Headers:
+   Type.*
+   LOAD[ \t]+0x[0-9a-f]+ 0x0*40000000 0x0*40000000 0x[0-9a-f]+ 0x[0-9a-f]+ RWE 0x[0-9a-f]+
++ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+  Section to Segment mapping:
+   Segment Sections...
+    00     .text .rodata .moredata *
++   01 +
+--- binutils-2.22/ld/testsuite/ld-i386/tlsbin.rd
++++ binutils-2.22/ld/testsuite/ld-i386/tlsbin.rd
+@@ -44,6 +44,7 @@ Program Headers:
+  +LOAD.*
+  +DYNAMIC.*
+  +TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+60 0x0+a0 R +0x1000
++ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+  Section to Segment mapping:
+  +Segment Sections...
+@@ -53,6 +54,7 @@ Program Headers:
+  +03 +.tdata .dynamic .got .got.plt *
+  +04 +.dynamic *
+  +05 +.tdata .tbss *
++ +06 +
+ Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 9 entries:
+  Offset +Info +Type +Sym.Value +Sym. Name
+--- binutils-2.22/ld/testsuite/ld-i386/tlsbindesc.rd
++++ binutils-2.22/ld/testsuite/ld-i386/tlsbindesc.rd
+@@ -42,6 +42,7 @@ Program Headers:
+  +LOAD.*
+  +DYNAMIC.*
+  +TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+60 0x0+a0 R +0x1000
++ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+  Section to Segment mapping:
+  +Segment Sections...
+@@ -51,6 +52,7 @@ Program Headers:
+  +03 +.tdata .dynamic .got .got.plt *
+  +04 +.dynamic *
+  +05 +.tdata .tbss *
++ +06 +
+ Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 9 entries:
+  Offset +Info +Type +Sym.Value +Sym. Name
+--- binutils-2.22/ld/testsuite/ld-i386/tlsdesc.rd
++++ binutils-2.22/ld/testsuite/ld-i386/tlsdesc.rd
+@@ -39,6 +39,7 @@ Program Headers:
+  +LOAD.*
+  +DYNAMIC.*
+  +TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+60 0x0+80 R +0x1
++ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+  Section to Segment mapping:
+  +Segment Sections...
+@@ -46,6 +47,7 @@ Program Headers:
+  +01 +.tdata .dynamic .got .got.plt *
+  +02 +.dynamic *
+  +03 +.tdata .tbss *
++ +04 +
+ Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 20 entries:
+  Offset +Info +Type +Sym.Value +Sym. Name
+--- binutils-2.22/ld/testsuite/ld-i386/tlsdesc.sd
++++ binutils-2.22/ld/testsuite/ld-i386/tlsdesc.sd
+@@ -14,7 +14,7 @@ Contents of section \.got:
+  [0-9a-f]+ 6c000000 b4ffffff 4c000000 68000000  .*
+  [0-9a-f]+ 50000000 70000000 00000000 bcffffff  .*
+ Contents of section \.got\.plt:
+- [0-9a-f]+ b0150000 00000000 00000000 00000000  .*
++ [0-9a-f]+ [a-f]0150000 00000000 00000000 00000000  .*
+  [0-9a-f]+ 20000000 00000000 60000000 00000000  .*
+  [0-9a-f]+ 00000000 00000000 00000000 00000000  .*
+  [0-9a-f]+ 40000000 +.*
+--- binutils-2.22/ld/testsuite/ld-i386/tlsgdesc.rd
++++ binutils-2.22/ld/testsuite/ld-i386/tlsgdesc.rd
+@@ -36,12 +36,14 @@ Program Headers:
+  +LOAD.*
+  +LOAD.*
+  +DYNAMIC.*
++ +PAX_FLAGS.*
+  Section to Segment mapping:
+  +Segment Sections...
+  +00 +.hash .dynsym .dynstr .rel.dyn .rel.plt .plt .text *
+  +01 +.dynamic .got .got.plt *
+  +02 +.dynamic *
++ +03 +
+ Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 8 entries:
+  Offset +Info +Type +Sym.Value +Sym. Name
+--- binutils-2.22/ld/testsuite/ld-i386/tlsnopic.rd
++++ binutils-2.22/ld/testsuite/ld-i386/tlsnopic.rd
+@@ -37,6 +37,7 @@ Program Headers:
+  +LOAD.*
+  +DYNAMIC.*
+  +TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+ 0x0+24 R +0x1
++ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+  Section to Segment mapping:
+  +Segment Sections...
+@@ -44,6 +45,7 @@ Program Headers:
+  +01 +.dynamic .got .got.plt *
+  +02 +.dynamic *
+  +03 +.tbss *
++ +04 +
+ Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 20 entries:
+  Offset +Info +Type +Sym.Value +Sym. Name
+--- binutils-2.22/ld/testsuite/ld-i386/tlspic.rd
++++ binutils-2.22/ld/testsuite/ld-i386/tlspic.rd
+@@ -40,6 +40,7 @@ Program Headers:
+  +LOAD.*
+  +DYNAMIC.*
+  +TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+60 0x0+80 R +0x1
++ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+  Section to Segment mapping:
+  +Segment Sections...
+@@ -47,6 +48,7 @@ Program Headers:
+  +01 +.tdata .dynamic .got .got.plt *
+  +02 +.dynamic *
+  +03 +.tdata .tbss *
++ +04 +
+ Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 26 entries:
+  Offset +Info +Type +Sym.Value +Sym. Name
+--- binutils-2.22/ld/testsuite/ld-ia64/merge1.d
++++ binutils-2.22/ld/testsuite/ld-ia64/merge1.d
+@@ -4,7 +4,7 @@
+ #objdump: -d
+ #...
+-0+1e0 <.text>:
++[a-f0-9]+ <.text>:
+ [     ]*[a-f0-9]+:    0b 60 80 02 00 24       \[MMI\]       addl r12=32,r1;;
+ [     ]*[a-f0-9]+:    c0 c0 04 00 48 00                   addl r12=24,r1
+ [     ]*[a-f0-9]+:    00 00 04 00                         nop.i 0x0;;
+--- binutils-2.22/ld/testsuite/ld-ia64/merge2.d
++++ binutils-2.22/ld/testsuite/ld-ia64/merge2.d
+@@ -4,7 +4,7 @@
+ #objdump: -d
+ #...
+-0+1e0 <.text>:
++[a-f0-9]+ <.text>:
+ [     ]*[a-f0-9]+:    0b 60 80 02 00 24       \[MMI\]       addl r12=32,r1;;
+ [     ]*[a-f0-9]+:    c0 c0 04 00 48 00                   addl r12=24,r1
+ [     ]*[a-f0-9]+:    00 00 04 00                         nop.i 0x0;;
+--- binutils-2.22/ld/testsuite/ld-ia64/merge3.d
++++ binutils-2.22/ld/testsuite/ld-ia64/merge3.d
+@@ -4,7 +4,7 @@
+ #objdump: -d
+ #...
+-0+210 <.text>:
++[a-f0-9]+ <.text>:
+ [     ]*[a-f0-9]+:    0b 60 80 02 00 24       \[MMI\]       addl r12=32,r1;;
+ [     ]*[a-f0-9]+:    c0 40 05 00 48 00                   addl r12=40,r1
+ [     ]*[a-f0-9]+:    00 00 04 00                         nop.i 0x0;;
+--- binutils-2.22/ld/testsuite/ld-ia64/merge4.d
++++ binutils-2.22/ld/testsuite/ld-ia64/merge4.d
+@@ -4,7 +4,7 @@
+ #objdump: -d
+ #...
+-0+240 <.text>:
++[a-f0-9]+ <.text>:
+ [     ]*[a-f0-9]+:    0b 60 80 02 00 24       \[MMI\]       addl r12=32,r1;;
+ [     ]*[a-f0-9]+:    c0 40 05 00 48 00                   addl r12=40,r1
+ [     ]*[a-f0-9]+:    00 00 04 00                         nop.i 0x0;;
+--- binutils-2.22/ld/testsuite/ld-ia64/merge5.d
++++ binutils-2.22/ld/testsuite/ld-ia64/merge5.d
+@@ -4,7 +4,7 @@
+ #objdump: -d
+ #...
+-0+270 <.text>:
++[a-f0-9]+ <.text>:
+ [     ]*[a-f0-9]+:    0b 60 80 02 00 24       \[MMI\]       addl r12=32,r1;;
+ [     ]*[a-f0-9]+:    c0 40 05 00 48 00                   addl r12=40,r1
+ [     ]*[a-f0-9]+:    00 00 04 00                         nop.i 0x0;;
+--- binutils-2.22/ld/testsuite/ld-ia64/tlsbin.rd
++++ binutils-2.22/ld/testsuite/ld-ia64/tlsbin.rd
+@@ -36,13 +36,14 @@ There are [0-9]+ program headers, starting at offset [0-9]+
+ Program Headers:
+  +Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align
+- +PHDR +0x0+40 0x40+40 0x40+40 0x0+188 0x0+188 R E 0x8
+- +INTERP +0x0+1c8 0x40+1c8 0x40+1c8 0x[0-9a-f]+ 0x[0-9a-f]+ R +0x1
++ +PHDR +0x0+40 0x40+40 0x40+40 (0x[0-9a-f]+) \1 R E 0x8
++ +INTERP +0x0+([0-9a-f]+) (0x40+\1) \2 0x[0-9a-f]+ 0x[0-9a-f]+ R +0x1
+ .*Requesting program interpreter.*
+  +LOAD +0x0+ 0x40+ 0x40+ 0x0+1[0-9a-f]+ 0x0+1[0-9a-f]+ R E 0x10000
+  +LOAD +0x0+1[0-9a-f]+ 0x60+1[0-9a-f]+ 0x60+1[0-9a-f]+ 0x0+0[0-9a-f]+ 0x0+0[0-9a-f]+ RW +0x10000
+  +DYNAMIC +0x0+1[0-9a-f]+ 0x60+1[0-9a-f]+ 0x60+1[0-9a-f]+ 0x0+150 0x0+150 RW +0x8
+  +TLS +0x0+1[0-9a-f]+ 0x60+1[0-9a-f]+ 0x60+1[0-9a-f]+ 0x0+60 0x0+a0 R +0x4
++ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+  +IA_64_UNWIND .* R +0x8
+ #...
+--- binutils-2.22/ld/testsuite/ld-ia64/tlspic.rd
++++ binutils-2.22/ld/testsuite/ld-ia64/tlspic.rd
+@@ -40,6 +40,7 @@ Program Headers:
+  +LOAD +0x0+1[0-9a-f]+ 0x0+11[0-9a-f]+ 0x0+11[0-9a-f]+ 0x0+0[0-9a-f]+ 0x0+0[0-9a-f]+ RW +0x10000
+  +DYNAMIC +0x0+1[0-9a-f]+ 0x0+11[0-9a-f]+ 0x0+11[0-9a-f]+ 0x0+140 0x0+140 RW +0x8
+  +TLS +0x0+1[0-9a-f]+ 0x0+11[0-9a-f]+ 0x0+11[0-9a-f]+ 0x0+60 0x0+80 R +0x4
++ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+  +IA_64_UNWIND +0x0+1[0-9a-f]+ 0x0+1[0-9a-f]+ 0x0+1[0-9a-f]+ 0x0+18 0x0+18 R +0x8
+ #...
+--- binutils-2.22/ld/testsuite/ld-mips-elf/multi-got-no-shared.d
++++ binutils-2.22/ld/testsuite/ld-mips-elf/multi-got-no-shared.d
+@@ -8,9 +8,9 @@
+ .*: +file format.*
+ Disassembly of section \.text:
+-004000b0 <[^>]*> 3c1c0043     lui     gp,0x43
+-004000b4 <[^>]*> 279c9ff0     addiu   gp,gp,-24592
+-004000b8 <[^>]*> afbc0008     sw      gp,8\(sp\)
++004000d0 <[^>]*> 3c1c0043     lui     gp,0x43
++004000d4 <[^>]*> 279c9ff0     addiu   gp,gp,-24592
++004000d8 <[^>]*> afbc0008     sw      gp,8\(sp\)
+ #...
+ 00408d60 <[^>]*> 3c1c0043     lui     gp,0x43
+ 00408d64 <[^>]*> 279c2c98     addiu   gp,gp,11416
+--- binutils-2.22/ld/testsuite/ld-mips-elf/pic-and-nonpic-3a.sd
++++ binutils-2.22/ld/testsuite/ld-mips-elf/pic-and-nonpic-3a.sd
+@@ -1,7 +1,7 @@
+ Elf file type is DYN \(Shared object file\)
+ Entry point .*
+-There are 5 program headers, starting at offset .*
++There are [0-9] program headers, starting at offset .*
+ Program Headers:
+  * Type * Offset * VirtAddr * PhysAddr * FileSiz * MemSiz * Flg * Align
+@@ -9,6 +9,7 @@ Program Headers:
+  * LOAD * [^ ]+ * 0x0+00000 * 0x0+00000 [^ ]+ * [^ ]+ * R E * 0x.*
+  * LOAD * [^ ]+ * 0x0+10000 * 0x0+10000 [^ ]+ * [^ ]+ * RW  * 0x.*
+  * DYNAMIC * [^ ]+ * 0x0+00400 * 0x0+00400 .*
++ * PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+  * NULL * .*
+  *Section to Segment mapping:
+@@ -18,3 +19,4 @@ Program Headers:
+  *0*2 * \.data \.got *
+  *0*3 * \.dynamic *
+  *0*4 *
++ *0*5 *
+--- binutils-2.22/ld/testsuite/ld-mips-elf/pic-and-nonpic-3b.sd
++++ binutils-2.22/ld/testsuite/ld-mips-elf/pic-and-nonpic-3b.sd
+@@ -1,7 +1,7 @@
+ Elf file type is EXEC \(Executable file\)
+ Entry point 0x44000
+-There are 8 program headers, starting at offset .*
++There are [0-9] program headers, starting at offset .*
+ Program Headers:
+  * Type * Offset * VirtAddr * PhysAddr * FileSiz * MemSiz * Flg * Align
+@@ -13,6 +13,7 @@ Program Headers:
+  * LOAD * [^ ]+ * 0x0+80000 * 0x0+80000 [^ ]+ * [^ ]+ * RW  * 0x.*
+  * LOAD * [^ ]+ * 0x0+a0000 * 0x0+a0000 [^ ]+ * [^ ]+ * RW  * 0x.*
+  * DYNAMIC * [^ ]+ * 0x0+42000 * 0x0+42000 .*
++ * PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+  * NULL * .*
+  *Section to Segment mapping:
+@@ -25,3 +26,4 @@ Program Headers:
+  *0*5 *\.got \.data *
+  *0*6 *\.dynamic *
+  *0*7 *
++ *0*8 *
+--- binutils-2.22/ld/testsuite/ld-mips-elf/pic-and-nonpic-4b.sd
++++ binutils-2.22/ld/testsuite/ld-mips-elf/pic-and-nonpic-4b.sd
+@@ -1,7 +1,7 @@
+ Elf file type is EXEC \(Executable file\)
+ Entry point 0x44000
+-There are 8 program headers, starting at offset .*
++There are [0-9] program headers, starting at offset .*
+ Program Headers:
+  * Type * Offset * VirtAddr * PhysAddr * FileSiz * MemSiz * Flg * Align
+@@ -13,6 +13,7 @@ Program Headers:
+  * LOAD * [^ ]+ * 0x0+80000 * 0x0+80000 [^ ]+ * [^ ]+ * RW  * 0x.*
+  * LOAD * [^ ]+ * 0x0+a0000 * 0x0+a0000 [^ ]+ * [^ ]+ * RW  * 0x.*
+  * DYNAMIC * [^ ]+ * 0x0+42000 * 0x0+42000 .*
++ * PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+  * NULL * .*
+  *Section to Segment mapping:
+@@ -25,3 +26,4 @@ Program Headers:
+  *0*5 * \.got \.data \.bss *
+  *0*6 * \.dynamic *
+  *0*7 *
++ *0*8 *
+--- binutils-2.22/ld/testsuite/ld-mips-elf/pic-and-nonpic-5b.sd
++++ binutils-2.22/ld/testsuite/ld-mips-elf/pic-and-nonpic-5b.sd
+@@ -1,7 +1,7 @@
+ Elf file type is EXEC \(Executable file\)
+ Entry point 0x44000
+-There are 8 program headers, starting at offset .*
++There are [0-9] program headers, starting at offset .*
+ Program Headers:
+  * Type * Offset * VirtAddr * PhysAddr * FileSiz * MemSiz * Flg * Align
+@@ -13,6 +13,7 @@ Program Headers:
+  * LOAD * [^ ]+ * 0x0+80000 * 0x0+80000 [^ ]+ * [^ ]+ * RW  * 0x.*
+  * LOAD * [^ ]+ * 0x0+a0000 * 0x0+a0000 [^ ]+ * [^ ]+ * RW  * 0x.*
+  * DYNAMIC * [^ ]+ * 0x0+42000 * 0x0+42000 .*
++ * PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+  * NULL * .*
+  *Section to Segment mapping:
+@@ -25,3 +26,4 @@ Program Headers:
+  *0*5 * \.got \.data \.bss *
+  *0*6 * \.dynamic *
+  *0*7 *
++ *0*8 *
+--- binutils-2.22/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-n32.sd
++++ binutils-2.22/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-n32.sd
+@@ -1,7 +1,7 @@
+ Elf file type is EXEC \(Executable file\)
+ Entry point 0x44000
+-There are 8 program headers, starting at offset .*
++There are [0-9] program headers, starting at offset .*
+ Program Headers:
+  * Type * Offset * VirtAddr * PhysAddr * FileSiz * MemSiz * Flg * Align
+@@ -13,6 +13,7 @@ Program Headers:
+  * LOAD * [^ ]+ * 0x0+80000 * 0x0+80000 [^ ]+ * [^ ]+ * RW  * 0x.*
+  * LOAD * [^ ]+ * 0x0+a0000 * 0x0+a0000 [^ ]+ * [^ ]+ * RW  * 0x.*
+  * DYNAMIC * [^ ]+ * 0x0+42000 * 0x0+42000 .*
++ * PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+  * NULL * .*
+  *Section to Segment mapping:
+@@ -25,3 +26,4 @@ Program Headers:
+  *0*5 * \.got \.data \.bss *
+  *0*6 * \.dynamic *
+  *0*7 *
++ *0*8 *
+--- binutils-2.22/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-n64.sd
++++ binutils-2.22/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-n64.sd
+@@ -1,7 +1,7 @@
+ Elf file type is EXEC \(Executable file\)
+ Entry point 0x44000
+-There are 7 program headers, starting at offset .*
++There are [0-9] program headers, starting at offset .*
+ Program Headers:
+  * Type * Offset * VirtAddr * PhysAddr * FileSiz * MemSiz * Flg * Align
+@@ -12,6 +12,7 @@ Program Headers:
+  * LOAD * [^ ]+ * 0x0+80000 * 0x0+80000 [^ ]+ * [^ ]+ * RW  * 0x.*
+  * LOAD * [^ ]+ * 0x0+a0000 * 0x0+a0000 [^ ]+ * [^ ]+ * RW  * 0x.*
+  * DYNAMIC * [^ ]+ * 0x0+42000 * 0x0+42000 .*
++ * PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+  * NULL * .*
+  *Section to Segment mapping:
+@@ -23,3 +24,4 @@ Program Headers:
+  *0*4 * \.got \.data \.bss *
+  *0*5 * \.dynamic *
+  *0*6 *
++ *0*7 *
+--- binutils-2.22/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-o32.sd
++++ binutils-2.22/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-o32.sd
+@@ -1,7 +1,7 @@
+ Elf file type is EXEC \(Executable file\)
+ Entry point 0x44000
+-There are 8 program headers, starting at offset .*
++There are [0-9] program headers, starting at offset .*
+ Program Headers:
+  * Type * Offset * VirtAddr * PhysAddr * FileSiz * MemSiz * Flg * Align
+@@ -13,6 +13,7 @@ Program Headers:
+  * LOAD * [^ ]+ * 0x0+80000 * 0x0+80000 [^ ]+ * [^ ]+ * RW  * 0x.*
+  * LOAD * [^ ]+ * 0x0+a0000 * 0x0+a0000 [^ ]+ * [^ ]+ * RW  * 0x.*
+  * DYNAMIC * [^ ]+ * 0x0+42000 * 0x0+42000 .*
++ * PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+  * NULL * .*
+  *Section to Segment mapping:
+@@ -25,3 +26,4 @@ Program Headers:
+  *0*5 * \.got \.data \.bss *
+  *0*6 * \.dynamic *
+  *0*7 *
++ *0*8 *
+--- binutils-2.22/ld/testsuite/ld-mips-elf/rel32-n32.d
++++ binutils-2.22/ld/testsuite/ld-mips-elf/rel32-n32.d
+@@ -10,6 +10,6 @@ Relocation section '.rel.dyn' at offset .* contains 2 entries:
+ [0-9a-f ]+R_MIPS_REL32     
+ Hex dump of section '.text':
+-  0x000002e0 00000000 00000000 00000000 00000000 ................
+-  0x000002f0 000002f0 00000000 00000000 00000000 ................
+   0x00000300 00000000 00000000 00000000 00000000 ................
++  0x00000310 00000310 00000000 00000000 00000000 ................
++  0x00000320 00000000 00000000 00000000 00000000 ................
+--- binutils-2.22/ld/testsuite/ld-mips-elf/rel32-o32.d
++++ binutils-2.22/ld/testsuite/ld-mips-elf/rel32-o32.d
+@@ -10,6 +10,6 @@ Relocation section '.rel.dyn' at offset .* contains 2 entries:
+ [0-9a-f ]+R_MIPS_REL32     
+ Hex dump of section '.text':
+-  0x000002e0 00000000 00000000 00000000 00000000 ................
+-  0x000002f0 000002f0 00000000 00000000 00000000 ................
+   0x00000300 00000000 00000000 00000000 00000000 ................
++  0x00000310 00000310 00000000 00000000 00000000 ................
++  0x00000320 00000000 00000000 00000000 00000000 ................
+--- binutils-2.22/ld/testsuite/ld-mips-elf/rel64.d
++++ binutils-2.22/ld/testsuite/ld-mips-elf/rel64.d
+@@ -14,6 +14,6 @@ Relocation section '.rel.dyn' at offset .* contains 2 entries:
+  +Type3: R_MIPS_NONE      
+ Hex dump of section '.text':
+-  0x00000450 00000000 00000000 00000000 00000000 ................
+-  0x00000460 00000000 00000460 00000000 00000000 ................
+-  0x00000470 00000000 00000000 00000000 00000000 ................
++  0x00000490 00000000 00000000 00000000 00000000 ................
++  0x000004a0 00000000 000004a0 00000000 00000000 ................
++  0x000004b0 00000000 00000000 00000000 00000000 ................
+--- binutils-2.22/ld/testsuite/ld-mips-elf/tlsbin-o32.d
++++ binutils-2.22/ld/testsuite/ld-mips-elf/tlsbin-o32.d
+@@ -2,42 +2,42 @@
+ Disassembly of section .text:
+-004000d0 <__start>:
+-  4000d0:     3c1c0fc0        lui     gp,0xfc0
+-  4000d4:     279c7f30        addiu   gp,gp,32560
+-  4000d8:     0399e021        addu    gp,gp,t9
+-  4000dc:     27bdfff0        addiu   sp,sp,-16
+-  4000e0:     afbe0008        sw      s8,8\(sp\)
+-  4000e4:     03a0f021        move    s8,sp
+-  4000e8:     afbc0000        sw      gp,0\(sp\)
+-  4000ec:     8f998018        lw      t9,-32744\(gp\)
+-  4000f0:     27848028        addiu   a0,gp,-32728
+-  4000f4:     0320f809        jalr    t9
+-  4000f8:     00000000        nop
+-  4000fc:     8fdc0000        lw      gp,0\(s8\)
+-  400100:     00000000        nop
+-  400104:     8f998018        lw      t9,-32744\(gp\)
+-  400108:     27848020        addiu   a0,gp,-32736
+-  40010c:     0320f809        jalr    t9
+-  400110:     00000000        nop
+-  400114:     8fdc0000        lw      gp,0\(s8\)
+-  400118:     00401021        move    v0,v0
+-  40011c:     3c030000        lui     v1,0x0
+-  400120:     24638000        addiu   v1,v1,-32768
+-  400124:     00621821        addu    v1,v1,v0
+-  400128:     7c02283b        rdhwr   v0,\$5
+-  40012c:     8f83801c        lw      v1,-32740\(gp\)
+-  400130:     00000000        nop
+-  400134:     00621821        addu    v1,v1,v0
+-  400138:     7c02283b        rdhwr   v0,\$5
+-  40013c:     3c030000        lui     v1,0x0
+-  400140:     24639004        addiu   v1,v1,-28668
+-  400144:     00621821        addu    v1,v1,v0
+-  400148:     03c0e821        move    sp,s8
+-  40014c:     8fbe0008        lw      s8,8\(sp\)
+-  400150:     03e00008        jr      ra
+-  400154:     27bd0010        addiu   sp,sp,16
++00400[0-9a-f]{3} <__start>:
++  400[0-9a-f]{3}:     3c1c0fc0        lui     gp,0xfc0
++  400[0-9a-f]{3}:     279c7f30        addiu   gp,gp,32560
++  400[0-9a-f]{3}:     0399e021        addu    gp,gp,t9
++  400[0-9a-f]{3}:     27bdfff0        addiu   sp,sp,-16
++  400[0-9a-f]{3}:     afbe0008        sw      s8,8\(sp\)
++  400[0-9a-f]{3}:     03a0f021        move    s8,sp
++  400[0-9a-f]{3}:     afbc0000        sw      gp,0\(sp\)
++  400[0-9a-f]{3}:     8f998018        lw      t9,-32744\(gp\)
++  400[0-9a-f]{3}:     27848028        addiu   a0,gp,-32728
++  400[0-9a-f]{3}:     0320f809        jalr    t9
++  400[0-9a-f]{3}:     00000000        nop
++  400[0-9a-f]{3}:     8fdc0000        lw      gp,0\(s8\)
++  400[0-9a-f]{3}:     00000000        nop
++  400[0-9a-f]{3}:     8f998018        lw      t9,-32744\(gp\)
++  400[0-9a-f]{3}:     27848020        addiu   a0,gp,-32736
++  400[0-9a-f]{3}:     0320f809        jalr    t9
++  400[0-9a-f]{3}:     00000000        nop
++  400[0-9a-f]{3}:     8fdc0000        lw      gp,0\(s8\)
++  400[0-9a-f]{3}:     00401021        move    v0,v0
++  400[0-9a-f]{3}:     3c030000        lui     v1,0x0
++  400[0-9a-f]{3}:     24638000        addiu   v1,v1,-32768
++  400[0-9a-f]{3}:     00621821        addu    v1,v1,v0
++  400[0-9a-f]{3}:     7c02283b        rdhwr   v0,\$5
++  400[0-9a-f]{3}:     8f83801c        lw      v1,-32740\(gp\)
++  400[0-9a-f]{3}:     00000000        nop
++  400[0-9a-f]{3}:     00621821        addu    v1,v1,v0
++  400[0-9a-f]{3}:     7c02283b        rdhwr   v0,\$5
++  400[0-9a-f]{3}:     3c030000        lui     v1,0x0
++  400[0-9a-f]{3}:     24639004        addiu   v1,v1,-28668
++  400[0-9a-f]{3}:     00621821        addu    v1,v1,v0
++  400[0-9a-f]{3}:     03c0e821        move    sp,s8
++  400[0-9a-f]{3}:     8fbe0008        lw      s8,8\(sp\)
++  400[0-9a-f]{3}:     03e00008        jr      ra
++  400[0-9a-f]{3}:     27bd0010        addiu   sp,sp,16
+-00400158 <__tls_get_addr>:
+-  400158:     03e00008        jr      ra
+-  40015c:     00000000        nop
++00400[0-9a-f]{3} <__tls_get_addr>:
++  400[0-9a-f]{3}:     03e00008        jr      ra
++  400[0-9a-f]{3}:     00000000        nop
+--- binutils-2.22/ld/testsuite/ld-powerpc/tls.d
++++ binutils-2.22/ld/testsuite/ld-powerpc/tls.d
+@@ -9,45 +9,45 @@
+ Disassembly of section \.text:
+-0+100000e8 <_start>:
+-    100000e8: 3c 6d 00 00     addis   r3,r13,0
+-    100000ec: 60 00 00 00     nop
+-    100000f0: 38 63 90 78     addi    r3,r3,-28552
+-    100000f4: 3c 6d 00 00     addis   r3,r13,0
+-    100000f8: 60 00 00 00     nop
+-    100000fc: 38 63 10 00     addi    r3,r3,4096
+-    10000100: 3c 6d 00 00     addis   r3,r13,0
+-    10000104: 60 00 00 00     nop
+-    10000108: 38 63 90 40     addi    r3,r3,-28608
+-    1000010c: 3c 6d 00 00     addis   r3,r13,0
+-    10000110: 60 00 00 00     nop
+-    10000114: 38 63 10 00     addi    r3,r3,4096
+-    10000118: 39 23 80 48     addi    r9,r3,-32696
+-    1000011c: 3d 23 00 00     addis   r9,r3,0
+-    10000120: 81 49 80 50     lwz     r10,-32688\(r9\)
+-    10000124: e9 22 80 10     ld      r9,-32752\(r2\)
+-    10000128: 7d 49 18 2a     ldx     r10,r9,r3
+-    1000012c: 3d 2d 00 00     addis   r9,r13,0
+-    10000130: a1 49 90 60     lhz     r10,-28576\(r9\)
+-    10000134: 89 4d 90 68     lbz     r10,-28568\(r13\)
+-    10000138: 3d 2d 00 00     addis   r9,r13,0
+-    1000013c: 99 49 90 70     stb     r10,-28560\(r9\)
+-    10000140: 3c 6d 00 00     addis   r3,r13,0
+-    10000144: 60 00 00 00     nop
+-    10000148: 38 63 90 00     addi    r3,r3,-28672
+-    1000014c: 3c 6d 00 00     addis   r3,r13,0
+-    10000150: 60 00 00 00     nop
+-    10000154: 38 63 10 00     addi    r3,r3,4096
+-    10000158: f9 43 80 08     std     r10,-32760\(r3\)
+-    1000015c: 3d 23 00 00     addis   r9,r3,0
+-    10000160: 91 49 80 10     stw     r10,-32752\(r9\)
+-    10000164: e9 22 80 08     ld      r9,-32760\(r2\)
+-    10000168: 7d 49 19 2a     stdx    r10,r9,r3
+-    1000016c: 3d 2d 00 00     addis   r9,r13,0
+-    10000170: b1 49 90 60     sth     r10,-28576\(r9\)
+-    10000174: e9 4d 90 2a     lwa     r10,-28632\(r13\)
+-    10000178: 3d 2d 00 00     addis   r9,r13,0
+-    1000017c: a9 49 90 30     lha     r10,-28624\(r9\)
++0+10000[0-9a-f]{3} <_start>:
++    10000[0-9a-f]{3}: 3c 6d 00 00     addis   r3,r13,0
++    10000[0-9a-f]{3}: 60 00 00 00     nop
++    10000[0-9a-f]{3}: 38 63 90 78     addi    r3,r3,-28552
++    10000[0-9a-f]{3}: 3c 6d 00 00     addis   r3,r13,0
++    10000[0-9a-f]{3}: 60 00 00 00     nop
++    10000[0-9a-f]{3}: 38 63 10 00     addi    r3,r3,4096
++    10000[0-9a-f]{3}: 3c 6d 00 00     addis   r3,r13,0
++    10000[0-9a-f]{3}: 60 00 00 00     nop
++    10000[0-9a-f]{3}: 38 63 90 40     addi    r3,r3,-28608
++    10000[0-9a-f]{3}: 3c 6d 00 00     addis   r3,r13,0
++    10000[0-9a-f]{3}: 60 00 00 00     nop
++    10000[0-9a-f]{3}: 38 63 10 00     addi    r3,r3,4096
++    10000[0-9a-f]{3}: 39 23 80 48     addi    r9,r3,-32696
++    10000[0-9a-f]{3}: 3d 23 00 00     addis   r9,r3,0
++    10000[0-9a-f]{3}: 81 49 80 50     lwz     r10,-32688\(r9\)
++    10000[0-9a-f]{3}: e9 22 80 10     ld      r9,-32752\(r2\)
++    10000[0-9a-f]{3}: 7d 49 18 2a     ldx     r10,r9,r3
++    10000[0-9a-f]{3}: 3d 2d 00 00     addis   r9,r13,0
++    10000[0-9a-f]{3}: a1 49 90 60     lhz     r10,-28576\(r9\)
++    10000[0-9a-f]{3}: 89 4d 90 68     lbz     r10,-28568\(r13\)
++    10000[0-9a-f]{3}: 3d 2d 00 00     addis   r9,r13,0
++    10000[0-9a-f]{3}: 99 49 90 70     stb     r10,-28560\(r9\)
++    10000[0-9a-f]{3}: 3c 6d 00 00     addis   r3,r13,0
++    10000[0-9a-f]{3}: 60 00 00 00     nop
++    10000[0-9a-f]{3}: 38 63 90 00     addi    r3,r3,-28672
++    10000[0-9a-f]{3}: 3c 6d 00 00     addis   r3,r13,0
++    10000[0-9a-f]{3}: 60 00 00 00     nop
++    10000[0-9a-f]{3}: 38 63 10 00     addi    r3,r3,4096
++    10000[0-9a-f]{3}: f9 43 80 08     std     r10,-32760\(r3\)
++    10000[0-9a-f]{3}: 3d 23 00 00     addis   r9,r3,0
++    10000[0-9a-f]{3}: 91 49 80 10     stw     r10,-32752\(r9\)
++    10000[0-9a-f]{3}: e9 22 80 08     ld      r9,-32760\(r2\)
++    10000[0-9a-f]{3}: 7d 49 19 2a     stdx    r10,r9,r3
++    10000[0-9a-f]{3}: 3d 2d 00 00     addis   r9,r13,0
++    10000[0-9a-f]{3}: b1 49 90 60     sth     r10,-28576\(r9\)
++    10000[0-9a-f]{3}: e9 4d 90 2a     lwa     r10,-28632\(r13\)
++    10000[0-9a-f]{3}: 3d 2d 00 00     addis   r9,r13,0
++    10000[0-9a-f]{3}: a9 49 90 30     lha     r10,-28624\(r9\)
+-0+10000180 <\.__tls_get_addr>:
+-    10000180: 4e 80 00 20     blr
++0+10000[0-9a-f]{3} <\.__tls_get_addr>:
++    10000[0-9a-f]{3}: 4e 80 00 20     blr
+--- binutils-2.22/ld/testsuite/ld-powerpc/tls.g
++++ binutils-2.22/ld/testsuite/ld-powerpc/tls.g
+@@ -8,5 +8,5 @@
+ .*: +file format elf64-powerpc
+ Contents of section \.got:
+- 100101e0 00000000 100181e0 ffffffff ffff8018  .*
+- 100101f0 ffffffff ffff8058                    .*
++ 10010([0-9a-f]{3}) 00000000 10018\1 ffffffff ffff8018  .*
++ 10010[0-9a-f]{3} ffffffff ffff8058                    .*
+--- binutils-2.22/ld/testsuite/ld-powerpc/tls32.d
++++ binutils-2.22/ld/testsuite/ld-powerpc/tls32.d
+@@ -9,42 +9,42 @@
+ Disassembly of section \.text:
+-0+1800094 <_start>:
+- 1800094:     3c 62 00 00     addis   r3,r2,0
+- 1800098:     38 63 90 3c     addi    r3,r3,-28612
+- 180009c:     3c 62 00 00     addis   r3,r2,0
+- 18000a0:     38 63 10 00     addi    r3,r3,4096
+- 18000a4:     3c 62 00 00     addis   r3,r2,0
+- 18000a8:     38 63 90 20     addi    r3,r3,-28640
+- 18000ac:     3c 62 00 00     addis   r3,r2,0
+- 18000b0:     38 63 10 00     addi    r3,r3,4096
+- 18000b4:     39 23 80 24     addi    r9,r3,-32732
+- 18000b8:     3d 23 00 00     addis   r9,r3,0
+- 18000bc:     81 49 80 28     lwz     r10,-32728\(r9\)
+- 18000c0:     3d 22 00 00     addis   r9,r2,0
+- 18000c4:     a1 49 90 30     lhz     r10,-28624\(r9\)
+- 18000c8:     89 42 90 34     lbz     r10,-28620\(r2\)
+- 18000cc:     3d 22 00 00     addis   r9,r2,0
+- 18000d0:     99 49 90 38     stb     r10,-28616\(r9\)
+- 18000d4:     3c 62 00 00     addis   r3,r2,0
+- 18000d8:     38 63 90 00     addi    r3,r3,-28672
+- 18000dc:     3c 62 00 00     addis   r3,r2,0
+- 18000e0:     38 63 10 00     addi    r3,r3,4096
+- 18000e4:     91 43 80 04     stw     r10,-32764\(r3\)
+- 18000e8:     3d 23 00 00     addis   r9,r3,0
+- 18000ec:     91 49 80 08     stw     r10,-32760\(r9\)
+- 18000f0:     3d 22 00 00     addis   r9,r2,0
+- 18000f4:     b1 49 90 30     sth     r10,-28624\(r9\)
+- 18000f8:     a1 42 90 14     lhz     r10,-28652\(r2\)
+- 18000fc:     3d 22 00 00     addis   r9,r2,0
+- 1800100:     a9 49 90 18     lha     r10,-28648\(r9\)
++0+1800[0-9a-f]{3} <_start>:
++ 1800[0-9a-f]{3}:     3c 62 00 00     addis   r3,r2,0
++ 1800[0-9a-f]{3}:     38 63 90 3c     addi    r3,r3,-28612
++ 1800[0-9a-f]{3}:     3c 62 00 00     addis   r3,r2,0
++ 1800[0-9a-f]{3}:     38 63 10 00     addi    r3,r3,4096
++ 1800[0-9a-f]{3}:     3c 62 00 00     addis   r3,r2,0
++ 1800[0-9a-f]{3}:     38 63 90 20     addi    r3,r3,-28640
++ 1800[0-9a-f]{3}:     3c 62 00 00     addis   r3,r2,0
++ 1800[0-9a-f]{3}:     38 63 10 00     addi    r3,r3,4096
++ 1800[0-9a-f]{3}:     39 23 80 24     addi    r9,r3,-32732
++ 1800[0-9a-f]{3}:     3d 23 00 00     addis   r9,r3,0
++ 1800[0-9a-f]{3}:     81 49 80 28     lwz     r10,-32728\(r9\)
++ 1800[0-9a-f]{3}:     3d 22 00 00     addis   r9,r2,0
++ 1800[0-9a-f]{3}:     a1 49 90 30     lhz     r10,-28624\(r9\)
++ 1800[0-9a-f]{3}:     89 42 90 34     lbz     r10,-28620\(r2\)
++ 1800[0-9a-f]{3}:     3d 22 00 00     addis   r9,r2,0
++ 1800[0-9a-f]{3}:     99 49 90 38     stb     r10,-28616\(r9\)
++ 1800[0-9a-f]{3}:     3c 62 00 00     addis   r3,r2,0
++ 1800[0-9a-f]{3}:     38 63 90 00     addi    r3,r3,-28672
++ 1800[0-9a-f]{3}:     3c 62 00 00     addis   r3,r2,0
++ 1800[0-9a-f]{3}:     38 63 10 00     addi    r3,r3,4096
++ 1800[0-9a-f]{3}:     91 43 80 04     stw     r10,-32764\(r3\)
++ 1800[0-9a-f]{3}:     3d 23 00 00     addis   r9,r3,0
++ 1800[0-9a-f]{3}:     91 49 80 08     stw     r10,-32760\(r9\)
++ 1800[0-9a-f]{3}:     3d 22 00 00     addis   r9,r2,0
++ 1800[0-9a-f]{3}:     b1 49 90 30     sth     r10,-28624\(r9\)
++ 1800[0-9a-f]{3}:     a1 42 90 14     lhz     r10,-28652\(r2\)
++ 1800[0-9a-f]{3}:     3d 22 00 00     addis   r9,r2,0
++ 1800[0-9a-f]{3}:     a9 49 90 18     lha     r10,-28648\(r9\)
+-0+1800104 <__tls_get_addr>:
+- 1800104:     4e 80 00 20     blr
++0+1800[0-9a-f]{3} <__tls_get_addr>:
++ 1800[0-9a-f]{3}:     4e 80 00 20     blr
+ Disassembly of section \.got:
+-0+1810128 <_GLOBAL_OFFSET_TABLE_-0x4>:
+- 1810128:     4e 80 00 21     blrl
++0+1810[0-9a-f]{3} <_GLOBAL_OFFSET_TABLE_-0x4>:
++ 1810[0-9a-f]{3}:     4e 80 00 21     blrl
+-0+181012c <_GLOBAL_OFFSET_TABLE_>:
++0+1810[0-9a-f]{3} <_GLOBAL_OFFSET_TABLE_>:
+       \.\.\.
+--- binutils-2.22/ld/testsuite/ld-powerpc/tls32.g
++++ binutils-2.22/ld/testsuite/ld-powerpc/tls32.g
+@@ -8,4 +8,4 @@
+ .*: +file format elf32-powerpc
+ Contents of section \.got:
+- 1810128 4e800021 00000000 00000000 00000000  .*
++ 18101[0-9a-f]{2} 4e800021 00000000 00000000 00000000  .*
+--- binutils-2.22/ld/testsuite/ld-powerpc/tls32.t
++++ binutils-2.22/ld/testsuite/ld-powerpc/tls32.t
+@@ -8,5 +8,5 @@
+ .*: +file format elf32-powerpc
+ Contents of section \.tdata:
+- 1810108 12345678 23456789 3456789a 456789ab  .*
+- 1810118 56789abc 6789abcd 789abcde 00c0ffee  .*
++ 18101[0-9a-f]{2} 12345678 23456789 3456789a 456789ab  .*
++ 18101[0-9a-f]{2} 56789abc 6789abcd 789abcde 00c0ffee  .*
+--- binutils-2.22/ld/testsuite/ld-powerpc/tlsexe32.d
++++ binutils-2.22/ld/testsuite/ld-powerpc/tlsexe32.d
+@@ -44,4 +44,4 @@ Disassembly of section \.got:
+ .*:   4e 80 00 21     blrl
+ .* <_GLOBAL_OFFSET_TABLE_>:
+-.*:   01 81 02 b8 00 00 00 00 00 00 00 00  .*
++.*:   01 81 02 [bd]8 00 00 00 00 00 00 00 00  .*
+--- binutils-2.22/ld/testsuite/ld-powerpc/tlsexe32.g
++++ binutils-2.22/ld/testsuite/ld-powerpc/tlsexe32.g
+@@ -8,4 +8,4 @@
+ Contents of section \.got:
+ .* 00000000 00000000 00000000 4e800021  .*
+-.* 018102b8 00000000 00000000           .*
++.* 018102[bd]8 00000000 00000000           .*
+--- binutils-2.22/ld/testsuite/ld-powerpc/tlsexe32.r
++++ binutils-2.22/ld/testsuite/ld-powerpc/tlsexe32.r
+@@ -33,13 +33,14 @@ There are [0-9]+ program headers, starting at offset [0-9]+
+ Program Headers:
+  +Type +Offset +VirtAddr +PhysAddr +FileSiz MemSiz +Flg Align
+- +PHDR +0x000034 0x01800034 0x01800034 0x000c0 0x000c0 R E 0x4
+- +INTERP +0x0000f4 0x018000f4 0x018000f4 0x00011 0x00011 R +0x1
++ +PHDR +0x000034 0x01800034 0x01800034 (0x000[0-9a-f]{2}) \1 R E 0x4
++ +INTERP +0x000([0-9a-f]{3}) 0x01800\1 0x01800\1 0x00011 0x00011 R +0x1
+  +\[Requesting program interpreter: .*\]
+  +LOAD .* R E 0x10000
+  +LOAD .* RWE 0x10000
+  +DYNAMIC .* RW +0x4
+  +TLS .* 0x0001c 0x00038 R +0x4
++ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+  Section to Segment mapping:
+  +Segment Sections\.\.\.
+@@ -49,6 +50,7 @@ Program Headers:
+  +03 +\.tdata \.dynamic \.got \.plt 
+  +04 +\.dynamic 
+  +05 +\.tdata \.tbss 
++ +06 +
+ Relocation section '\.rela\.dyn' at offset .* contains 2 entries:
+  Offset +Info +Type +Sym\. Value +Symbol's Name \+ Addend
+--- binutils-2.22/ld/testsuite/ld-powerpc/tlsmark.d
++++ binutils-2.22/ld/testsuite/ld-powerpc/tlsmark.d
+@@ -9,29 +9,29 @@
+ Disassembly of section \.text:
+-0+100000e8 <_start>:
+-    100000e8: 48 00 00 18     b       10000100 <_start\+0x18>
+-    100000ec: 60 00 00 00     nop
+-    100000f0: 38 63 90 00     addi    r3,r3,-28672
+-    100000f4: e8 83 00 00     ld      r4,0\(r3\)
+-    100000f8: 3c 6d 00 00     addis   r3,r13,0
+-    100000fc: 48 00 00 0c     b       10000108 <_start\+0x20>
+-    10000100: 3c 6d 00 00     addis   r3,r13,0
+-    10000104: 4b ff ff e8     b       100000ec <_start\+0x4>
+-    10000108: 60 00 00 00     nop
+-    1000010c: 38 63 10 00     addi    r3,r3,4096
+-    10000110: e8 83 80 00     ld      r4,-32768\(r3\)
+-    10000114: 3c 6d 00 00     addis   r3,r13,0
+-    10000118: 48 00 00 0c     b       10000124 <_start\+0x3c>
+-    1000011c: 3c 6d 00 00     addis   r3,r13,0
+-    10000120: 48 00 00 14     b       10000134 <_start\+0x4c>
+-    10000124: 60 00 00 00     nop
+-    10000128: 38 63 90 04     addi    r3,r3,-28668
+-    1000012c: e8 a3 00 00     ld      r5,0\(r3\)
+-    10000130: 4b ff ff ec     b       1000011c <_start\+0x34>
+-    10000134: 60 00 00 00     nop
+-    10000138: 38 63 10 00     addi    r3,r3,4096
+-    1000013c: e8 a3 80 04     ld      r5,-32764\(r3\)
++0+10000[0-9a-f]{3} <_start>:
++    10000[0-9a-f]{3}: 48 00 00 18     b       10000[0-9a-f]{3} <_start\+0x18>
++    10000[0-9a-f]{3}: 60 00 00 00     nop
++    10000[0-9a-f]{3}: 38 63 90 00     addi    r3,r3,-28672
++    10000[0-9a-f]{3}: e8 83 00 00     ld      r4,0\(r3\)
++    10000[0-9a-f]{3}: 3c 6d 00 00     addis   r3,r13,0
++    10000[0-9a-f]{3}: 48 00 00 0c     b       10000[0-9a-f]{3} <_start\+0x20>
++    10000[0-9a-f]{3}: 3c 6d 00 00     addis   r3,r13,0
++    10000[0-9a-f]{3}: 4b ff ff e8     b       10000[0-9a-f]{3} <_start\+0x4>
++    10000[0-9a-f]{3}: 60 00 00 00     nop
++    10000[0-9a-f]{3}: 38 63 10 00     addi    r3,r3,4096
++    10000[0-9a-f]{3}: e8 83 80 00     ld      r4,-32768\(r3\)
++    10000[0-9a-f]{3}: 3c 6d 00 00     addis   r3,r13,0
++    10000[0-9a-f]{3}: 48 00 00 0c     b       10000[0-9a-f]{3} <_start\+0x3c>
++    10000[0-9a-f]{3}: 3c 6d 00 00     addis   r3,r13,0
++    10000[0-9a-f]{3}: 48 00 00 14     b       10000[0-9a-f]{3} <_start\+0x4c>
++    10000[0-9a-f]{3}: 60 00 00 00     nop
++    10000[0-9a-f]{3}: 38 63 90 04     addi    r3,r3,-28668
++    10000[0-9a-f]{3}: e8 a3 00 00     ld      r5,0\(r3\)
++    10000[0-9a-f]{3}: 4b ff ff ec     b       10000[0-9a-f]{3} <_start\+0x34>
++    10000[0-9a-f]{3}: 60 00 00 00     nop
++    10000[0-9a-f]{3}: 38 63 10 00     addi    r3,r3,4096
++    10000[0-9a-f]{3}: e8 a3 80 04     ld      r5,-32764\(r3\)
+-0+10000140 <\.__tls_get_addr>:
+-    10000140: 4e 80 00 20     blr
++0+10000[0-9a-f]{3} <\.__tls_get_addr>:
++    10000[0-9a-f]{3}: 4e 80 00 20     blr
+--- binutils-2.22/ld/testsuite/ld-powerpc/tlsmark32.d
++++ binutils-2.22/ld/testsuite/ld-powerpc/tlsmark32.d
+@@ -9,17 +9,17 @@
+ Disassembly of section \.text:
+-0+1800094 <_start>:
+- 1800094:     48 00 00 14     b       18000a8 <_start\+0x14>
+- 1800098:     38 63 90 00     addi    r3,r3,-28672
+- 180009c:     80 83 00 00     lwz     r4,0\(r3\)
+- 18000a0:     3c 62 00 00     addis   r3,r2,0
+- 18000a4:     48 00 00 0c     b       18000b0 <_start\+0x1c>
+- 18000a8:     3c 62 00 00     addis   r3,r2,0
+- 18000ac:     4b ff ff ec     b       1800098 <_start\+0x4>
+- 18000b0:     38 63 10 00     addi    r3,r3,4096
+- 18000b4:     80 83 80 00     lwz     r4,-32768\(r3\)
++0+18000[0-9a-f]{2} <_start>:
++ 18000[0-9a-f]{2}:    48 00 00 14     b       18000[0-9a-f]{2} <_start\+0x14>
++ 18000[0-9a-f]{2}:    38 63 90 00     addi    r3,r3,-28672
++ 18000[0-9a-f]{2}:    80 83 00 00     lwz     r4,0\(r3\)
++ 18000[0-9a-f]{2}:    3c 62 00 00     addis   r3,r2,0
++ 18000[0-9a-f]{2}:    48 00 00 0c     b       18000[0-9a-f]{2} <_start\+0x1c>
++ 18000[0-9a-f]{2}:    3c 62 00 00     addis   r3,r2,0
++ 18000[0-9a-f]{2}:    4b ff ff ec     b       18000[0-9a-f]{2} <_start\+0x4>
++ 18000[0-9a-f]{2}:    38 63 10 00     addi    r3,r3,4096
++ 18000[0-9a-f]{2}:    80 83 80 00     lwz     r4,-32768\(r3\)
+-0+18000b8 <__tls_get_addr>:
+- 18000b8:     4e 80 00 20     blr
+-#pass
+\ No newline at end of file
++0+18000[0-9a-f]{2} <__tls_get_addr>:
++ 18000[0-9a-f]{2}:    4e 80 00 20     blr
++#pass
+--- binutils-2.22/ld/testsuite/ld-powerpc/tlsopt1.d
++++ binutils-2.22/ld/testsuite/ld-powerpc/tlsopt1.d
+@@ -9,17 +9,17 @@
+ Disassembly of section \.text:
+-0+100000e8 <\.__tls_get_addr>:
+-    100000e8: 4e 80 00 20     blr
++0+10000[0-9a-f]{3} <\.__tls_get_addr>:
++    10000[0-9a-f]{3}: 4e 80 00 20     blr
+ Disassembly of section \.no_opt1:
+-0+100000ec <\.no_opt1>:
+-    100000ec: 38 62 80 08     addi    r3,r2,-32760
+-    100000f0: 2c 24 00 00     cmpdi   r4,0
+-    100000f4: 41 82 00 10     beq-    .*
+-    100000f8: 4b ff ff f1     bl      100000e8 <\.__tls_get_addr>
+-    100000fc: 60 00 00 00     nop
+-    10000100: 48 00 00 0c     b       .*
+-    10000104: 4b ff ff e5     bl      100000e8 <\.__tls_get_addr>
+-    10000108: 60 00 00 00     nop
++0+10000[0-9a-f]{3} <\.no_opt1>:
++    10000[0-9a-f]{3}: 38 62 80 08     addi    r3,r2,-32760
++    10000[0-9a-f]{3}: 2c 24 00 00     cmpdi   r4,0
++    10000[0-9a-f]{3}: 41 82 00 10     beq-    .*
++    10000[0-9a-f]{3}: 4b ff ff f1     bl      10000[0-9a-f]{3} <\.__tls_get_addr>
++    10000[0-9a-f]{3}: 60 00 00 00     nop
++    10000[0-9a-f]{3}: 48 00 00 0c     b       .*
++    10000[0-9a-f]{3}: 4b ff ff e5     bl      10000[0-9a-f]{3} <\.__tls_get_addr>
++    10000[0-9a-f]{3}: 60 00 00 00     nop
+--- binutils-2.22/ld/testsuite/ld-powerpc/tlsopt1_32.d
++++ binutils-2.22/ld/testsuite/ld-powerpc/tlsopt1_32.d
+@@ -9,16 +9,16 @@
+ Disassembly of section \.text:
+-0+1800094 <__tls_get_addr>:
+- 1800094:     4e 80 00 20     blr
++0+18000[0-9a-f]{2} <__tls_get_addr>:
++ 18000[0-9a-f]{2}:    4e 80 00 20     blr
+ Disassembly of section \.no_opt1:
+-0+1800098 <\.no_opt1>:
+- 1800098:     38 6d ff f4     addi    r3,r13,-12
+- 180009c:     2c 04 00 00     cmpwi   r4,0
+- 18000a0:     41 82 00 0c     beq-    .*
+- 18000a4:     4b ff ff f1     bl      1800094 <__tls_get_addr>
+- 18000a8:     48 00 00 08     b       .*
+- 18000ac:     4b ff ff e9     bl      1800094 <__tls_get_addr>
++0+18000[0-9a-f]{2} <\.no_opt1>:
++ 18000[0-9a-f]{2}:    38 6d ff f4     addi    r3,r13,-12
++ 18000[0-9a-f]{2}:    2c 04 00 00     cmpwi   r4,0
++ 18000[0-9a-f]{2}:    41 82 00 0c     beq-    .*
++ 18000[0-9a-f]{2}:    4b ff ff f1     bl      18000[0-9a-f]{2} <__tls_get_addr>
++ 18000[0-9a-f]{2}:    48 00 00 08     b       .*
++ 18000[0-9a-f]{2}:    4b ff ff e9     bl      18000[0-9a-f]{2} <__tls_get_addr>
+ #pass
+--- binutils-2.22/ld/testsuite/ld-powerpc/tlsopt2.d
++++ binutils-2.22/ld/testsuite/ld-powerpc/tlsopt2.d
+@@ -9,15 +9,15 @@
+ Disassembly of section \.text:
+-0+100000e8 <\.__tls_get_addr>:
+-    100000e8: 4e 80 00 20     blr
++0+10000[0-9a-f]{3} <\.__tls_get_addr>:
++    10000[0-9a-f]{3}: 4e 80 00 20     blr
+ Disassembly of section \.no_opt2:
+-0+100000ec <\.no_opt2>:
+-    100000ec: 38 62 80 08     addi    r3,r2,-32760
+-    100000f0: 2c 24 00 00     cmpdi   r4,0
+-    100000f4: 41 82 00 08     beq-    .*
+-    100000f8: 38 62 80 08     addi    r3,r2,-32760
+-    100000fc: 4b ff ff ed     bl      100000e8 <\.__tls_get_addr>
+-    10000100: 60 00 00 00     nop
++0+10000[0-9a-f]{3} <\.no_opt2>:
++    10000[0-9a-f]{3}: 38 62 80 08     addi    r3,r2,-32760
++    10000[0-9a-f]{3}: 2c 24 00 00     cmpdi   r4,0
++    10000[0-9a-f]{3}: 41 82 00 08     beq-    .*
++    10000[0-9a-f]{3}: 38 62 80 08     addi    r3,r2,-32760
++    10000[0-9a-f]{3}: 4b ff ff ed     bl      10000[0-9a-f]{3} <\.__tls_get_addr>
++    10000[0-9a-f]{3}: 60 00 00 00     nop
+--- binutils-2.22/ld/testsuite/ld-powerpc/tlsopt2_32.d
++++ binutils-2.22/ld/testsuite/ld-powerpc/tlsopt2_32.d
+@@ -9,15 +9,15 @@
+ Disassembly of section \.text:
+-0+1800094 <__tls_get_addr>:
+- 1800094:     4e 80 00 20     blr
++0+18000[0-9a-f]{2} <__tls_get_addr>:
++ 18000[0-9a-f]{2}:    4e 80 00 20     blr
+ Disassembly of section \.no_opt2:
+-0+1800098 <\.no_opt2>:
+- 1800098:     38 6d ff f4     addi    r3,r13,-12
+- 180009c:     2c 04 00 00     cmpwi   r4,0
+- 18000a0:     41 82 00 08     beq-    .*
+- 18000a4:     38 6d ff f4     addi    r3,r13,-12
+- 18000a8:     4b ff ff ed     bl      1800094 <__tls_get_addr>
++0+18000[0-9a-f]{2} <\.no_opt2>:
++ 18000[0-9a-f]{2}:    38 6d ff f4     addi    r3,r13,-12
++ 18000[0-9a-f]{2}:    2c 04 00 00     cmpwi   r4,0
++ 18000[0-9a-f]{2}:    41 82 00 08     beq-    .*
++ 18000[0-9a-f]{2}:    38 6d ff f4     addi    r3,r13,-12
++ 18000[0-9a-f]{2}:    4b ff ff ed     bl      18000[0-9a-f]{2} <__tls_get_addr>
+ #pass
+--- binutils-2.22/ld/testsuite/ld-powerpc/tlsopt3.d
++++ binutils-2.22/ld/testsuite/ld-powerpc/tlsopt3.d
+@@ -9,18 +9,18 @@
+ Disassembly of section \.text:
+-00000000100000e8 <\.__tls_get_addr>:
+-    100000e8: 4e 80 00 20     blr
++0000000010000[0-9a-f]{3} <\.__tls_get_addr>:
++    10000[0-9a-f]{3}: 4e 80 00 20     blr
+ Disassembly of section \.no_opt3:
+-00000000100000ec <\.no_opt3>:
+-    100000ec: 38 62 80 08     addi    r3,r2,-32760
+-    100000f0: 48 00 00 0c     b       .*
+-    100000f4: 38 62 80 18     addi    r3,r2,-32744
+-    100000f8: 48 00 00 10     b       .*
+-    100000fc: 4b ff ff ed     bl      100000e8 <\.__tls_get_addr>
+-    10000100: 60 00 00 00     nop
+-    10000104: 48 00 00 0c     b       .*
+-    10000108: 4b ff ff e1     bl      100000e8 <\.__tls_get_addr>
+-    1000010c: 60 00 00 00     nop
++0000000010000[0-9a-f]{3} <\.no_opt3>:
++    10000[0-9a-f]{3}: 38 62 80 08     addi    r3,r2,-32760
++    10000[0-9a-f]{3}: 48 00 00 0c     b       .*
++    10000[0-9a-f]{3}: 38 62 80 18     addi    r3,r2,-32744
++    10000[0-9a-f]{3}: 48 00 00 10     b       .*
++    10000[0-9a-f]{3}: 4b ff ff ed     bl      10000[0-9a-f]{3} <\.__tls_get_addr>
++    10000[0-9a-f]{3}: 60 00 00 00     nop
++    10000[0-9a-f]{3}: 48 00 00 0c     b       .*
++    10000[0-9a-f]{3}: 4b ff ff e1     bl      10000[0-9a-f]{3} <\.__tls_get_addr>
++    10000[0-9a-f]{3}: 60 00 00 00     nop
+--- binutils-2.22/ld/testsuite/ld-powerpc/tlsopt3_32.d
++++ binutils-2.22/ld/testsuite/ld-powerpc/tlsopt3_32.d
+@@ -9,17 +9,17 @@
+ Disassembly of section \.text:
+-0+1800094 <__tls_get_addr>:
+- 1800094:     4e 80 00 20     blr
++0+18000[0-9a-f]{2} <__tls_get_addr>:
++ 18000[0-9a-f]{2}:    4e 80 00 20     blr
+ Disassembly of section \.no_opt3:
+-0+1800098 <\.no_opt3>:
+- 1800098:     38 6d ff ec     addi    r3,r13,-20
+- 180009c:     48 00 00 0c     b       .*
+- 18000a0:     38 6d ff f4     addi    r3,r13,-12
+- 18000a4:     48 00 00 0c     b       .*
+- 18000a8:     4b ff ff ed     bl      1800094 <__tls_get_addr>
+- 18000ac:     48 00 00 08     b       .*
+- 18000b0:     4b ff ff e5     bl      1800094 <__tls_get_addr>
++0+18000[0-9a-f]{2} <\.no_opt3>:
++ 18000[0-9a-f]{2}:    38 6d ff ec     addi    r3,r13,-20
++ 18000[0-9a-f]{2}:    48 00 00 0c     b       .*
++ 18000[0-9a-f]{2}:    38 6d ff f4     addi    r3,r13,-12
++ 18000[0-9a-f]{2}:    48 00 00 0c     b       .*
++ 18000[0-9a-f]{2}:    4b ff ff ed     bl      18000[0-9a-f]{2} <__tls_get_addr>
++ 18000[0-9a-f]{2}:    48 00 00 08     b       .*
++ 18000[0-9a-f]{2}:    4b ff ff e5     bl      18000[0-9a-f]{2} <__tls_get_addr>
+ #pass
+--- binutils-2.22/ld/testsuite/ld-powerpc/tlsopt4.d
++++ binutils-2.22/ld/testsuite/ld-powerpc/tlsopt4.d
+@@ -9,40 +9,40 @@
+ Disassembly of section \.text:
+-0+100000e8 <\.__tls_get_addr>:
+-    100000e8: 4e 80 00 20     blr
++0+10000[0-9a-f]{3} <\.__tls_get_addr>:
++    10000[0-9a-f]{3}: 4e 80 00 20     blr
+ Disassembly of section \.opt1:
+-0+100000ec <\.opt1>:
+-    100000ec: 3c 6d 00 00     addis   r3,r13,0
+-    100000f0: 2c 24 00 00     cmpdi   r4,0
+-    100000f4: 41 82 00 10     beq-    .*
+-    100000f8: 60 00 00 00     nop
+-    100000fc: 38 63 90 10     addi    r3,r3,-28656
+-    10000100: 48 00 00 0c     b       .*
+-    10000104: 60 00 00 00     nop
+-    10000108: 38 63 90 10     addi    r3,r3,-28656
++0+10000[0-9a-f]{3} <\.opt1>:
++    10000[0-9a-f]{3}: 3c 6d 00 00     addis   r3,r13,0
++    10000[0-9a-f]{3}: 2c 24 00 00     cmpdi   r4,0
++    10000[0-9a-f]{3}: 41 82 00 10     beq-    .*
++    10000[0-9a-f]{3}: 60 00 00 00     nop
++    10000[0-9a-f]{3}: 38 63 90 10     addi    r3,r3,-28656
++    10000[0-9a-f]{3}: 48 00 00 0c     b       .*
++    10000[0-9a-f]{3}: 60 00 00 00     nop
++    10000[0-9a-f]{3}: 38 63 90 10     addi    r3,r3,-28656
+ Disassembly of section \.opt2:
+-0+1000010c <\.opt2>:
+-    1000010c: 3c 6d 00 00     addis   r3,r13,0
+-    10000110: 2c 24 00 00     cmpdi   r4,0
+-    10000114: 41 82 00 08     beq-    .*
+-    10000118: 3c 6d 00 00     addis   r3,r13,0
+-    1000011c: 60 00 00 00     nop
+-    10000120: 38 63 90 10     addi    r3,r3,-28656
++0+10000[0-9a-f]{3} <\.opt2>:
++    10000[0-9a-f]{3}: 3c 6d 00 00     addis   r3,r13,0
++    10000[0-9a-f]{3}: 2c 24 00 00     cmpdi   r4,0
++    10000[0-9a-f]{3}: 41 82 00 08     beq-    .*
++    10000[0-9a-f]{3}: 3c 6d 00 00     addis   r3,r13,0
++    10000[0-9a-f]{3}: 60 00 00 00     nop
++    10000[0-9a-f]{3}: 38 63 90 10     addi    r3,r3,-28656
+ Disassembly of section \.opt3:
+-0+10000124 <\.opt3>:
+-    10000124: 3c 6d 00 00     addis   r3,r13,0
+-    10000128: 48 00 00 0c     b       .*
+-    1000012c: 3c 6d 00 00     addis   r3,r13,0
+-    10000130: 48 00 00 10     b       .*
+-    10000134: 60 00 00 00     nop
+-    10000138: 38 63 90 10     addi    r3,r3,-28656
+-    1000013c: 48 00 00 0c     b       .*
+-    10000140: 60 00 00 00     nop
+-    10000144: 38 63 90 08     addi    r3,r3,-28664
++0+10000[0-9a-f]{3} <\.opt3>:
++    10000[0-9a-f]{3}: 3c 6d 00 00     addis   r3,r13,0
++    10000[0-9a-f]{3}: 48 00 00 0c     b       .*
++    10000[0-9a-f]{3}: 3c 6d 00 00     addis   r3,r13,0
++    10000[0-9a-f]{3}: 48 00 00 10     b       .*
++    10000[0-9a-f]{3}: 60 00 00 00     nop
++    10000[0-9a-f]{3}: 38 63 90 10     addi    r3,r3,-28656
++    10000[0-9a-f]{3}: 48 00 00 0c     b       .*
++    10000[0-9a-f]{3}: 60 00 00 00     nop
++    10000[0-9a-f]{3}: 38 63 90 08     addi    r3,r3,-28664
+--- binutils-2.22/ld/testsuite/ld-powerpc/tlsopt4_32.d
++++ binutils-2.22/ld/testsuite/ld-powerpc/tlsopt4_32.d
+@@ -9,36 +9,36 @@
+ Disassembly of section \.text:
+-0+1800094 <__tls_get_addr>:
+- 1800094:     4e 80 00 20     blr
++0+18000[0-9a-f]{2} <__tls_get_addr>:
++ 18000[0-9a-f]{2}:    4e 80 00 20     blr
+ Disassembly of section \.opt1:
+-0+1800098 <\.opt1>:
+- 1800098:     3c 62 00 00     addis   r3,r2,0
+- 180009c:     2c 04 00 00     cmpwi   r4,0
+- 18000a0:     41 82 00 0c     beq-    .*
+- 18000a4:     38 63 90 10     addi    r3,r3,-28656
+- 18000a8:     48 00 00 08     b       .*
+- 18000ac:     38 63 90 10     addi    r3,r3,-28656
++0+18000[0-9a-f]{2} <\.opt1>:
++ 18000[0-9a-f]{2}:    3c 62 00 00     addis   r3,r2,0
++ 18000[0-9a-f]{2}:    2c 04 00 00     cmpwi   r4,0
++ 18000[0-9a-f]{2}:    41 82 00 0c     beq-    .*
++ 18000[0-9a-f]{2}:    38 63 90 10     addi    r3,r3,-28656
++ 18000[0-9a-f]{2}:    48 00 00 08     b       .*
++ 18000[0-9a-f]{2}:    38 63 90 10     addi    r3,r3,-28656
+ Disassembly of section \.opt2:
+-0+18000b0 <\.opt2>:
+- 18000b0:     3c 62 00 00     addis   r3,r2,0
+- 18000b4:     2c 04 00 00     cmpwi   r4,0
+- 18000b8:     41 82 00 08     beq-    .*
+- 18000bc:     3c 62 00 00     addis   r3,r2,0
+- 18000c0:     38 63 90 10     addi    r3,r3,-28656
++0+18000[0-9a-f]{2} <\.opt2>:
++ 18000[0-9a-f]{2}:    3c 62 00 00     addis   r3,r2,0
++ 18000[0-9a-f]{2}:    2c 04 00 00     cmpwi   r4,0
++ 18000[0-9a-f]{2}:    41 82 00 08     beq-    .*
++ 18000[0-9a-f]{2}:    3c 62 00 00     addis   r3,r2,0
++ 18000[0-9a-f]{2}:    38 63 90 10     addi    r3,r3,-28656
+ Disassembly of section \.opt3:
+-0+18000c4 <\.opt3>:
+- 18000c4:     3c 62 00 00     addis   r3,r2,0
+- 18000c8:     48 00 00 0c     b       .*
+- 18000cc:     3c 62 00 00     addis   r3,r2,0
+- 18000d0:     48 00 00 0c     b       .*
+- 18000d4:     38 63 90 10     addi    r3,r3,-28656
+- 18000d8:     48 00 00 08     b       .*
+- 18000dc:     38 63 90 08     addi    r3,r3,-28664
++0+18000[0-9a-f]{2} <\.opt3>:
++ 18000[0-9a-f]{2}:    3c 62 00 00     addis   r3,r2,0
++ 18000[0-9a-f]{2}:    48 00 00 0c     b       .*
++ 18000[0-9a-f]{2}:    3c 62 00 00     addis   r3,r2,0
++ 18000[0-9a-f]{2}:    48 00 00 0c     b       .*
++ 18000[0-9a-f]{2}:    38 63 90 10     addi    r3,r3,-28656
++ 18000[0-9a-f]{2}:    48 00 00 08     b       .*
++ 18000[0-9a-f]{2}:    38 63 90 08     addi    r3,r3,-28664
+ #pass
+--- binutils-2.22/ld/testsuite/ld-powerpc/tlsso32.d
++++ binutils-2.22/ld/testsuite/ld-powerpc/tlsso32.d
+@@ -42,5 +42,5 @@ Disassembly of section \.got:
+ .* <\.got>:
+       \.\.\.
+ .*:   4e 80 00 21     blrl
+-.*:   00 01 03 ec     .*
++.*:   00 01 [0-9a-f]{2} [0-9a-f]{2}   .*
+       \.\.\.
+--- binutils-2.22/ld/testsuite/ld-powerpc/tlsso32.g
++++ binutils-2.22/ld/testsuite/ld-powerpc/tlsso32.g
+@@ -9,5 +9,5 @@
+ Contents of section \.got:
+ .* 00000000 00000000 00000000 00000000  .*
+ .* 00000000 00000000 00000000 00000000  .*
+-.* 00000000 4e800021 000103ec 00000000  .*
++.* 00000000 4e800021 00010[0-9a-f]{3} 00000000  .*
+ .* 00000000                             .*
+--- binutils-2.22/ld/testsuite/ld-powerpc/tlsso32.r
++++ binutils-2.22/ld/testsuite/ld-powerpc/tlsso32.r
+@@ -35,6 +35,7 @@ Program Headers:
+  +LOAD .* RWE 0x10000
+  +DYNAMIC .* RW +0x4
+  +TLS .* 0x0+1c 0x0+38 R +0x4
++ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+  Section to Segment mapping:
+  +Segment Sections\.\.\.
+@@ -42,6 +43,7 @@ Program Headers:
+  +01 +\.tdata \.dynamic \.got \.plt 
+  +02 +\.dynamic 
+  +03 +\.tdata \.tbss 
++ +04 +
+ Relocation section '\.rela\.dyn' at offset 0x[0-9a-f]+ contains 18 entries:
+  Offset +Info +Type +Sym\. Value +Symbol's Name \+ Addend
+@@ -52,9 +54,9 @@ Relocation section '\.rela\.dyn' at offset 0x[0-9a-f]+ contains 18 entries:
+ [0-9a-f ]+R_PPC_TPREL16 +0+30 +le0 \+ 0
+ [0-9a-f ]+R_PPC_TPREL16_HA +0+34 +le1 \+ 0
+ [0-9a-f ]+R_PPC_TPREL16_LO +0+34 +le1 \+ 0
+-[0-9a-f ]+R_PPC_TPREL16 +0+103d0 +\.tdata \+ 103e4
+-[0-9a-f ]+R_PPC_TPREL16_HA +0+103d0 +\.tdata \+ 103e8
+-[0-9a-f ]+R_PPC_TPREL16_LO +0+103d0 +\.tdata \+ 103e8
++[0-9a-f ]+R_PPC_TPREL16 +0+103[df]0 +\.tdata \+ 10[0-9a-f]{3}
++[0-9a-f ]+R_PPC_TPREL16_HA +0+103[df]0 +\.tdata \+ 10[0-9a-f]{3}
++[0-9a-f ]+R_PPC_TPREL16_LO +0+103[df]0 +\.tdata \+ 10[0-9a-f]{3}
+ [0-9a-f ]+R_PPC_DTPMOD32 +0+
+ [0-9a-f ]+R_PPC_DTPREL32 +0+
+ [0-9a-f ]+R_PPC_DTPMOD32 +0+
+--- binutils-2.22/ld/testsuite/ld-powerpc/tlstoc.g
++++ binutils-2.22/ld/testsuite/ld-powerpc/tlstoc.g
+@@ -8,8 +8,8 @@
+ .*: +file format elf64-powerpc
+ Contents of section \.got:
+- 100101a0 00000000 00000001 00000000 00000000  .*
+- 100101b0 00000000 00000001 00000000 00000000  .*
+- 100101c0 00000000 00000001 00000000 00000000  .*
+- 100101d0 00000000 00000001 00000000 00000000  .*
+- 100101e0 ffffffff ffff8060 00000000 00000000  .*
++ 10010[0-9a-f]{3} 00000000 00000001 00000000 00000000  .*
++ 10010[0-9a-f]{3} 00000000 00000001 00000000 00000000  .*
++ 10010[0-9a-f]{3} 00000000 00000001 00000000 00000000  .*
++ 10010[0-9a-f]{3} 00000000 00000001 00000000 00000000  .*
++ 10010[0-9a-f]{3} ffffffff ffff8060 00000000 00000000  .*
+--- binutils-2.22/ld/testsuite/ld-powerpc/tlstoc.t
++++ binutils-2.22/ld/testsuite/ld-powerpc/tlstoc.t
+@@ -8,7 +8,7 @@
+ .*: +file format elf64-powerpc
+ Contents of section \.tdata:
+- 10010148 00c0ffee 00000000 12345678 9abcdef0  .*
+- 10010158 23456789 abcdef01 3456789a bcdef012  .*
+- 10010168 456789ab cdef0123 56789abc def01234  .*
+- 10010178 6789abcd ef012345 789abcde f0123456  .*
++ 10010180 00c0ffee 00000000 12345678 9abcdef0  .*
++ 10010190 23456789 abcdef01 3456789a bcdef012  .*
++ 100101a0 456789ab cdef0123 56789abc def01234  .*
++ 100101b0 6789abcd ef012345 789abcde f0123456  .*
+--- binutils-2.22/ld/testsuite/ld-powerpc/tlstocso.g
++++ binutils-2.22/ld/testsuite/ld-powerpc/tlstocso.g
+@@ -7,7 +7,7 @@
+ .*: +file format elf64-powerpc
+ Contents of section \.got:
+-.* 00000000 000186c0 00000000 00000000  .*
++.* 00000000 000186f8 00000000 00000000  .*
+ .* 00000000 00000000 00000000 00000000  .*
+ .* 00000000 00000000 00000000 00000000  .*
+ .* 00000000 00000000 00000000 00000000  .*
+--- binutils-2.22/ld/testsuite/ld-s390/tlsbin.rd
++++ binutils-2.22/ld/testsuite/ld-s390/tlsbin.rd
+@@ -36,13 +36,14 @@ There are [0-9]+ program headers, starting at offset [0-9]+
+ Program Headers:
+  +Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align
+- +PHDR +0x0+34 0x0+400034 0x0+400034 0x0+c0 0x0+c0 R E 0x4
+- +INTERP +0x0+f4 0x0+4000f4 0x0+4000f4 0x0+11 0x0+11 R +0x1
++ +PHDR +0x0+34 0x0+400034 0x0+400034 0x0+e0 0x0+e0 R E 0x4
++ +INTERP +0x0+114 0x0+400114 0x0+400114 0x0+11 0x0+11 R +0x1
+ .*Requesting program interpreter.*
+  +LOAD .* R E 0x1000
+  +LOAD .* RW +0x1000
+  +DYNAMIC .* RW +0x4
+  +TLS .* 0x0+60 0x0+a0 R +0x20
++ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+  Section to Segment mapping:
+  +Segment Sections...
+@@ -52,6 +53,7 @@ Program Headers:
+  +03 +.tdata .dynamic .got *
+  +04 +.dynamic *
+  +05 +.tdata .tbss *
++ +06 +
+ Relocation section '.rela.dyn' at offset .* contains 4 entries:
+  Offset +Info +Type +Sym.Value +Sym. Name \+ Addend
+--- binutils-2.22/ld/testsuite/ld-s390/tlsbin_64.rd
++++ binutils-2.22/ld/testsuite/ld-s390/tlsbin_64.rd
+@@ -36,13 +36,14 @@ There are [0-9]+ program headers, starting at offset [0-9]+
+ Program Headers:
+  +Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align
+- +PHDR +0x0+40 0x0+80000040 0x0+80000040 0x0+150 0x0+150 R E 0x8
+- +INTERP +0x0+190 0x0+80000190 0x0+80000190 0x0+11 0x0+11 R +0x1
++ +PHDR +0x0+40 0x0+80000040 0x0+80000040 0x0+188 0x0+188 R E 0x8
++ +INTERP +0x0+1c8 0x0+800001c8 0x0+800001c8 0x0+11 0x0+11 R +0x1
+ .*Requesting program interpreter.*
+  +LOAD .* R E 0x1000
+  +LOAD .* RW +0x1000
+  +DYNAMIC .* RW +0x8
+  +TLS .* 0x0+60 0x0+a0 R +0x20
++ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+  Section to Segment mapping:
+  +Segment Sections...
+@@ -52,6 +53,7 @@ Program Headers:
+  +03 +.tdata .dynamic .got *
+  +04 +.dynamic *
+  +05 +.tdata .tbss *
++ +06 +
+ Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 4 entries:
+  +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend
+--- binutils-2.22/ld/testsuite/ld-s390/tlspic.rd
++++ binutils-2.22/ld/testsuite/ld-s390/tlspic.rd
+@@ -39,6 +39,7 @@ Program Headers:
+  +LOAD .* RW +0x1000
+  +DYNAMIC .* RW +0x4
+  +TLS .* 0x0+60 0x0+80 R +0x20
++ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+  Section to Segment mapping:
+  +Segment Sections...
+@@ -46,6 +47,7 @@ Program Headers:
+  +01 +.tdata .dynamic .got 
+  +02 +.dynamic 
+  +03 +.tdata .tbss 
++ +04 +
+ Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries:
+  Offset +Info +Type +Sym.Value +Sym. Name \+ Addend
+--- binutils-2.22/ld/testsuite/ld-s390/tlspic_64.rd
++++ binutils-2.22/ld/testsuite/ld-s390/tlspic_64.rd
+@@ -39,6 +39,7 @@ Program Headers:
+  +LOAD .* RW +0x1000
+  +DYNAMIC .* RW +0x8
+  +TLS .* 0x0+60 0x0+80 R +0x20
++ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+  Section to Segment mapping:
+  +Segment Sections...
+@@ -46,6 +47,7 @@ Program Headers:
+  +01 +.tdata .dynamic .got *
+  +02 +.dynamic *
+  +03 +.tdata .tbss *
++ +04 +
+ Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries:
+  +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend
+--- binutils-2.22/ld/testsuite/ld-scripts/empty-aligned.d
++++ binutils-2.22/ld/testsuite/ld-scripts/empty-aligned.d
+@@ -8,7 +8,9 @@
+ Program Headers:
+  +Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg +Align
+  +LOAD +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ [RWE ]+ +0x[0-9a-f]+
++ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+  Section to Segment mapping:
+  +Segment Sections\.\.\.
+  +00 +.text 
++ +01 +
+--- binutils-2.22/ld/testsuite/ld-sh/tlsbin-2.d
++++ binutils-2.22/ld/testsuite/ld-sh/tlsbin-2.d
+@@ -44,6 +44,7 @@ Program Headers:
+  +LOAD.*
+  +DYNAMIC.*
+  +TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+18 0x0+28 R +0x4
++ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+  Section to Segment mapping:
+  +Segment Sections\.\.\.
+@@ -53,6 +54,7 @@ Program Headers:
+  +03 +\.tdata \.dynamic \.got *
+  +04 +\.dynamic *
+  +05 +\.tdata \.tbss *
++ +06 +
+ Relocation section '\.rela\.dyn' at offset 0x[0-9a-f]+ contains 4 entries:
+  Offset +Info +Type +Sym\.Value +Sym\. Name \+ Addend
+--- binutils-2.22/ld/testsuite/ld-sh/tlspic-2.d
++++ binutils-2.22/ld/testsuite/ld-sh/tlspic-2.d
+@@ -32,7 +32,7 @@ Key to Flags:
+ Elf file type is DYN \(Shared object file\)
+ Entry point 0x[0-9a-f]+
+-There are 4 program headers, starting at offset [0-9]+
++There are [0-9] program headers, starting at offset [0-9]+
+ Program Headers:
+  +Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align
+@@ -40,6 +40,7 @@ Program Headers:
+  +LOAD.*
+  +DYNAMIC.*
+  +TLS .* 0x0+18 0x0+20 R +0x4
++ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+  Section to Segment mapping:
+  +Segment Sections\.\.\.
+@@ -47,6 +48,7 @@ Program Headers:
+  +01 +\.tdata \.dynamic \.got *
+  +02 +\.dynamic *
+  +03 +\.tdata \.tbss *
++ +04 +
+ Relocation section '\.rela\.dyn' at offset 0x[0-9a-f]+ contains 10 entries:
+  Offset +Info +Type +Sym\.Value +Sym\. Name \+ Addend
+--- binutils-2.22/ld/testsuite/ld-sparc/gotop32.rd
++++ binutils-2.22/ld/testsuite/ld-sparc/gotop32.rd
+@@ -31,6 +31,7 @@ Program Headers:
+  +LOAD +0x0+ 0x0+ 0x0+ 0x0+2000 0x0+2000 R E 0x10000
+  +LOAD +0x0+2000 0x0+12000 0x0+12000 0x0+2000 0x0+2000 RW +0x10000
+  +DYNAMIC +0x0+2000 0x0+12000 0x0+12000 0x0+70 0x0+70 RW +0x4
++ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+ #...
+ Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 1 entries:
+--- binutils-2.22/ld/testsuite/ld-sparc/gotop64.rd
++++ binutils-2.22/ld/testsuite/ld-sparc/gotop64.rd
+@@ -31,6 +31,7 @@ Program Headers:
+  +LOAD +0x0+ 0x0+ 0x0+ 0x0+2000 0x0+2000 R E 0x100000
+  +LOAD +0x0+2000 0x0+102000 0x0+102000 0x0+2000 0x0+2000 RW +0x100000
+  +DYNAMIC +0x0+2000 0x0+102000 0x0+102000 0x0+e0 0x0+e0 RW +0x8
++ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+ #...
+ Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 1 entries:
+--- binutils-2.22/ld/testsuite/ld-sparc/tlssunbin32.rd
++++ binutils-2.22/ld/testsuite/ld-sparc/tlssunbin32.rd
+@@ -30,13 +30,14 @@ There are [0-9]+ program headers, starting at offset [0-9]+
+ Program Headers:
+  +Type +Offset +VirtAddr +PhysAddr +FileSiz MemSiz +Flg Align
+- +PHDR +0x0+34 0x0+10034 0x0+10034 0x0+c0 0x0+c0 R E 0x4
+- +INTERP +0x0+f4 0x0+100f4 0x0+100f4 0x0+11 0x0+11 R +0x1
++ +PHDR +0x0+34 0x0+10034 0x0+10034 (0x[0-9a-f]+) \1 R E 0x4
++ +INTERP +(0x[0-9a-f]+ ){3}0x0+11 0x0+11 R +0x1
+ .*Requesting program interpreter.*
+  +LOAD .* R E 0x10000
+  +LOAD .* RW +0x10000
+  +DYNAMIC .* RW +0x4
+  +TLS .* 0x0+1060 0x0+10a0 R +0x4
++ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+ #...
+ Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 4 entries:
+--- binutils-2.22/ld/testsuite/ld-sparc/tlssunbin64.rd
++++ binutils-2.22/ld/testsuite/ld-sparc/tlssunbin64.rd
+@@ -30,13 +30,14 @@ There are [0-9]+ program headers, starting at offset [0-9]+
+ Program Headers:
+  +Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align
+- +PHDR +0x0+40 0x0+100040 0x0+100040 0x0+150 0x0+150 R E 0x8
+- +INTERP +0x0+190 0x0+100190 0x0+100190 0x0+19 0x0+19 R +0x1
++ +PHDR +0x0+40 0x0+100040 0x0+100040 (0x[0-9a-f]+) \1 R E 0x8
++ +INTERP +0x0+([0-9a-f]+) (0x0+10+\1) \2 0x0+19 0x0+19 R +0x1
+ .*Requesting program interpreter.*
+  +LOAD .* R E 0x100000
+  +LOAD .* RW +0x100000
+  +DYNAMIC .* RW +0x8
+  +TLS .* 0x0+60 0x0+a0 R +0x4
++ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+ #...
+ Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 4 entries:
+--- binutils-2.22/ld/testsuite/ld-sparc/tlssunnopic32.rd
++++ binutils-2.22/ld/testsuite/ld-sparc/tlssunnopic32.rd
+@@ -32,6 +32,7 @@ Program Headers:
+  +LOAD .* RW +0x10000
+  +DYNAMIC .* RW +0x4
+  +TLS .* 0x0+ 0x0+24 R +0x4
++ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+ #...
+ Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 12 entries:
+--- binutils-2.22/ld/testsuite/ld-sparc/tlssunnopic64.rd
++++ binutils-2.22/ld/testsuite/ld-sparc/tlssunnopic64.rd
+@@ -32,6 +32,7 @@ Program Headers:
+  +LOAD .* RW +0x100000
+  +DYNAMIC .* RW +0x8
+  +TLS .* 0x0+ 0x0+24 R +0x4
++ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+ #...
+ Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries:
+--- binutils-2.22/ld/testsuite/ld-sparc/tlssunpic32.rd
++++ binutils-2.22/ld/testsuite/ld-sparc/tlssunpic32.rd
+@@ -36,6 +36,7 @@ Program Headers:
+  +LOAD +0x0+2000 0x0+12000 0x0+12000 0x0+184 0x0+184 RWE 0x10000
+  +DYNAMIC +0x0+2060 0x0+12060 0x0+12060 0x0+98 0x0+98 RW +0x4
+  +TLS +0x0+2000 0x0+12000 0x0+12000 0x0+60 0x0+80 R +0x4
++ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+ #...
+ Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries:
+--- binutils-2.22/ld/testsuite/ld-sparc/tlssunpic64.rd
++++ binutils-2.22/ld/testsuite/ld-sparc/tlssunpic64.rd
+@@ -36,6 +36,7 @@ Program Headers:
+  +LOAD +0x0+2000 0x0+102000 0x0+102000 0x0+3a0 0x0+3a0 RWE 0x100000
+  +DYNAMIC +0x0+2060 0x0+102060 0x0+102060 0x0+130 0x0+130 RW +0x8
+  +TLS +0x0+2000 0x0+102000 0x0+102000 0x0+60 0x0+80 R +0x4
++ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+ #...
+ Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries:
+--- binutils-2.22/ld/testsuite/ld-x86-64/protected3.d
++++ binutils-2.22/ld/testsuite/ld-x86-64/protected3.d
+@@ -8,6 +8,6 @@
+ Disassembly of section .text:
+ 0+[a-f0-9]+ <bar>:
+-[     ]*[a-f0-9]+:    8b 05 [a-f0-9][a-f0-9] 00 [a-f0-9][a-f0-9] 00           mov    0x[a-f0-9]+\(%rip\),%eax        # [a-f0-9]+ <foo>
++[     ]*[a-f0-9]+:    8b 05 [a-f0-9][a-f0-9] [a-f0-9][a-f0-9] [a-f0-9][a-f0-9] 00     mov    0x[a-f0-9]+\(%rip\),%eax        # [a-f0-9]+ <foo>
+ [     ]*[a-f0-9]+:    c3                      retq   
+ #pass
+--- binutils-2.22/ld/testsuite/ld-x86-64/tlsgdesc.rd
++++ binutils-2.22/ld/testsuite/ld-x86-64/tlsgdesc.rd
+@@ -36,12 +36,14 @@ Program Headers:
+  +LOAD.*
+  +LOAD.*
+  +DYNAMIC.*
++ +PAX_FLAGS.*
+  Section to Segment mapping:
+  +Segment Sections...
+  +00 +.hash .dynsym .dynstr .rela.dyn .rela.plt .plt .text *
+  +01 +.dynamic .got .got.plt *
+  +02 +.dynamic *
++ +03 +
+ Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 8 entries:
+  +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend
+--- binutils-2.22/ld/testsuite/ld-x86-64/tlspic.rd
++++ binutils-2.22/ld/testsuite/ld-x86-64/tlspic.rd
+@@ -40,6 +40,7 @@ Program Headers:
+  +LOAD +0x0+11ac 0x0+2011ac 0x0+2011ac 0x0+244 0x0+244 RW +0x200000
+  +DYNAMIC +0x0+1210 0x0+201210 0x0+201210 0x0+130 0x0+130 RW +0x8
+  +TLS +0x0+11ac 0x0+2011ac 0x0+2011ac 0x0+60 0x0+80 R +0x1
++ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+  Section to Segment mapping:
+  +Segment Sections...
+@@ -47,6 +48,7 @@ Program Headers:
+  +01 +.tdata .dynamic .got .got.plt *
+  +02 +.dynamic *
+  +03 +.tdata .tbss *
++ +04 +
+ Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries:
+  +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend
diff --git a/src/patches/bridge-utils-1.5-compile-fix-1.patch b/src/patches/bridge-utils-1.5-compile-fix-1.patch
new file mode 100644 (file)
index 0000000..c269608
--- /dev/null
@@ -0,0 +1,31 @@
+From 5eebb7f9288b7881ffb929b1fd494fe3ac3be27d Mon Sep 17 00:00:00 2001
+From: Russell Senior <russell@personaltelco.net>
+Date: Wed, 06 Mar 2013 20:49:42 +0000
+Subject: bridge-utils: Fix compile against linux-3.8.x
+
+Linux 3.8 has a header, include/uapi/linux/if_bridge.h that uses a
+struct in6_addr but doesn't define it.  The trivial seeming fix of
+including the header that does define it causes more problems.  The
+problem was discussed on mailing lists in January 2013.  The final
+suggestion I found was here:
+
+      http://www.redhat.com/archives/libvir-list/2013-January/msg01253.html
+
+This is intended to implement that suggestion.
+
+Signed-off-by: Russell Senior <russell@personaltelco.net>
+---
+diff --git a/libbridge/libbridge.h b/libbridge/libbridge.h
+index 39964f2..dd14bae 100644
+--- a/libbridge/libbridge.h
++++ b/libbridge/libbridge.h
+@@ -20,6 +20,7 @@
+ #define _LIBBRIDGE_H
+ #include <sys/socket.h>
++#include <netinet/in.h>
+ #include <linux/if.h>
+ #include <linux/if_bridge.h>
+--
+cgit v0.9.2
index a05ae041efaab9576b4829392f6c155310c1805c..0ae413fb10a89729d9cf5673753d0e04ce3e92ee 100644 (file)
@@ -1,34 +1,53 @@
-Submitted By: Matthew Burgess <matthew at linuxfromscratch dot org>
-Date: 2005-10-23
-Initial Package Version: 5.92
+Submitted By: Robert Connolly <robert@linuxfromscratch.org> (ashes)
+Date: 2005-11-13
+Initial Package Version: 5.93
 Upstream Status: pending
-Origin: Scot McPherson
-Description: Fix the output of uname once and for all.
+Origin: Scot McPherson and Zack Winkles
+Description: Fix the output of uname once and for all. This is the position independent
+version.
 
-       $ uname -m      # This always worked.
+       $ uname -m      # This always worked.
        i686
-       $ uname -i      # Used to report 'unknown'.
+       $ uname -i      # Used to report 'unknown'.
        i386
-       $ uname -p      # Likewise.
+       $ uname -p      # Likewise.
        athlon-4
 
-diff -Naur coreutils-5.92.orig/src/uname.c coreutils-5.92/src/uname.c
---- coreutils-5.92.orig/src/uname.c    2005-09-15 20:34:42.000000000 +0000
-+++ coreutils-5.92/src/uname.c 2005-10-23 10:14:06.000000000 +0000
-@@ -29,6 +29,12 @@
+Now 'uname -p' can be used by GCC's mtune/mcpu and march options. For example:
+
+       CFLAGS="-march=$(uname -m) -mtune=$(uname -p)"
+
+diff -Naur coreutils-5.93.orig/src/uname.c coreutils-5.93/src/uname.c
+--- coreutils-5.93.orig/src/uname.c    2005-09-15 19:57:04.000000000 +0000
++++ coreutils-5.93/src/uname.c 2005-11-13 19:18:35.000000000 +0000
+@@ -29,6 +29,26 @@
  # include <sys/systeminfo.h>
  #endif
  
 +#ifdef linux
-+#define cpuid(in,a,b,c,d)\
-+  asm("cpuid": "=a" (a), "=b" (b), "=c" (c), "=d" (d) : "a" (in));
++/* Thanks to the ffmpeg team for this PIC version of cpuid() */
++#ifdef ARCH_X86_64
++#  define REG_b "rbx"
++#  define REG_S "rsi"
++#else
++#  define REG_b "ebx"
++#  define REG_S "esi"
++#endif
++#define cpuid(index,eax,ebx,ecx,edx)\
++      __asm __volatile\
++        ("mov %%"REG_b", %%"REG_S"\n\t"\
++        "cpuid\n\t"\
++        "xchg %%"REG_b", %%"REG_S\
++        : "=a" (eax), "=S" (ebx),\
++        "=c" (ecx), "=d" (edx)\
++        : "0" (index));
 +int has_sse( void );
 +#endif
 +
  #if HAVE_SYS_SYSCTL_H
  # if HAVE_SYS_PARAM_H
  #  include <sys/param.h> /* needed for OpenBSD 3.0 */
-@@ -256,6 +262,96 @@
+@@ -256,6 +276,99 @@
        if (0 <= sysinfo (SI_ARCHITECTURE, processor, sizeof processor))
          element = processor;
        }
@@ -75,6 +94,9 @@ diff -Naur coreutils-5.92.orig/src/uname.c coreutils-5.92/src/uname.c
 +              element="pentium3";
 +            break;
 +          case 15: // Pentium4
++            if( model == 3 ) // Prescott
++                element="prescott";
++            else
 +            element="pentium4";
 +            break;
 +          default:
@@ -125,7 +147,7 @@ diff -Naur coreutils-5.92.orig/src/uname.c coreutils-5.92/src/uname.c
  #endif
  #ifdef UNAME_PROCESSOR
        if (element == unknown)
-@@ -293,7 +389,7 @@
+@@ -293,7 +406,7 @@
  
    if (toprint & PRINT_HARDWARE_PLATFORM)
      {
@@ -134,7 +156,7 @@ diff -Naur coreutils-5.92.orig/src/uname.c coreutils-5.92/src/uname.c
  #if HAVE_SYSINFO && defined SI_PLATFORM
        {
        static char hardware_platform[257];
-@@ -301,6 +397,15 @@
+@@ -301,6 +414,15 @@
                          hardware_platform, sizeof hardware_platform))
          element = hardware_platform;
        }
@@ -150,7 +172,7 @@ diff -Naur coreutils-5.92.orig/src/uname.c coreutils-5.92/src/uname.c
  #endif
  #ifdef UNAME_HARDWARE_PLATFORM
        if (element == unknown)
-@@ -323,3 +428,29 @@
+@@ -323,3 +445,29 @@
  
    exit (EXIT_SUCCESS);
  }
diff --git a/src/patches/fireinfo-2.1.7-testing.patch b/src/patches/fireinfo-2.1.7-testing.patch
new file mode 100644 (file)
index 0000000..7690454
--- /dev/null
@@ -0,0 +1,4358 @@
+diff --git a/.gitignore b/.gitignore
+index 0caee61..92aa5c5 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -1,2 +1,31 @@
+-build
++/Makefile
++/build-aux
++/libtool
++/missing
++/src/fireinfo/__init__.py
+ *.py[co]
++/*.tar.bz2
++/*.tar.gz
++/*.tar.xz
++*.log
++*.a
++*.cache
++*.gmo
++*.la
++*.lo
++*.o
++*.stamp
++*.trs
++*~
++.deps
++.dirstamp
++.libs
++Makefile.in
++aclocal.m4
++config.h
++config.h.in
++config.log
++config.status
++configure
++install-sh
++stamp-*
+diff --git a/COPYING b/COPYING
+new file mode 100644
+index 0000000..94a9ed0
+--- /dev/null
++++ b/COPYING
+@@ -0,0 +1,674 @@
++                    GNU GENERAL PUBLIC LICENSE
++                       Version 3, 29 June 2007
++
++ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
++ Everyone is permitted to copy and distribute verbatim copies
++ of this license document, but changing it is not allowed.
++
++                            Preamble
++
++  The GNU General Public License is a free, copyleft license for
++software and other kinds of works.
++
++  The licenses for most software and other practical works are designed
++to take away your freedom to share and change the works.  By contrast,
++the GNU General Public License is intended to guarantee your freedom to
++share and change all versions of a program--to make sure it remains free
++software for all its users.  We, the Free Software Foundation, use the
++GNU General Public License for most of our software; it applies also to
++any other work released this way by its authors.  You can apply it to
++your programs, too.
++
++  When we speak of free software, we are referring to freedom, not
++price.  Our General Public Licenses are designed to make sure that you
++have the freedom to distribute copies of free software (and charge for
++them if you wish), that you receive source code or can get it if you
++want it, that you can change the software or use pieces of it in new
++free programs, and that you know you can do these things.
++
++  To protect your rights, we need to prevent others from denying you
++these rights or asking you to surrender the rights.  Therefore, you have
++certain responsibilities if you distribute copies of the software, or if
++you modify it: responsibilities to respect the freedom of others.
++
++  For example, if you distribute copies of such a program, whether
++gratis or for a fee, you must pass on to the recipients the same
++freedoms that you received.  You must make sure that they, too, receive
++or can get the source code.  And you must show them these terms so they
++know their rights.
++
++  Developers that use the GNU GPL protect your rights with two steps:
++(1) assert copyright on the software, and (2) offer you this License
++giving you legal permission to copy, distribute and/or modify it.
++
++  For the developers' and authors' protection, the GPL clearly explains
++that there is no warranty for this free software.  For both users' and
++authors' sake, the GPL requires that modified versions be marked as
++changed, so that their problems will not be attributed erroneously to
++authors of previous versions.
++
++  Some devices are designed to deny users access to install or run
++modified versions of the software inside them, although the manufacturer
++can do so.  This is fundamentally incompatible with the aim of
++protecting users' freedom to change the software.  The systematic
++pattern of such abuse occurs in the area of products for individuals to
++use, which is precisely where it is most unacceptable.  Therefore, we
++have designed this version of the GPL to prohibit the practice for those
++products.  If such problems arise substantially in other domains, we
++stand ready to extend this provision to those domains in future versions
++of the GPL, as needed to protect the freedom of users.
++
++  Finally, every program is threatened constantly by software patents.
++States should not allow patents to restrict development and use of
++software on general-purpose computers, but in those that do, we wish to
++avoid the special danger that patents applied to a free program could
++make it effectively proprietary.  To prevent this, the GPL assures that
++patents cannot be used to render the program non-free.
++
++  The precise terms and conditions for copying, distribution and
++modification follow.
++
++                       TERMS AND CONDITIONS
++
++  0. Definitions.
++
++  "This License" refers to version 3 of the GNU General Public License.
++
++  "Copyright" also means copyright-like laws that apply to other kinds of
++works, such as semiconductor masks.
++
++  "The Program" refers to any copyrightable work licensed under this
++License.  Each licensee is addressed as "you".  "Licensees" and
++"recipients" may be individuals or organizations.
++
++  To "modify" a work means to copy from or adapt all or part of the work
++in a fashion requiring copyright permission, other than the making of an
++exact copy.  The resulting work is called a "modified version" of the
++earlier work or a work "based on" the earlier work.
++
++  A "covered work" means either the unmodified Program or a work based
++on the Program.
++
++  To "propagate" a work means to do anything with it that, without
++permission, would make you directly or secondarily liable for
++infringement under applicable copyright law, except executing it on a
++computer or modifying a private copy.  Propagation includes copying,
++distribution (with or without modification), making available to the
++public, and in some countries other activities as well.
++
++  To "convey" a work means any kind of propagation that enables other
++parties to make or receive copies.  Mere interaction with a user through
++a computer network, with no transfer of a copy, is not conveying.
++
++  An interactive user interface displays "Appropriate Legal Notices"
++to the extent that it includes a convenient and prominently visible
++feature that (1) displays an appropriate copyright notice, and (2)
++tells the user that there is no warranty for the work (except to the
++extent that warranties are provided), that licensees may convey the
++work under this License, and how to view a copy of this License.  If
++the interface presents a list of user commands or options, such as a
++menu, a prominent item in the list meets this criterion.
++
++  1. Source Code.
++
++  The "source code" for a work means the preferred form of the work
++for making modifications to it.  "Object code" means any non-source
++form of a work.
++
++  A "Standard Interface" means an interface that either is an official
++standard defined by a recognized standards body, or, in the case of
++interfaces specified for a particular programming language, one that
++is widely used among developers working in that language.
++
++  The "System Libraries" of an executable work include anything, other
++than the work as a whole, that (a) is included in the normal form of
++packaging a Major Component, but which is not part of that Major
++Component, and (b) serves only to enable use of the work with that
++Major Component, or to implement a Standard Interface for which an
++implementation is available to the public in source code form.  A
++"Major Component", in this context, means a major essential component
++(kernel, window system, and so on) of the specific operating system
++(if any) on which the executable work runs, or a compiler used to
++produce the work, or an object code interpreter used to run it.
++
++  The "Corresponding Source" for a work in object code form means all
++the source code needed to generate, install, and (for an executable
++work) run the object code and to modify the work, including scripts to
++control those activities.  However, it does not include the work's
++System Libraries, or general-purpose tools or generally available free
++programs which are used unmodified in performing those activities but
++which are not part of the work.  For example, Corresponding Source
++includes interface definition files associated with source files for
++the work, and the source code for shared libraries and dynamically
++linked subprograms that the work is specifically designed to require,
++such as by intimate data communication or control flow between those
++subprograms and other parts of the work.
++
++  The Corresponding Source need not include anything that users
++can regenerate automatically from other parts of the Corresponding
++Source.
++
++  The Corresponding Source for a work in source code form is that
++same work.
++
++  2. Basic Permissions.
++
++  All rights granted under this License are granted for the term of
++copyright on the Program, and are irrevocable provided the stated
++conditions are met.  This License explicitly affirms your unlimited
++permission to run the unmodified Program.  The output from running a
++covered work is covered by this License only if the output, given its
++content, constitutes a covered work.  This License acknowledges your
++rights of fair use or other equivalent, as provided by copyright law.
++
++  You may make, run and propagate covered works that you do not
++convey, without conditions so long as your license otherwise remains
++in force.  You may convey covered works to others for the sole purpose
++of having them make modifications exclusively for you, or provide you
++with facilities for running those works, provided that you comply with
++the terms of this License in conveying all material for which you do
++not control copyright.  Those thus making or running the covered works
++for you must do so exclusively on your behalf, under your direction
++and control, on terms that prohibit them from making any copies of
++your copyrighted material outside their relationship with you.
++
++  Conveying under any other circumstances is permitted solely under
++the conditions stated below.  Sublicensing is not allowed; section 10
++makes it unnecessary.
++
++  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
++
++  No covered work shall be deemed part of an effective technological
++measure under any applicable law fulfilling obligations under article
++11 of the WIPO copyright treaty adopted on 20 December 1996, or
++similar laws prohibiting or restricting circumvention of such
++measures.
++
++  When you convey a covered work, you waive any legal power to forbid
++circumvention of technological measures to the extent such circumvention
++is effected by exercising rights under this License with respect to
++the covered work, and you disclaim any intention to limit operation or
++modification of the work as a means of enforcing, against the work's
++users, your or third parties' legal rights to forbid circumvention of
++technological measures.
++
++  4. Conveying Verbatim Copies.
++
++  You may convey verbatim copies of the Program's source code as you
++receive it, in any medium, provided that you conspicuously and
++appropriately publish on each copy an appropriate copyright notice;
++keep intact all notices stating that this License and any
++non-permissive terms added in accord with section 7 apply to the code;
++keep intact all notices of the absence of any warranty; and give all
++recipients a copy of this License along with the Program.
++
++  You may charge any price or no price for each copy that you convey,
++and you may offer support or warranty protection for a fee.
++
++  5. Conveying Modified Source Versions.
++
++  You may convey a work based on the Program, or the modifications to
++produce it from the Program, in the form of source code under the
++terms of section 4, provided that you also meet all of these conditions:
++
++    a) The work must carry prominent notices stating that you modified
++    it, and giving a relevant date.
++
++    b) The work must carry prominent notices stating that it is
++    released under this License and any conditions added under section
++    7.  This requirement modifies the requirement in section 4 to
++    "keep intact all notices".
++
++    c) You must license the entire work, as a whole, under this
++    License to anyone who comes into possession of a copy.  This
++    License will therefore apply, along with any applicable section 7
++    additional terms, to the whole of the work, and all its parts,
++    regardless of how they are packaged.  This License gives no
++    permission to license the work in any other way, but it does not
++    invalidate such permission if you have separately received it.
++
++    d) If the work has interactive user interfaces, each must display
++    Appropriate Legal Notices; however, if the Program has interactive
++    interfaces that do not display Appropriate Legal Notices, your
++    work need not make them do so.
++
++  A compilation of a covered work with other separate and independent
++works, which are not by their nature extensions of the covered work,
++and which are not combined with it such as to form a larger program,
++in or on a volume of a storage or distribution medium, is called an
++"aggregate" if the compilation and its resulting copyright are not
++used to limit the access or legal rights of the compilation's users
++beyond what the individual works permit.  Inclusion of a covered work
++in an aggregate does not cause this License to apply to the other
++parts of the aggregate.
++
++  6. Conveying Non-Source Forms.
++
++  You may convey a covered work in object code form under the terms
++of sections 4 and 5, provided that you also convey the
++machine-readable Corresponding Source under the terms of this License,
++in one of these ways:
++
++    a) Convey the object code in, or embodied in, a physical product
++    (including a physical distribution medium), accompanied by the
++    Corresponding Source fixed on a durable physical medium
++    customarily used for software interchange.
++
++    b) Convey the object code in, or embodied in, a physical product
++    (including a physical distribution medium), accompanied by a
++    written offer, valid for at least three years and valid for as
++    long as you offer spare parts or customer support for that product
++    model, to give anyone who possesses the object code either (1) a
++    copy of the Corresponding Source for all the software in the
++    product that is covered by this License, on a durable physical
++    medium customarily used for software interchange, for a price no
++    more than your reasonable cost of physically performing this
++    conveying of source, or (2) access to copy the
++    Corresponding Source from a network server at no charge.
++
++    c) Convey individual copies of the object code with a copy of the
++    written offer to provide the Corresponding Source.  This
++    alternative is allowed only occasionally and noncommercially, and
++    only if you received the object code with such an offer, in accord
++    with subsection 6b.
++
++    d) Convey the object code by offering access from a designated
++    place (gratis or for a charge), and offer equivalent access to the
++    Corresponding Source in the same way through the same place at no
++    further charge.  You need not require recipients to copy the
++    Corresponding Source along with the object code.  If the place to
++    copy the object code is a network server, the Corresponding Source
++    may be on a different server (operated by you or a third party)
++    that supports equivalent copying facilities, provided you maintain
++    clear directions next to the object code saying where to find the
++    Corresponding Source.  Regardless of what server hosts the
++    Corresponding Source, you remain obligated to ensure that it is
++    available for as long as needed to satisfy these requirements.
++
++    e) Convey the object code using peer-to-peer transmission, provided
++    you inform other peers where the object code and Corresponding
++    Source of the work are being offered to the general public at no
++    charge under subsection 6d.
++
++  A separable portion of the object code, whose source code is excluded
++from the Corresponding Source as a System Library, need not be
++included in conveying the object code work.
++
++  A "User Product" is either (1) a "consumer product", which means any
++tangible personal property which is normally used for personal, family,
++or household purposes, or (2) anything designed or sold for incorporation
++into a dwelling.  In determining whether a product is a consumer product,
++doubtful cases shall be resolved in favor of coverage.  For a particular
++product received by a particular user, "normally used" refers to a
++typical or common use of that class of product, regardless of the status
++of the particular user or of the way in which the particular user
++actually uses, or expects or is expected to use, the product.  A product
++is a consumer product regardless of whether the product has substantial
++commercial, industrial or non-consumer uses, unless such uses represent
++the only significant mode of use of the product.
++
++  "Installation Information" for a User Product means any methods,
++procedures, authorization keys, or other information required to install
++and execute modified versions of a covered work in that User Product from
++a modified version of its Corresponding Source.  The information must
++suffice to ensure that the continued functioning of the modified object
++code is in no case prevented or interfered with solely because
++modification has been made.
++
++  If you convey an object code work under this section in, or with, or
++specifically for use in, a User Product, and the conveying occurs as
++part of a transaction in which the right of possession and use of the
++User Product is transferred to the recipient in perpetuity or for a
++fixed term (regardless of how the transaction is characterized), the
++Corresponding Source conveyed under this section must be accompanied
++by the Installation Information.  But this requirement does not apply
++if neither you nor any third party retains the ability to install
++modified object code on the User Product (for example, the work has
++been installed in ROM).
++
++  The requirement to provide Installation Information does not include a
++requirement to continue to provide support service, warranty, or updates
++for a work that has been modified or installed by the recipient, or for
++the User Product in which it has been modified or installed.  Access to a
++network may be denied when the modification itself materially and
++adversely affects the operation of the network or violates the rules and
++protocols for communication across the network.
++
++  Corresponding Source conveyed, and Installation Information provided,
++in accord with this section must be in a format that is publicly
++documented (and with an implementation available to the public in
++source code form), and must require no special password or key for
++unpacking, reading or copying.
++
++  7. Additional Terms.
++
++  "Additional permissions" are terms that supplement the terms of this
++License by making exceptions from one or more of its conditions.
++Additional permissions that are applicable to the entire Program shall
++be treated as though they were included in this License, to the extent
++that they are valid under applicable law.  If additional permissions
++apply only to part of the Program, that part may be used separately
++under those permissions, but the entire Program remains governed by
++this License without regard to the additional permissions.
++
++  When you convey a copy of a covered work, you may at your option
++remove any additional permissions from that copy, or from any part of
++it.  (Additional permissions may be written to require their own
++removal in certain cases when you modify the work.)  You may place
++additional permissions on material, added by you to a covered work,
++for which you have or can give appropriate copyright permission.
++
++  Notwithstanding any other provision of this License, for material you
++add to a covered work, you may (if authorized by the copyright holders of
++that material) supplement the terms of this License with terms:
++
++    a) Disclaiming warranty or limiting liability differently from the
++    terms of sections 15 and 16 of this License; or
++
++    b) Requiring preservation of specified reasonable legal notices or
++    author attributions in that material or in the Appropriate Legal
++    Notices displayed by works containing it; or
++
++    c) Prohibiting misrepresentation of the origin of that material, or
++    requiring that modified versions of such material be marked in
++    reasonable ways as different from the original version; or
++
++    d) Limiting the use for publicity purposes of names of licensors or
++    authors of the material; or
++
++    e) Declining to grant rights under trademark law for use of some
++    trade names, trademarks, or service marks; or
++
++    f) Requiring indemnification of licensors and authors of that
++    material by anyone who conveys the material (or modified versions of
++    it) with contractual assumptions of liability to the recipient, for
++    any liability that these contractual assumptions directly impose on
++    those licensors and authors.
++
++  All other non-permissive additional terms are considered "further
++restrictions" within the meaning of section 10.  If the Program as you
++received it, or any part of it, contains a notice stating that it is
++governed by this License along with a term that is a further
++restriction, you may remove that term.  If a license document contains
++a further restriction but permits relicensing or conveying under this
++License, you may add to a covered work material governed by the terms
++of that license document, provided that the further restriction does
++not survive such relicensing or conveying.
++
++  If you add terms to a covered work in accord with this section, you
++must place, in the relevant source files, a statement of the
++additional terms that apply to those files, or a notice indicating
++where to find the applicable terms.
++
++  Additional terms, permissive or non-permissive, may be stated in the
++form of a separately written license, or stated as exceptions;
++the above requirements apply either way.
++
++  8. Termination.
++
++  You may not propagate or modify a covered work except as expressly
++provided under this License.  Any attempt otherwise to propagate or
++modify it is void, and will automatically terminate your rights under
++this License (including any patent licenses granted under the third
++paragraph of section 11).
++
++  However, if you cease all violation of this License, then your
++license from a particular copyright holder is reinstated (a)
++provisionally, unless and until the copyright holder explicitly and
++finally terminates your license, and (b) permanently, if the copyright
++holder fails to notify you of the violation by some reasonable means
++prior to 60 days after the cessation.
++
++  Moreover, your license from a particular copyright holder is
++reinstated permanently if the copyright holder notifies you of the
++violation by some reasonable means, this is the first time you have
++received notice of violation of this License (for any work) from that
++copyright holder, and you cure the violation prior to 30 days after
++your receipt of the notice.
++
++  Termination of your rights under this section does not terminate the
++licenses of parties who have received copies or rights from you under
++this License.  If your rights have been terminated and not permanently
++reinstated, you do not qualify to receive new licenses for the same
++material under section 10.
++
++  9. Acceptance Not Required for Having Copies.
++
++  You are not required to accept this License in order to receive or
++run a copy of the Program.  Ancillary propagation of a covered work
++occurring solely as a consequence of using peer-to-peer transmission
++to receive a copy likewise does not require acceptance.  However,
++nothing other than this License grants you permission to propagate or
++modify any covered work.  These actions infringe copyright if you do
++not accept this License.  Therefore, by modifying or propagating a
++covered work, you indicate your acceptance of this License to do so.
++
++  10. Automatic Licensing of Downstream Recipients.
++
++  Each time you convey a covered work, the recipient automatically
++receives a license from the original licensors, to run, modify and
++propagate that work, subject to this License.  You are not responsible
++for enforcing compliance by third parties with this License.
++
++  An "entity transaction" is a transaction transferring control of an
++organization, or substantially all assets of one, or subdividing an
++organization, or merging organizations.  If propagation of a covered
++work results from an entity transaction, each party to that
++transaction who receives a copy of the work also receives whatever
++licenses to the work the party's predecessor in interest had or could
++give under the previous paragraph, plus a right to possession of the
++Corresponding Source of the work from the predecessor in interest, if
++the predecessor has it or can get it with reasonable efforts.
++
++  You may not impose any further restrictions on the exercise of the
++rights granted or affirmed under this License.  For example, you may
++not impose a license fee, royalty, or other charge for exercise of
++rights granted under this License, and you may not initiate litigation
++(including a cross-claim or counterclaim in a lawsuit) alleging that
++any patent claim is infringed by making, using, selling, offering for
++sale, or importing the Program or any portion of it.
++
++  11. Patents.
++
++  A "contributor" is a copyright holder who authorizes use under this
++License of the Program or a work on which the Program is based.  The
++work thus licensed is called the contributor's "contributor version".
++
++  A contributor's "essential patent claims" are all patent claims
++owned or controlled by the contributor, whether already acquired or
++hereafter acquired, that would be infringed by some manner, permitted
++by this License, of making, using, or selling its contributor version,
++but do not include claims that would be infringed only as a
++consequence of further modification of the contributor version.  For
++purposes of this definition, "control" includes the right to grant
++patent sublicenses in a manner consistent with the requirements of
++this License.
++
++  Each contributor grants you a non-exclusive, worldwide, royalty-free
++patent license under the contributor's essential patent claims, to
++make, use, sell, offer for sale, import and otherwise run, modify and
++propagate the contents of its contributor version.
++
++  In the following three paragraphs, a "patent license" is any express
++agreement or commitment, however denominated, not to enforce a patent
++(such as an express permission to practice a patent or covenant not to
++sue for patent infringement).  To "grant" such a patent license to a
++party means to make such an agreement or commitment not to enforce a
++patent against the party.
++
++  If you convey a covered work, knowingly relying on a patent license,
++and the Corresponding Source of the work is not available for anyone
++to copy, free of charge and under the terms of this License, through a
++publicly available network server or other readily accessible means,
++then you must either (1) cause the Corresponding Source to be so
++available, or (2) arrange to deprive yourself of the benefit of the
++patent license for this particular work, or (3) arrange, in a manner
++consistent with the requirements of this License, to extend the patent
++license to downstream recipients.  "Knowingly relying" means you have
++actual knowledge that, but for the patent license, your conveying the
++covered work in a country, or your recipient's use of the covered work
++in a country, would infringe one or more identifiable patents in that
++country that you have reason to believe are valid.
++
++  If, pursuant to or in connection with a single transaction or
++arrangement, you convey, or propagate by procuring conveyance of, a
++covered work, and grant a patent license to some of the parties
++receiving the covered work authorizing them to use, propagate, modify
++or convey a specific copy of the covered work, then the patent license
++you grant is automatically extended to all recipients of the covered
++work and works based on it.
++
++  A patent license is "discriminatory" if it does not include within
++the scope of its coverage, prohibits the exercise of, or is
++conditioned on the non-exercise of one or more of the rights that are
++specifically granted under this License.  You may not convey a covered
++work if you are a party to an arrangement with a third party that is
++in the business of distributing software, under which you make payment
++to the third party based on the extent of your activity of conveying
++the work, and under which the third party grants, to any of the
++parties who would receive the covered work from you, a discriminatory
++patent license (a) in connection with copies of the covered work
++conveyed by you (or copies made from those copies), or (b) primarily
++for and in connection with specific products or compilations that
++contain the covered work, unless you entered into that arrangement,
++or that patent license was granted, prior to 28 March 2007.
++
++  Nothing in this License shall be construed as excluding or limiting
++any implied license or other defenses to infringement that may
++otherwise be available to you under applicable patent law.
++
++  12. No Surrender of Others' Freedom.
++
++  If conditions are imposed on you (whether by court order, agreement or
++otherwise) that contradict the conditions of this License, they do not
++excuse you from the conditions of this License.  If you cannot convey a
++covered work so as to satisfy simultaneously your obligations under this
++License and any other pertinent obligations, then as a consequence you may
++not convey it at all.  For example, if you agree to terms that obligate you
++to collect a royalty for further conveying from those to whom you convey
++the Program, the only way you could satisfy both those terms and this
++License would be to refrain entirely from conveying the Program.
++
++  13. Use with the GNU Affero General Public License.
++
++  Notwithstanding any other provision of this License, you have
++permission to link or combine any covered work with a work licensed
++under version 3 of the GNU Affero General Public License into a single
++combined work, and to convey the resulting work.  The terms of this
++License will continue to apply to the part which is the covered work,
++but the special requirements of the GNU Affero General Public License,
++section 13, concerning interaction through a network will apply to the
++combination as such.
++
++  14. Revised Versions of this License.
++
++  The Free Software Foundation may publish revised and/or new versions of
++the GNU General Public License from time to time.  Such new versions will
++be similar in spirit to the present version, but may differ in detail to
++address new problems or concerns.
++
++  Each version is given a distinguishing version number.  If the
++Program specifies that a certain numbered version of the GNU General
++Public License "or any later version" applies to it, you have the
++option of following the terms and conditions either of that numbered
++version or of any later version published by the Free Software
++Foundation.  If the Program does not specify a version number of the
++GNU General Public License, you may choose any version ever published
++by the Free Software Foundation.
++
++  If the Program specifies that a proxy can decide which future
++versions of the GNU General Public License can be used, that proxy's
++public statement of acceptance of a version permanently authorizes you
++to choose that version for the Program.
++
++  Later license versions may give you additional or different
++permissions.  However, no additional obligations are imposed on any
++author or copyright holder as a result of your choosing to follow a
++later version.
++
++  15. Disclaimer of Warranty.
++
++  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
++APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
++HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
++OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
++THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
++PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
++IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
++ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
++
++  16. Limitation of Liability.
++
++  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
++WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
++THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
++GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
++USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
++DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
++PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
++EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
++SUCH DAMAGES.
++
++  17. Interpretation of Sections 15 and 16.
++
++  If the disclaimer of warranty and limitation of liability provided
++above cannot be given local legal effect according to their terms,
++reviewing courts shall apply local law that most closely approximates
++an absolute waiver of all civil liability in connection with the
++Program, unless a warranty or assumption of liability accompanies a
++copy of the Program in return for a fee.
++
++                     END OF TERMS AND CONDITIONS
++
++            How to Apply These Terms to Your New Programs
++
++  If you develop a new program, and you want it to be of the greatest
++possible use to the public, the best way to achieve this is to make it
++free software which everyone can redistribute and change under these terms.
++
++  To do so, attach the following notices to the program.  It is safest
++to attach them to the start of each source file to most effectively
++state the exclusion of warranty; and each file should have at least
++the "copyright" line and a pointer to where the full notice is found.
++
++    <one line to give the program's name and a brief idea of what it does.>
++    Copyright (C) <year>  <name of author>
++
++    This program is free software: you can redistribute it and/or modify
++    it under the terms of the GNU General Public License as published by
++    the Free Software Foundation, either version 3 of the License, or
++    (at your option) any later version.
++
++    This program is distributed in the hope that it will be useful,
++    but WITHOUT ANY WARRANTY; without even the implied warranty of
++    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++    GNU General Public License for more details.
++
++    You should have received a copy of the GNU General Public License
++    along with this program.  If not, see <http://www.gnu.org/licenses/>.
++
++Also add information on how to contact you by electronic and paper mail.
++
++  If the program does terminal interaction, make it output a short
++notice like this when it starts in an interactive mode:
++
++    <program>  Copyright (C) <year>  <name of author>
++    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
++    This is free software, and you are welcome to redistribute it
++    under certain conditions; type `show c' for details.
++
++The hypothetical commands `show w' and `show c' should show the appropriate
++parts of the General Public License.  Of course, your program's commands
++might be different; for a GUI interface, you would use an "about box".
++
++  You should also get your employer (if you work as a programmer) or school,
++if any, to sign a "copyright disclaimer" for the program, if necessary.
++For more information on this, and how to apply and follow the GNU GPL, see
++<http://www.gnu.org/licenses/>.
++
++  The GNU General Public License does not permit incorporating your program
++into proprietary programs.  If your program is a subroutine library, you
++may consider it more useful to permit linking proprietary applications with
++the library.  If this is what you want to do, use the GNU Lesser General
++Public License instead of this License.  But first, please read
++<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+diff --git a/MANIFEST b/MANIFEST
+deleted file mode 100644
+index 24ca115..0000000
+--- a/MANIFEST
++++ /dev/null
+@@ -1,9 +0,0 @@
+-sendprofile
+-setup.py
+-fireinfo/__init__.py
+-fireinfo/cpu.py
+-fireinfo/device.py
+-fireinfo/hypervisor.py
+-fireinfo/network.py
+-fireinfo/system.py
+-src/fireinfo.c
+diff --git a/Makefile.am b/Makefile.am
+new file mode 100644
+index 0000000..260f14f
+--- /dev/null
++++ b/Makefile.am
+@@ -0,0 +1,87 @@
++###############################################################################
++#                                                                             #
++# Pakfire - The IPFire package management system                              #
++# Copyright (C) 2013 Pakfire development team                                 #
++#                                                                             #
++# This program is free software: you can redistribute it and/or modify        #
++# it under the terms of the GNU General Public License as published by        #
++# the Free Software Foundation, either version 3 of the License, or           #
++# (at your option) any later version.                                         #
++#                                                                             #
++# This program is distributed in the hope that it will be useful,             #
++# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
++# GNU General Public License for more details.                                #
++#                                                                             #
++# You should have received a copy of the GNU General Public License           #
++# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
++#                                                                             #
++###############################################################################
++
++ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
++AM_MAKEFLAGS = --no-print-directory
++AUTOMAKE_OPTIONS = color-tests
++
++# remove target it the command fails
++.DELETE_ON_ERROR:
++
++# keep itermediate files
++.SECONDARY:
++
++CLEANFILES =
++DISTCLEANFILES =
++EXTRA_DIST =
++
++AM_CPPFLAGS = \
++      -include $(top_builddir)/config.h \
++      -I $(top_srcdir)/include \
++      $(OUR_CPPFLAGS)
++
++AM_CFLAGS = $(OUR_CFLAGS)
++AM_LDFLAGS = $(OUR_LDFLAGS)
++
++pkgpyexec_LTLIBRARIES =
++
++# ------------------------------------------------------------------------------
++
++dist_doc_DATA = \
++      COPYING
++
++# ------------------------------------------------------------------------------
++
++dist_bin_SCRIPTS = \
++      src/sendprofile
++
++# ------------------------------------------------------------------------------
++
++fireinfo_PYTHON = \
++      src/fireinfo/__init__.py \
++      src/fireinfo/bios.py \
++      src/fireinfo/cpu.py \
++      src/fireinfo/device.py \
++      src/fireinfo/hypervisor.py \
++      src/fireinfo/network.py \
++      src/fireinfo/system.py
++
++fireinfodir = $(pythondir)/fireinfo
++
++# ------------------------------------------------------------------------------
++
++pkgpyexec_LTLIBRARIES += \
++      _fireinfo.la
++
++_fireinfo_la_SOURCES = \
++      src/_fireinfo/fireinfo.c
++
++_fireinfo_la_CFLAGS = \
++      $(AM_CFLAGS) \
++      $(PYTHON_DEVEL_CFLAGS)
++
++_fireinfo_la_LDFLAGS = \
++      $(AM_LDFLAGS) \
++      -shared \
++      -module \
++      -avoid-version
++
++_fireinfo_la_LIBADD = \
++      $(PYTHON_DEVEL_LIBS)
+diff --git a/autogen.sh b/autogen.sh
+new file mode 100755
+index 0000000..c08fadf
+--- /dev/null
++++ b/autogen.sh
+@@ -0,0 +1,3 @@
++#!/bin/sh
++
++autoreconf --force --install --symlink
+diff --git a/configure.ac b/configure.ac
+new file mode 100644
+index 0000000..4d5efef
+--- /dev/null
++++ b/configure.ac
+@@ -0,0 +1,110 @@
++###############################################################################
++#                                                                             #
++# Pakfire - The IPFire package management system                              #
++# Copyright (C) 2013 Pakfire development team                                 #
++#                                                                             #
++# This program is free software: you can redistribute it and/or modify        #
++# it under the terms of the GNU General Public License as published by        #
++# the Free Software Foundation, either version 3 of the License, or           #
++# (at your option) any later version.                                         #
++#                                                                             #
++# This program is distributed in the hope that it will be useful,             #
++# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
++# GNU General Public License for more details.                                #
++#                                                                             #
++# You should have received a copy of the GNU General Public License           #
++# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
++#                                                                             #
++###############################################################################
++
++AC_PREREQ([2.64])
++
++AC_INIT([fireinfo],
++      [2.1.7],
++      [info@ipfire.org],
++      [fireinfo],
++      [http://git.ipfire.org/?p=oddments/fireinfo.git;a=summary])
++
++AC_CONFIG_MACRO_DIR([m4])
++AC_CONFIG_HEADERS([config.h])
++AC_CONFIG_AUX_DIR([build-aux])
++
++AC_USE_SYSTEM_EXTENSIONS
++AC_SYS_LARGEFILE
++AC_PREFIX_DEFAULT([/usr])
++
++AM_INIT_AUTOMAKE([
++      foreign
++      1.11
++      -Wall
++      -Wno-portability
++      silent-rules
++      tar-pax
++      subdir-objects
++])
++AM_SILENT_RULES([yes])
++LT_PREREQ(2.2)
++LT_INIT([disable-static])
++
++# pkg-config
++PKG_PROG_PKG_CONFIG
++# This makes sure pkg.m4 is available.
++m4_pattern_forbid([^_?PKG_[A-Z_]+$],[*** pkg.m4 missing, please install pkg-config])
++
++# C Compiler
++AC_PROG_CC
++AC_PROG_CC_C99
++AC_PROG_CC_C_O
++AC_PROG_GCC_TRADITIONAL
++AC_OPENMP
++
++CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\
++      -pipe \
++      -Wall \
++      -Wextra \
++      -Wno-inline \
++      -Wundef \
++      "-Wformat=2 -Wformat-security -Wformat-nonliteral" \
++      -Wno-unused-parameter \
++      -Wno-unused-result \
++      -fno-strict-aliasing \
++      -ffunction-sections \
++      -fdata-sections \
++      -fstack-protector-all \
++      --param=ssp-buffer-size=4])
++AC_SUBST([OUR_CFLAGS], $with_cflags)
++
++AS_CASE([$CFLAGS], [*-O[[12345g\ ]]*],
++      [CC_CHECK_FLAGS_APPEND([with_cppflags], [CPPFLAGS], [\
++              -Wp,-D_FORTIFY_SOURCE=2])],
++      [AC_MSG_RESULT([skipping -D_FORTIFY_SOURCE, optimization not enabled])])
++AC_SUBST([OUR_CPPFLAGS], $with_cppflags)
++
++CC_CHECK_FLAGS_APPEND([with_ldflags], [LDFLAGS], [\
++      -Wl,--as-needed \
++      -Wl,--no-undefined \
++      -Wl,--gc-sections \
++      -Wl,-z,relro \
++      -Wl,-z,now])
++AC_SUBST([OUR_LDFLAGS], $with_ldflags)
++
++# Python
++AM_PATH_PYTHON([2.7])
++PKG_CHECK_MODULES([PYTHON_DEVEL], [python-${PYTHON_VERSION}])
++
++AC_CONFIG_FILES([
++      Makefile
++      src/fireinfo/__init__.py
++])
++
++AC_OUTPUT
++AC_MSG_RESULT([
++      $PACKAGE_NAME $VERSION
++
++      CFLAGS:                 ${OUR_CFLAGS} ${CFLAGS}
++      CPPFLAGS:               ${OUR_CPPFLAGS} ${CPPFLAGS}
++      LDFLAGS:                ${OUR_LDFLAGS} ${LDFLAGS}
++      PYTHON_CFLAGS:          ${PYTHON_DEVEL_CFLAGS}
++      PYTHON_LIBS:            ${PYTHON_DEVEL_LIBS}
++])
+diff --git a/fireinfo/__init__.py b/fireinfo/__init__.py
+deleted file mode 100644
+index 86fcc66..0000000
+--- a/fireinfo/__init__.py
++++ /dev/null
+@@ -1,24 +0,0 @@
+-#!/usr/bin/python
+-###############################################################################
+-#                                                                             #
+-# Fireinfo                                                                    #
+-# Copyright (C) 2010, 2011 IPFire Team (www.ipfire.org)                       #
+-#                                                                             #
+-# This program is free software: you can redistribute it and/or modify        #
+-# it under the terms of the GNU General Public License as published by        #
+-# the Free Software Foundation, either version 3 of the License, or           #
+-# (at your option) any later version.                                         #
+-#                                                                             #
+-# This program is distributed in the hope that it will be useful,             #
+-# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
+-# GNU General Public License for more details.                                #
+-#                                                                             #
+-# You should have received a copy of the GNU General Public License           #
+-# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
+-#                                                                             #
+-###############################################################################
+-
+-__version__ = "2.1.7"
+-
+-from system import System
+diff --git a/fireinfo/cpu.py b/fireinfo/cpu.py
+deleted file mode 100644
+index 32d885d..0000000
+--- a/fireinfo/cpu.py
++++ /dev/null
+@@ -1,194 +0,0 @@
+-#!/usr/bin/python
+-###############################################################################
+-#                                                                             #
+-# Fireinfo                                                                    #
+-# Copyright (C) 2010, 2011 IPFire Team (www.ipfire.org)                       #
+-#                                                                             #
+-# This program is free software: you can redistribute it and/or modify        #
+-# it under the terms of the GNU General Public License as published by        #
+-# the Free Software Foundation, either version 3 of the License, or           #
+-# (at your option) any later version.                                         #
+-#                                                                             #
+-# This program is distributed in the hope that it will be useful,             #
+-# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
+-# GNU General Public License for more details.                                #
+-#                                                                             #
+-# You should have received a copy of the GNU General Public License           #
+-# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
+-#                                                                             #
+-###############################################################################
+-
+-import os
+-
+-import system
+-
+-PROC_CPUINFO = "/proc/cpuinfo"
+-
+-class CPU(object):
+-      """
+-              A class that represents the first CPU in a system.
+-
+-              We get all information form the first CPU (or core) and assume that
+-              all other ones are equal.
+-      """
+-
+-      __cpuinfo = {}
+-
+-      def __init__(self):
+-              """
+-                      Initialize this class by reading all data from /proc/cpuinfo.
+-              """
+-              self.__cpuinfo = self.read_cpuinfo()
+-
+-      @property
+-      def system(self):
+-              return system.System()
+-
+-      @staticmethod
+-      def read_cpuinfo():
+-              """
+-                      Read information from PROC_CPUINFO and store
+-                      it into a dictionary cpuinfo.
+-              """
+-              cpuinfo = {}
+-
+-              f = open(PROC_CPUINFO)
+-              while True:
+-                      line = f.readline()
+-
+-                      if not line:
+-                              break
+-
+-                      try:
+-                              key, val = line.split(":", 1)
+-                      except ValueError:
+-                              # We got a line without key, pass that.
+-                              pass
+-
+-                      key = key.strip().replace(" ", "_")
+-                      val = val.strip()
+-
+-                      cpuinfo[key] = val
+-
+-              f.close()
+-
+-              return cpuinfo
+-
+-      @property
+-      def bogomips(self):
+-              """
+-                      Return the bogomips of this CPU.
+-              """
+-              try:
+-                      bogomips = self.__cpuinfo["bogomips"]
+-              except KeyError:
+-                      bogomips = self.__cpuinfo["BogoMIPS"]
+-
+-              return float(bogomips)
+-
+-      @property
+-      def model(self):
+-              """
+-                      Return the model id of this CPU.
+-              """
+-              try:
+-                      model = int(self.__cpuinfo["model"])
+-              except KeyError:
+-                      model = None
+-
+-              return model
+-
+-      @property
+-      def model_string(self):
+-              """
+-                      Return the model string of this CPU.
+-              """
+-              try:
+-                      return self.__cpuinfo["model_name"]
+-              except KeyError:
+-                      return self.__cpuinfo["Processor"]
+-
+-      @property
+-      def vendor(self):
+-              """
+-                      Return the vendor string of this CPU.
+-              """
+-              try:
+-                      vendor = self.__cpuinfo["vendor_id"]
+-              except KeyError:
+-                      if self.system.arch.startswith("arm"):
+-                              vendor = "ARM"
+-                      else:
+-                              vendor = ""
+-
+-              return vendor
+-
+-      @property
+-      def stepping(self):
+-              """
+-                      Return the stepping id of this CPU.
+-              """
+-              try:
+-                      stepping = int(self.__cpuinfo["stepping"])
+-              except KeyError:
+-                      stepping = None
+-
+-              return stepping
+-
+-      @property
+-      def flags(self):
+-              """
+-                      Return all flags of this CPU.
+-              """
+-              try:
+-                      flags = self.__cpuinfo["flags"]
+-              except KeyError:
+-                      flags = self.__cpuinfo["Features"]
+-
+-              return flags.split()
+-
+-      @property
+-      def speed(self):
+-              """
+-                      Return the speed (in MHz) of this CPU.
+-              """
+-              try:
+-                      speed = float(self.__cpuinfo["cpu_MHz"])
+-              except KeyError:
+-                      speed = 0
+-
+-              return speed
+-
+-      @property
+-      def family(self):
+-              """
+-                      Return the family id of this CPU.
+-              """
+-              try:
+-                      family = int(self.__cpuinfo["cpu_family"])
+-              except KeyError:
+-                      family = None
+-
+-              return family
+-      
+-      @property
+-      def count(self):
+-              """
+-                      Count number of CPUs (cores).
+-              """
+-              return os.sysconf("SC_NPROCESSORS_ONLN")
+-
+-
+-if __name__ == "__main__":
+-      c = CPU()
+-
+-      print "Vendor:", c.vendor
+-      print "Model:", c.model
+-      print "Stepping:", c.stepping
+-      print "Flags:", c.flags
+-      print "Bogomips:", c.bogomips
+-      print "Speed:", c.speed
+-      print "Family:", c.family
+-      print "Count:", c.count
+-      print "Model string:", c.model_string
+diff --git a/fireinfo/device.py b/fireinfo/device.py
+deleted file mode 100644
+index 01338b2..0000000
+--- a/fireinfo/device.py
++++ /dev/null
+@@ -1,133 +0,0 @@
+-#!/usr/bin/python
+-###############################################################################
+-#                                                                             #
+-# Fireinfo                                                                    #
+-# Copyright (C) 2010, 2011 IPFire Team (www.ipfire.org)                       #
+-#                                                                             #
+-# This program is free software: you can redistribute it and/or modify        #
+-# it under the terms of the GNU General Public License as published by        #
+-# the Free Software Foundation, either version 3 of the License, or           #
+-# (at your option) any later version.                                         #
+-#                                                                             #
+-# This program is distributed in the hope that it will be useful,             #
+-# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
+-# GNU General Public License for more details.                                #
+-#                                                                             #
+-# You should have received a copy of the GNU General Public License           #
+-# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
+-#                                                                             #
+-###############################################################################
+-
+-import os.path
+-
+-class Device(object):
+-      """
+-              This is an abstract class that represents all devices in the system.
+-              Every single device has its own instance of this class.
+-      """
+-
+-      def __init__(self, path):
+-              """
+-                      Collect all information about the device by reading the
+-                      "uevent" file and parsing it.
+-              """
+-
+-              # Save the path in /sys to the device.
+-              self.path = path
+-
+-              # Datastructure to store information we read.
+-              self._uevent = {}
+-
+-              # Open the uevent file and parse all lines.
+-              with open(os.path.join(path, "uevent")) as f:
+-                      for line in f.readlines():
+-                              key, val = line.split("=")
+-                              self._uevent[key] = val.rstrip().lower()
+-
+-      @property
+-      def driver(self):
+-              """
+-                      Get the driver/kernel module that device is driven by or return None.
+-              """
+-              return self._uevent.get("DRIVER", None)
+-
+-                      
+-class PCIDevice(Device):
+-      """
+-              A class that represents all PCI (and PCIe) devices in a system.
+-      """
+-
+-      subsystem = "pci"
+-
+-      @property
+-      def model(self):
+-              """
+-                      Return the PCI model id of this device.
+-              """
+-              return self._uevent['PCI_ID'].split(":")[1]
+-              
+-      @property
+-      def vendor(self):
+-              """
+-                      Return the PCI vendor id of this device.
+-              """
+-              return self._uevent['PCI_ID'].split(":")[0]
+-
+-      @property
+-      def deviceclass(self):
+-              """
+-                      Return the PCI device class of this device.
+-              """
+-              return self._uevent['PCI_CLASS']
+-
+-      @property
+-      def sub_vendor(self):
+-              """
+-                      Return the PCI vendor sub id of this device.
+-              """
+-              return self._uevent["PCI_SUBSYS_ID"].split(":")[0]
+-
+-      @property
+-      def sub_model(self):
+-              """
+-                      Return the PCI model sub id of this device.
+-              """
+-              return self._uevent["PCI_SUBSYS_ID"].split(":")[1]
+-
+-
+-class USBDevice(Device):
+-      """
+-              A class that represents all USB devices in a system.
+-      """
+-
+-      subsystem = "usb"
+-      
+-      def pad(self, s):
+-              """
+-                      A function to pad ids that have no leading zeroes.
+-              """
+-              while len(s) < 4:
+-                      s = "0"+s
+-              return s
+-
+-      @property
+-      def vendor(self):
+-              """
+-                      Return the USB vendor id of this device.
+-              """
+-              return self.pad(self._uevent['PRODUCT'].split("/")[0])
+-
+-      @property
+-      def model(self):
+-              """
+-                      Return the USB model id of this device.
+-              """
+-              return self.pad(self._uevent['PRODUCT'].split("/")[1])
+-
+-      @property
+-      def deviceclass(self):
+-              """
+-                      Return the USB device class of this device.
+-              """
+-              return self._uevent.get("INTERFACE", None)
+diff --git a/fireinfo/hypervisor.py b/fireinfo/hypervisor.py
+deleted file mode 100644
+index 9a3fb09..0000000
+--- a/fireinfo/hypervisor.py
++++ /dev/null
+@@ -1,149 +0,0 @@
+-#!/usr/bin/python
+-###############################################################################
+-#                                                                             #
+-# Fireinfo                                                                    #
+-# Copyright (C) 2010, 2011 IPFire Team (www.ipfire.org)                       #
+-#                                                                             #
+-# This program is free software: you can redistribute it and/or modify        #
+-# it under the terms of the GNU General Public License as published by        #
+-# the Free Software Foundation, either version 3 of the License, or           #
+-# (at your option) any later version.                                         #
+-#                                                                             #
+-# This program is distributed in the hope that it will be useful,             #
+-# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
+-# GNU General Public License for more details.                                #
+-#                                                                             #
+-# You should have received a copy of the GNU General Public License           #
+-# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
+-#                                                                             #
+-###############################################################################
+-
+-import _fireinfo
+-import system
+-
+-class Hypervisor(object):
+-      def __init__(self):
+-              self.__info = _fireinfo.get_hypervisor()
+-
+-      @property
+-      def system(self):
+-              """
+-                      Return the current instance of the System class.
+-
+-                      We need to do that as a property because otherwise
+-                      we get a recursion.
+-              """
+-              return system.System()
+-
+-      @property
+-      def vendor(self):
+-              """
+-                      Returns the name of the hypervisor vendor.
+-              """
+-              if not self.virtual:
+-                      return None
+-
+-              # Some of the hypervisors can be detected in a right way.
+-              # We can return them at this place.
+-              if self.__info["hypervisor"] in ("Xen", "VMWare", "KVM"):
+-                      return self.__info["hypervisor"]
+-
+-              # Citrix Xen says it is Microsoft Hv.
+-              if self.__info["hypervisor"] == "Microsoft" and \
+-                              self.system.bios_vendor == "Xen":
+-                      return "Xen"
+-
+-              if not self.__info["hypervisor"]:
+-                      # On VMWare systems, the bios vendor string contains "VMWare".
+-                      if self.__is_hypervisor_vmware():
+-                              return "VMWare"
+-
+-                      # VirtualBox got "innotek GmbH" as bios vendor.
+-                      elif self.__is_hypervisor_virtualbox():
+-                              return "VirtualBox"
+-
+-                      # Check for qemu.
+-                      elif self.__is_hypervisor_qemu():
+-                              return "Qemu"
+-
+-                      # Check for Microsoft.
+-                      elif self.__is_hypervisor_microsoft():
+-                              return "Microsoft"
+-
+-              return "unknown"
+-
+-      @property
+-      def type(self):
+-              """
+-                      Returns if the host is running in full virt mode or
+-                      if it is running in a paravirtualized environment.
+-              """
+-              if not self.virtual:
+-                      return None
+-
+-              if self.__info["virtype"]:
+-                      return self.__info["virtype"]
+-
+-              if self.vendor in ("Qemu", "KVM", "VirtualBox", "VMWare"):
+-                      return "full"
+-
+-              return "unknown"
+-
+-      @property
+-      def virtual(self):
+-              """
+-                      Returns true if the host is running in a virtual environment.
+-                      Otherwise: false.
+-              """
+-              return _fireinfo.is_virtualized() or \
+-                      "hypervisor" in self.system.cpu.flags or \
+-                      self.__is_hypervisor_virtualbox() or \
+-                      self.__is_hypervisor_vmware() or \
+-                      self.__is_hypervisor_qemu() or \
+-                      self.__is_hypervisor_microsoft()
+-
+-      def __is_hypervisor_virtualbox(self):
+-              """
+-                      Check for virtualbox hypervisor by comparing the bios vendor string
+-                      to "innotek GmbH".
+-              """
+-              return self.system.bios_vendor == "innotek GmbH"
+-
+-      def __is_hypervisor_vmware(self):
+-              """
+-                      Check for the VMWare hypervisor by the VMWare Hypervisor port check.
+-
+-                      http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1009458
+-              """
+-              if self.system.vendor:
+-                      return self.system.vendor.startswith("VMware")
+-
+-                      # XXX We should use _fireinfo.vmware_hypervisor_port_check() here, too.
+-                      # This currently segfaults (and I have no clue why) on VMware player.
+-
+-      def __is_hypervisor_qemu(self):
+-              """
+-                      Check for old qemu emulator.
+-              """
+-              if self.system.bios_vendor:
+-                      return self.system.bios_vendor == "Bochs"
+-
+-              return False
+-
+-      def __is_hypervisor_microsoft(self):
+-              """
+-                      Check for Microsoft hypervisor.
+-              """
+-              if self.system.vendor:
+-                      return "Microsoft" in self.system.vendor
+-
+-              return False
+-
+-
+-if __name__ == "__main__":
+-      h = Hypervisor()
+-
+-      print "Vendor:", h.vendor
+-      print "Type:", h.type
+-      print "Virtual:", h.virtual
+diff --git a/fireinfo/network.py b/fireinfo/network.py
+deleted file mode 100644
+index 063e9ec..0000000
+--- a/fireinfo/network.py
++++ /dev/null
+@@ -1,53 +0,0 @@
+-#!/usr/bin/python
+-###############################################################################
+-#                                                                             #
+-# Fireinfo                                                                    #
+-# Copyright (C) 2010, 2011 IPFire Team (www.ipfire.org)                       #
+-#                                                                             #
+-# This program is free software: you can redistribute it and/or modify        #
+-# it under the terms of the GNU General Public License as published by        #
+-# the Free Software Foundation, either version 3 of the License, or           #
+-# (at your option) any later version.                                         #
+-#                                                                             #
+-# This program is distributed in the hope that it will be useful,             #
+-# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
+-# GNU General Public License for more details.                                #
+-#                                                                             #
+-# You should have received a copy of the GNU General Public License           #
+-# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
+-#                                                                             #
+-###############################################################################
+-
+-import os
+-
+-SYS_CLASS_NET = "/sys/class/net"
+-
+-class Network(object):
+-      def __init__(self):
+-              self._devices = os.listdir(SYS_CLASS_NET)
+-
+-      def has_green(self):
+-              return "green0" in self._devices
+-
+-      def has_red(self):
+-              for i in ("red0", "ppp0"):
+-                      if i in self._devices:
+-                              return True
+-
+-              return False
+-
+-      def has_blue(self):
+-              return "blue0" in self._devices
+-
+-      def has_orange(self):
+-              return "orange0" in self._devices
+-
+-
+-if __name__ == "__main__":
+-      n = Network()
+-
+-      print "has_green", n.has_green()
+-      print "has_red", n.has_red()
+-      print "has_blue", n.has_blue()
+-      print "has_orange", n.has_orange()
+diff --git a/fireinfo/system.py b/fireinfo/system.py
+deleted file mode 100644
+index 6f02312..0000000
+--- a/fireinfo/system.py
++++ /dev/null
+@@ -1,449 +0,0 @@
+-#!/usr/bin/python
+-###############################################################################
+-#                                                                             #
+-# Fireinfo                                                                    #
+-# Copyright (C) 2010, 2011 IPFire Team (www.ipfire.org)                       #
+-#                                                                             #
+-# This program is free software: you can redistribute it and/or modify        #
+-# it under the terms of the GNU General Public License as published by        #
+-# the Free Software Foundation, either version 3 of the License, or           #
+-# (at your option) any later version.                                         #
+-#                                                                             #
+-# This program is distributed in the hope that it will be useful,             #
+-# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
+-# GNU General Public License for more details.                                #
+-#                                                                             #
+-# You should have received a copy of the GNU General Public License           #
+-# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
+-#                                                                             #
+-###############################################################################
+-
+-import hashlib
+-import json
+-import os
+-import string
+-
+-import _fireinfo
+-
+-import cpu
+-import device
+-import hypervisor
+-import network
+-
+-PROFILE_VERSION = 0
+-
+-SYS_CLASS_DMI = "/sys/class/dmi/id"
+-SECRET_ID_FILE = "/etc/fireinfo-id"
+-
+-INVALID_ID_STRINGS = (
+-      "OEM", "O.E.M.", "o.e.m.",
+-      "N/A", "n/a",
+-      "12345", "54321", "202020",
+-      "Chassis", "chassis",
+-      "Not Applicable",
+-      "None", "empty",
+-      "01010101-0101-0101-0101-010101010101",
+-      "00020003-0004-0005-0006-000700080009",
+-      "03000200-0400-0500-0006-000700080009",
+-      "0000000", "00000000",
+-)
+-
+-class Singleton(type):
+-      def __init__(cls, name, bases, dict):
+-              super(Singleton, cls).__init__(name, bases, dict)
+-              cls.instance = None
+-
+-      def __call__(cls, *args, **kw):
+-              if cls.instance is None:
+-                      cls.instance = super(Singleton, cls).__call__(*args, **kw)
+-
+-              return cls.instance
+-
+-
+-def read_from_file(filename):
+-      """
+-              Read all data from filename.
+-      """
+-      if not os.path.exists(filename):
+-              return
+-
+-      try:
+-              with open(filename) as f:
+-                      return f.read().strip()
+-      except IOError:
+-              pass
+-
+-class System(object):
+-      __metaclass__ = Singleton
+-
+-      def __init__(self):
+-              # find all devices
+-              self.devices = []
+-              self.scan()
+-              self.cpu = cpu.CPU()
+-              self.hypervisor = hypervisor.Hypervisor()
+-
+-              # Read /proc/cpuinfo for vendor information.
+-              self.__cpuinfo = self.cpu.read_cpuinfo()
+-
+-      def profile(self):
+-              p = {}
+-              p["system"] = {
+-                      # System information
+-                      "model"  : self.model,
+-                      "vendor" : self.vendor,
+-
+-                      # Indicator if the system is running in a
+-                      # virtual environment.
+-                      "virtual" : self.virtual,
+-                      
+-                      # System language
+-                      "language" : self.language,
+-
+-                      # Release information
+-                      "release" : self.release,
+-                      "kernel_release" : self.kernel_release,
+-
+-                      "memory" : self.memory,
+-                      "root_size" : self.root_size,
+-              }
+-
+-              p["devices"] = []
+-              for device in self.devices:
+-                      d = {
+-                              "subsystem" : device.subsystem.lower(), 
+-                              "vendor" : device.vendor.lower(), 
+-                              "model" : device.model.lower(), 
+-                              "deviceclass" : device.deviceclass,
+-                              "driver" : device.driver,
+-                      }
+-
+-                      # PCI devices provide subsystem information, USB don't.
+-                      if d["subsystem"] == "pci":
+-                              d["sub_model"] = device.sub_model
+-                              d["sub_vendor"] = device.sub_vendor
+-
+-                      p["devices"].append(d)
+-
+-              p["cpu"] = {
+-                      "arch" : self.arch,
+-                      "vendor" : self.cpu.vendor,
+-                      "model" : self.cpu.model,
+-                      "model_string" : self.cpu.model_string,
+-                      "stepping" : self.cpu.stepping,
+-                      "flags" : self.cpu.flags,
+-                      "bogomips" : self.cpu.bogomips,
+-                      "speed" : self.cpu.speed,
+-                      "family" : self.cpu.family,
+-                      "count" : self.cpu.count                                
+-              }
+-
+-              p["network"] = {
+-                      "green" : self.network.has_green(),
+-                      "blue" : self.network.has_blue(),
+-                      "orange" : self.network.has_orange(),
+-                      "red" : self.network.has_red(),
+-               }
+-
+-              # Only append hypervisor information if we are virtualized.
+-              if self.virtual:
+-                      p["hypervisor"] = {
+-                              "type"   : self.hypervisor.type,
+-                              "vendor" : self.hypervisor.vendor,
+-                      }
+-
+-              return {
+-                      # Profile version
+-                      "profile_version" : PROFILE_VERSION,
+-
+-                      # Identification and authorization codes
+-                      "public_id" : self.public_id,
+-                      "private_id" : self.private_id,
+-
+-                      # Actual profile data
+-                      "profile" : p,
+-              }
+-                              
+-              
+-      @property
+-      def arch(self):
+-              return os.uname()[4]
+-
+-      @property
+-      def public_id(self):
+-              """
+-                      This returns a globally (hopefully) ID to identify the host
+-                      later (by request) in the database.
+-              """
+-              public_id = self.secret_id
+-              if not public_id:
+-                      return "0" * 40
+-
+-              return hashlib.sha1(public_id).hexdigest()
+-
+-      @property
+-      def private_id(self):
+-              """
+-                      The private ID is built out of the _unique_id and used to
+-                      permit a host to do changes on the database.
+-
+-                      No one could ever guess this without access to the host.
+-              """
+-              private_id = ""
+-              for i in reversed(self.secret_id):
+-                      private_id += i
+-
+-              if not private_id:
+-                      return "0" * 40
+-
+-              return hashlib.sha1(private_id).hexdigest()
+-
+-      @property
+-      def secret_id(self):
+-              """
+-                      Read a "secret" ID from a file if available
+-                      or calculate it from the hardware.
+-              """
+-              if os.path.exists(SECRET_ID_FILE):
+-                      return read_from_file(SECRET_ID_FILE)
+-
+-              return hashlib.sha1(self._unique_id).hexdigest()
+-
+-      @property
+-      def _unique_id(self):
+-              """
+-                      This is a helper ID which is generated out of some hardware information
+-                      that is considered to be constant over a PC's lifetime.
+-
+-                      None of the data here is ever sent to the server.
+-              """
+-              ids = []
+-
+-              # Virtual machines (for example) and some boards have a UUID
+-              # which is globally unique.
+-              for file in ("product_uuid", "product_serial", "chassis_serial"):
+-                      id = read_from_file(os.path.join(SYS_CLASS_DMI, file))
+-                      ids.append(id)
+-
+-              # Sort out all bogous or invalid strings from the list.
+-              _ids = []
+-              for id in ids:
+-                      if id is None:
+-                              continue
+-
+-                      for i in INVALID_ID_STRINGS:
+-                              if i in id:
+-                                      id = None
+-                                      break
+-
+-                      if id:
+-                              _ids.append(id)
+-
+-              ids = _ids
+-
+-              # Use serial number from root disk (if available) and if
+-              # no other ID was found, yet.
+-              if not ids:
+-                      root_disk_serial = self.root_disk_serial
+-                      if root_disk_serial and not root_disk_serial.startswith("QM000"):
+-                              ids.append(root_disk_serial)
+-
+-              # As last resort, we use the UUID from pakfire.
+-              if not ids:
+-                      id = read_from_file("/opt/pakfire/db/uuid")
+-                      ids.append(id)
+-
+-              return "#".join(ids)
+-
+-      @property
+-      def language(self):
+-              """
+-                      Return the language code of IPFire or "unknown" if we cannot get it.
+-              """
+-              # Return "unknown" if settings file does not exist.
+-              filename = "/var/ipfire/main/settings"
+-              if not os.path.exists(filename):
+-                      return "unknown"
+-
+-              with open(filename, "r") as f:
+-                      for line in f.readlines():
+-                              key, val = line.split("=", 1)
+-                              if key == "LANGUAGE":
+-                                      return val.strip()
+-
+-      @property
+-      def release(self):
+-              """
+-                      Return the system release string.
+-              """
+-              return read_from_file("/etc/system-release") or "unknown"
+-
+-      @property
+-      def bios_vendor(self):
+-              """
+-                      Return the bios vendor name.
+-              """
+-              return read_from_file("/sys/class/dmi/id/bios_vendor")
+-
+-      def vendor_model_tuple(self):
+-              try:
+-                      s = self.__cpuinfo["Hardware"]
+-              except KeyError:
+-                      return (None, None)
+-
+-              if s.startswith("ARM-Versatile"):
+-                      return ("ARM", s)
+-
+-              try:
+-                      v, m = s.split(" ", 1)
+-              except ValueError:
+-                      if s.startswith("BCM"):
+-                              v = "Broadcom"
+-                              m = s
+-                      else:
+-                              v = None
+-                              m = s
+-
+-              return v, m
+-
+-      @property
+-      def vendor(self):
+-              """
+-                      Return the vendor string of this system (if any).
+-              """
+-              ret = None
+-              for file in ("sys_vendor", "board_vendor", "chassis_vendor",):
+-                      ret = read_from_file(os.path.join(SYS_CLASS_DMI, file))
+-                      if ret:
+-                              break
+-
+-              if ret is None:
+-                      v, m = self.vendor_model_tuple()
+-                      ret = v
+-
+-              return ret
+-
+-      @property
+-      def model(self):
+-              """
+-                      Return the model string of this system (if any).
+-              """
+-              ret = None
+-              for file in ("product_name", "board_model", "chassis_model",):
+-                      ret = read_from_file(os.path.join(SYS_CLASS_DMI, file))
+-                      if ret:
+-                              break
+-
+-              if ret is None:
+-                      v, m = self.vendor_model_tuple()
+-                      ret = m
+-
+-              return ret
+-
+-      @property
+-      def memory(self):
+-              """
+-                      Return the amount of memory in kilobytes.
+-              """
+-              with open("/proc/meminfo", "r") as f:
+-                      firstline = f.readline().strip()
+-                      return int(firstline.split()[1])
+-
+-      @property
+-      def kernel_release(self):
+-              """
+-                      Return the kernel release string.
+-              """
+-              return os.uname()[2]
+-
+-      @property
+-      def root_disk(self):
+-              """
+-                      Return the dev node of the root disk.
+-              """
+-              with open("/etc/mtab", "r") as f:
+-                      dev, mountpoint, rest = f.readline().split(" ", 2)
+-                      if mountpoint == "/":
+-                              # Cut off /dev
+-                              dev = dev[5:]
+-
+-                              # Handle raids and MMC cards like (mmcblk0p3).
+-                              if dev[-2] == "p":
+-                                      return dev[:-2]
+-
+-                              # Otherwise cut off all digits at end of string
+-                              while dev[-1] in string.digits:
+-                                      dev = dev[:-1]
+-
+-                              return dev
+-
+-      @property
+-      def root_size(self):
+-              """
+-                      Return the size of the root disk in kilobytes.
+-              """
+-              path = "/sys/block/%s/size" % self.root_disk
+-              if not os.path.exists(path):
+-                      return
+-
+-              with open(path, "r") as f:
+-                      return int(f.readline()) * 512 / 1024
+-
+-      @property
+-      def root_disk_serial(self):
+-              """
+-                      Return the serial number of the root disk (if any).
+-              """
+-              serial = _fireinfo.get_harddisk_serial("/dev/%s" % self.root_disk)
+-
+-              if serial:
+-                      # Strip all spaces
+-                      return serial.strip()
+-
+-      def scan(self):
+-              """
+-                      Scan for all devices (PCI/USB) in the system and append them
+-                      to our list.
+-              """
+-              self.devices = []
+-
+-              toscan = (
+-                      ("/sys/bus/pci/devices", device.PCIDevice),
+-                      ("/sys/bus/usb/devices", device.USBDevice)
+-              )
+-              for path, cls in toscan:
+-                      if not os.path.exists(path):
+-                              continue
+-
+-                      dirlist = os.listdir(path)
+-                      for dir in dirlist:
+-                              self.devices.append(cls(os.path.join(path, dir)))
+-
+-      @property
+-      def virtual(self):
+-              """
+-                      Say if the host is running in a virtual environment.
+-              """
+-              return self.hypervisor.virtual
+-
+-      @property
+-      def network(self):
+-              """
+-                      Reference to the network class.
+-              """
+-              return network.Network()
+-
+-
+-if __name__ == "__main__":
+-      s=System()
+-      print s.arch
+-      print s.language
+-      print s.release
+-      print s.bios_vendor
+-      print s.memory
+-      print s.kernel
+-      print s.root_disk
+-      print s.root_size
+-      print "------------\n", s.devices, "\n------------\n"
+-      print json.dumps(s.profile(), sort_keys=True, indent=4)
+diff --git a/m4/.gitignore b/m4/.gitignore
+new file mode 100644
+index 0000000..38066dd
+--- /dev/null
++++ b/m4/.gitignore
+@@ -0,0 +1,5 @@
++libtool.m4
++ltoptions.m4
++ltsugar.m4
++ltversion.m4
++lt~obsolete.m4
+diff --git a/m4/attributes.m4 b/m4/attributes.m4
+new file mode 100644
+index 0000000..7e080da
+--- /dev/null
++++ b/m4/attributes.m4
+@@ -0,0 +1,288 @@
++dnl Macros to check the presence of generic (non-typed) symbols.
++dnl Copyright (c) 2006-2008 Diego Pettenò <flameeyes@gmail.com>
++dnl Copyright (c) 2006-2008 xine project
++dnl Copyright (c) 2012 Lucas De Marchi <lucas.de.marchi@gmail.com>
++dnl
++dnl This program is free software; you can redistribute it and/or modify
++dnl it under the terms of the GNU General Public License as published by
++dnl the Free Software Foundation; either version 2, or (at your option)
++dnl any later version.
++dnl
++dnl This program is distributed in the hope that it will be useful,
++dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
++dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++dnl GNU General Public License for more details.
++dnl
++dnl You should have received a copy of the GNU General Public License
++dnl along with this program; if not, write to the Free Software
++dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
++dnl 02110-1301, USA.
++dnl
++dnl As a special exception, the copyright owners of the
++dnl macro gives unlimited permission to copy, distribute and modify the
++dnl configure scripts that are the output of Autoconf when processing the
++dnl Macro. You need not follow the terms of the GNU General Public
++dnl License when using or distributing such scripts, even though portions
++dnl of the text of the Macro appear in them. The GNU General Public
++dnl License (GPL) does govern all other use of the material that
++dnl constitutes the Autoconf Macro.
++dnl
++dnl This special exception to the GPL applies to versions of the
++dnl Autoconf Macro released by this project. When you make and
++dnl distribute a modified version of the Autoconf Macro, you may extend
++dnl this special exception to the GPL to apply to your modified version as
++dnl well.
++
++dnl Check if FLAG in ENV-VAR is supported by compiler and append it
++dnl to WHERE-TO-APPEND variable
++dnl CC_CHECK_FLAG_APPEND([WHERE-TO-APPEND], [ENV-VAR], [FLAG])
++
++AC_DEFUN([CC_CHECK_FLAG_APPEND], [
++  AC_CACHE_CHECK([if $CC supports flag $3 in envvar $2],
++                 AS_TR_SH([cc_cv_$2_$3]),
++          [eval "AS_TR_SH([cc_save_$2])='${$2}'"
++           eval "AS_TR_SH([$2])='-Werror $3'"
++           AC_COMPILE_IFELSE([AC_LANG_SOURCE([int a = 0; int main(void) { return a; } ])],
++                                    [eval "AS_TR_SH([cc_cv_$2_$3])='yes'"],
++                                    [eval "AS_TR_SH([cc_cv_$2_$3])='no'"])
++           eval "AS_TR_SH([$2])='$cc_save_$2'"])
++
++  AS_IF([eval test x$]AS_TR_SH([cc_cv_$2_$3])[ = xyes],
++        [eval "$1='${$1} $3'"])
++])
++
++dnl CC_CHECK_FLAGS_APPEND([WHERE-TO-APPEND], [ENV-VAR], [FLAG1 FLAG2])
++AC_DEFUN([CC_CHECK_FLAGS_APPEND], [
++  for flag in $3; do
++    CC_CHECK_FLAG_APPEND($1, $2, $flag)
++  done
++])
++
++dnl Check if the flag is supported by linker (cacheable)
++dnl CC_CHECK_LDFLAGS([FLAG], [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND])
++
++AC_DEFUN([CC_CHECK_LDFLAGS], [
++  AC_CACHE_CHECK([if $CC supports $1 flag],
++    AS_TR_SH([cc_cv_ldflags_$1]),
++    [ac_save_LDFLAGS="$LDFLAGS"
++     LDFLAGS="$LDFLAGS $1"
++     AC_LINK_IFELSE([int main() { return 1; }],
++       [eval "AS_TR_SH([cc_cv_ldflags_$1])='yes'"],
++       [eval "AS_TR_SH([cc_cv_ldflags_$1])="])
++     LDFLAGS="$ac_save_LDFLAGS"
++    ])
++
++  AS_IF([eval test x$]AS_TR_SH([cc_cv_ldflags_$1])[ = xyes],
++    [$2], [$3])
++])
++
++dnl define the LDFLAGS_NOUNDEFINED variable with the correct value for
++dnl the current linker to avoid undefined references in a shared object.
++AC_DEFUN([CC_NOUNDEFINED], [
++  dnl We check $host for which systems to enable this for.
++  AC_REQUIRE([AC_CANONICAL_HOST])
++
++  case $host in
++     dnl FreeBSD (et al.) does not complete linking for shared objects when pthreads
++     dnl are requested, as different implementations are present; to avoid problems
++     dnl use -Wl,-z,defs only for those platform not behaving this way.
++     *-freebsd* | *-openbsd*) ;;
++     *)
++        dnl First of all check for the --no-undefined variant of GNU ld. This allows
++        dnl for a much more readable commandline, so that people can understand what
++        dnl it does without going to look for what the heck -z defs does.
++        for possible_flags in "-Wl,--no-undefined" "-Wl,-z,defs"; do
++           CC_CHECK_LDFLAGS([$possible_flags], [LDFLAGS_NOUNDEFINED="$possible_flags"])
++           break
++        done
++     ;;
++  esac
++
++  AC_SUBST([LDFLAGS_NOUNDEFINED])
++])
++
++dnl Check for a -Werror flag or equivalent. -Werror is the GCC
++dnl and ICC flag that tells the compiler to treat all the warnings
++dnl as fatal. We usually need this option to make sure that some
++dnl constructs (like attributes) are not simply ignored.
++dnl
++dnl Other compilers don't support -Werror per se, but they support
++dnl an equivalent flag:
++dnl  - Sun Studio compiler supports -errwarn=%all
++AC_DEFUN([CC_CHECK_WERROR], [
++  AC_CACHE_CHECK(
++    [for $CC way to treat warnings as errors],
++    [cc_cv_werror],
++    [CC_CHECK_CFLAGS_SILENT([-Werror], [cc_cv_werror=-Werror],
++      [CC_CHECK_CFLAGS_SILENT([-errwarn=%all], [cc_cv_werror=-errwarn=%all])])
++    ])
++])
++
++AC_DEFUN([CC_CHECK_ATTRIBUTE], [
++  AC_REQUIRE([CC_CHECK_WERROR])
++  AC_CACHE_CHECK([if $CC supports __attribute__(( ifelse([$2], , [$1], [$2]) ))],
++    AS_TR_SH([cc_cv_attribute_$1]),
++    [ac_save_CFLAGS="$CFLAGS"
++     CFLAGS="$CFLAGS $cc_cv_werror"
++     AC_COMPILE_IFELSE([AC_LANG_SOURCE([$3])],
++       [eval "AS_TR_SH([cc_cv_attribute_$1])='yes'"],
++       [eval "AS_TR_SH([cc_cv_attribute_$1])='no'"])
++     CFLAGS="$ac_save_CFLAGS"
++    ])
++
++  AS_IF([eval test x$]AS_TR_SH([cc_cv_attribute_$1])[ = xyes],
++    [AC_DEFINE(
++       AS_TR_CPP([SUPPORT_ATTRIBUTE_$1]), 1,
++         [Define this if the compiler supports __attribute__(( ifelse([$2], , [$1], [$2]) ))]
++         )
++     $4],
++    [$5])
++])
++
++AC_DEFUN([CC_ATTRIBUTE_CONSTRUCTOR], [
++  CC_CHECK_ATTRIBUTE(
++    [constructor],,
++    [void __attribute__((constructor)) ctor() { int a; }],
++    [$1], [$2])
++])
++
++AC_DEFUN([CC_ATTRIBUTE_FORMAT], [
++  CC_CHECK_ATTRIBUTE(
++    [format], [format(printf, n, n)],
++    [void __attribute__((format(printf, 1, 2))) printflike(const char *fmt, ...) { fmt = (void *)0; }],
++    [$1], [$2])
++])
++
++AC_DEFUN([CC_ATTRIBUTE_FORMAT_ARG], [
++  CC_CHECK_ATTRIBUTE(
++    [format_arg], [format_arg(printf)],
++    [char *__attribute__((format_arg(1))) gettextlike(const char *fmt) { fmt = (void *)0; }],
++    [$1], [$2])
++])
++
++AC_DEFUN([CC_ATTRIBUTE_VISIBILITY], [
++  CC_CHECK_ATTRIBUTE(
++    [visibility_$1], [visibility("$1")],
++    [void __attribute__((visibility("$1"))) $1_function() { }],
++    [$2], [$3])
++])
++
++AC_DEFUN([CC_ATTRIBUTE_NONNULL], [
++  CC_CHECK_ATTRIBUTE(
++    [nonnull], [nonnull()],
++    [void __attribute__((nonnull())) some_function(void *foo, void *bar) { foo = (void*)0; bar = (void*)0; }],
++    [$1], [$2])
++])
++
++AC_DEFUN([CC_ATTRIBUTE_UNUSED], [
++  CC_CHECK_ATTRIBUTE(
++    [unused], ,
++    [void some_function(void *foo, __attribute__((unused)) void *bar);],
++    [$1], [$2])
++])
++
++AC_DEFUN([CC_ATTRIBUTE_SENTINEL], [
++  CC_CHECK_ATTRIBUTE(
++    [sentinel], ,
++    [void some_function(void *foo, ...) __attribute__((sentinel));],
++    [$1], [$2])
++])
++
++AC_DEFUN([CC_ATTRIBUTE_DEPRECATED], [
++  CC_CHECK_ATTRIBUTE(
++    [deprecated], ,
++    [void some_function(void *foo, ...) __attribute__((deprecated));],
++    [$1], [$2])
++])
++
++AC_DEFUN([CC_ATTRIBUTE_ALIAS], [
++  CC_CHECK_ATTRIBUTE(
++    [alias], [weak, alias],
++    [void other_function(void *foo) { }
++     void some_function(void *foo) __attribute__((weak, alias("other_function")));],
++    [$1], [$2])
++])
++
++AC_DEFUN([CC_ATTRIBUTE_MALLOC], [
++  CC_CHECK_ATTRIBUTE(
++    [malloc], ,
++    [void * __attribute__((malloc)) my_alloc(int n);],
++    [$1], [$2])
++])
++
++AC_DEFUN([CC_ATTRIBUTE_PACKED], [
++  CC_CHECK_ATTRIBUTE(
++    [packed], ,
++    [struct astructure { char a; int b; long c; void *d; } __attribute__((packed));],
++    [$1], [$2])
++])
++
++AC_DEFUN([CC_ATTRIBUTE_CONST], [
++  CC_CHECK_ATTRIBUTE(
++    [const], ,
++    [int __attribute__((const)) twopow(int n) { return 1 << n; } ],
++    [$1], [$2])
++])
++
++AC_DEFUN([CC_FLAG_VISIBILITY], [
++  AC_REQUIRE([CC_CHECK_WERROR])
++  AC_CACHE_CHECK([if $CC supports -fvisibility=hidden],
++    [cc_cv_flag_visibility],
++    [cc_flag_visibility_save_CFLAGS="$CFLAGS"
++     CFLAGS="$CFLAGS $cc_cv_werror"
++     CC_CHECK_CFLAGS_SILENT([-fvisibility=hidden],
++     cc_cv_flag_visibility='yes',
++     cc_cv_flag_visibility='no')
++     CFLAGS="$cc_flag_visibility_save_CFLAGS"])
++
++  AS_IF([test "x$cc_cv_flag_visibility" = "xyes"],
++    [AC_DEFINE([SUPPORT_FLAG_VISIBILITY], 1,
++       [Define this if the compiler supports the -fvisibility flag])
++     $1],
++    [$2])
++])
++
++AC_DEFUN([CC_FUNC_EXPECT], [
++  AC_REQUIRE([CC_CHECK_WERROR])
++  AC_CACHE_CHECK([if compiler has __builtin_expect function],
++    [cc_cv_func_expect],
++    [ac_save_CFLAGS="$CFLAGS"
++     CFLAGS="$CFLAGS $cc_cv_werror"
++     AC_COMPILE_IFELSE([AC_LANG_SOURCE(
++       [int some_function() {
++        int a = 3;
++        return (int)__builtin_expect(a, 3);
++     }])],
++       [cc_cv_func_expect=yes],
++       [cc_cv_func_expect=no])
++     CFLAGS="$ac_save_CFLAGS"
++    ])
++
++  AS_IF([test "x$cc_cv_func_expect" = "xyes"],
++    [AC_DEFINE([SUPPORT__BUILTIN_EXPECT], 1,
++     [Define this if the compiler supports __builtin_expect() function])
++     $1],
++    [$2])
++])
++
++AC_DEFUN([CC_ATTRIBUTE_ALIGNED], [
++  AC_REQUIRE([CC_CHECK_WERROR])
++  AC_CACHE_CHECK([highest __attribute__ ((aligned ())) supported],
++    [cc_cv_attribute_aligned],
++    [ac_save_CFLAGS="$CFLAGS"
++     CFLAGS="$CFLAGS $cc_cv_werror"
++     for cc_attribute_align_try in 64 32 16 8 4 2; do
++        AC_COMPILE_IFELSE([AC_LANG_SOURCE([
++          int main() {
++            static char c __attribute__ ((aligned($cc_attribute_align_try))) = 0;
++            return c;
++          }])], [cc_cv_attribute_aligned=$cc_attribute_align_try; break])
++     done
++     CFLAGS="$ac_save_CFLAGS"
++  ])
++
++  if test "x$cc_cv_attribute_aligned" != "x"; then
++     AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX], [$cc_cv_attribute_aligned],
++       [Define the highest alignment supported])
++  fi
++])
+diff --git a/runpychecker.sh b/runpychecker.sh
+index 407b7d6..64366fd 100755
+--- a/runpychecker.sh
++++ b/runpychecker.sh
+@@ -5,4 +5,4 @@ pychecker --only --limit 1000 \
+       --no-callinit --no-local --no-shadow --no-shadowbuiltin \
+       --no-import --no-miximport --no-pkgimport --no-reimport \
+       --no-argsused --no-varargsused --no-override \
+-      fireinfo/*.py
++      src/fireinfo/*.py
+diff --git a/sendprofile b/sendprofile
+deleted file mode 100644
+index da480ce..0000000
+--- a/sendprofile
++++ /dev/null
+@@ -1,132 +0,0 @@
+-#!/usr/bin/python
+-###############################################################################
+-#                                                                             #
+-# Fireinfo                                                                    #
+-# Copyright (C) 2010, 2011 IPFire Team (www.ipfire.org)                       #
+-#                                                                             #
+-# This program is free software: you can redistribute it and/or modify        #
+-# it under the terms of the GNU General Public License as published by        #
+-# the Free Software Foundation, either version 3 of the License, or           #
+-# (at your option) any later version.                                         #
+-#                                                                             #
+-# This program is distributed in the hope that it will be useful,             #
+-# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
+-# GNU General Public License for more details.                                #
+-#                                                                             #
+-# You should have received a copy of the GNU General Public License           #
+-# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
+-#                                                                             #
+-###############################################################################
+-
+-import json
+-import logging
+-import logging.handlers
+-import os
+-import sys
+-import urllib
+-import urllib2
+-
+-import fireinfo
+-
+-ENABLED_FILE = "/var/ipfire/main/send_profile"
+-PROXY_SETTINGS = "/var/ipfire/proxy/advanced/settings"
+-
+-log_level = logging.INFO
+-if "-d" in sys.argv:
+-      log_level = logging.DEBUG
+-
+-# Setup logging
+-log = logging.getLogger()
+-log.setLevel(log_level)
+-log.addHandler(logging.handlers.SysLogHandler("/dev/log"))
+-log.addHandler(logging.StreamHandler(sys.stderr))
+-for handler in log.handlers:
+-      handler.setLevel(log_level)
+-
+-PROFILE_URL = "http://fireinfo.ipfire.org/send/%(public_id)s"
+-
+-def get_upstream_proxy():
+-      if not os.path.exists(PROXY_SETTINGS):
+-              return {"host" : ""}
+-
+-      proxy_settings = {}
+-      with open(PROXY_SETTINGS) as f:
+-              for line in f.readlines():
+-                      k, v = line.split("=", 1)
+-                      proxy_settings[k] = v.strip()
+-
+-      return {
+-              "host" : proxy_settings.get("UPSTREAM_PROXY", ""),
+-              "user" : proxy_settings.get("UPSTREAM_USER", ""),
+-              "pass" : proxy_settings.get("UPSTREAM_PASSWORD", ""),
+-      }
+-
+-def send_profile(profile):
+-      logging.debug("Sending profile:")
+-      for line in json.dumps(profile, sort_keys=True, indent=4).splitlines():
+-              logging.debug(line)
+-
+-      request = urllib2.Request(PROFILE_URL % profile,
+-              data = urllib.urlencode({"profile" : json.dumps(profile)}),
+-      )
+-      request.add_header("User-Agent", "fireinfo/%s" % fireinfo.__version__)
+-
+-      # Set upstream proxy if we have one.
+-      # XXX this cannot handle authentication
+-      proxy = get_upstream_proxy()
+-      if proxy["host"]:
+-              request.set_proxy(proxy["host"], "http")
+-
+-      try:
+-              urllib2.urlopen(request, timeout=60)
+-      except (urllib2.HTTPError, urllib2.URLError), e:
+-              reason = "Unknown reason"
+-
+-              if isinstance(e, urllib2.HTTPError):
+-                      reason = "%s" % e
+-              elif isinstance(e, urllib2.URLError):
+-                      reason = e.reason
+-
+-              logging.error("Profile was not sent propertly: %s" % reason)
+-              return
+-
+-      logging.debug("Profile was sent successfully.")
+-
+-def main():
+-      # Collect system information
+-      system = fireinfo.System()
+-      profile = system.profile()
+-
+-      # If --dump is passed -> only dump the output.
+-      if "--dump" in sys.argv:
+-              # Remove the private id when dumping the profile because
+-              # it contains no information and may confuse people.
+-              del profile["private_id"]
+-
+-              print json.dumps(profile, sort_keys=True, indent=4)
+-              return 0
+-
+-      if "--secret-id" in sys.argv:
+-              print system.secret_id
+-              return 0
+-
+-      if "--hardware-string" in sys.argv:
+-              print system._unique_id
+-              return 0
+-
+-      if "--public-id" in sys.argv:
+-              print system.public_id
+-              return 0
+-
+-      if not os.path.exists(ENABLED_FILE):
+-              del profile["profile"]
+-
+-      try:
+-              send_profile(profile)
+-      except urllib2.URLError:
+-              return 1
+-
+-      return 0
+-
+-sys.exit(main())
+diff --git a/setup.py b/setup.py
+deleted file mode 100644
+index 8149f0a..0000000
+--- a/setup.py
++++ /dev/null
+@@ -1,37 +0,0 @@
+-#!/usr/bin/python
+-###############################################################################
+-#                                                                             #
+-# Fireinfo                                                                    #
+-# Copyright (C) 2010, 2011 IPFire Team (www.ipfire.org)                       #
+-#                                                                             #
+-# This program is free software: you can redistribute it and/or modify        #
+-# it under the terms of the GNU General Public License as published by        #
+-# the Free Software Foundation, either version 3 of the License, or           #
+-# (at your option) any later version.                                         #
+-#                                                                             #
+-# This program is distributed in the hope that it will be useful,             #
+-# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
+-# GNU General Public License for more details.                                #
+-#                                                                             #
+-# You should have received a copy of the GNU General Public License           #
+-# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
+-#                                                                             #
+-###############################################################################
+-
+-from distutils.core import setup, Extension
+-
+-setup(
+-      name = "fireinfo",
+-      version = "2.1.7",
+-      description = "Hardware information gathering library.",
+-      license = "GPLv3",
+-      author = "IPFire.org Team",
+-      author_email = "info@ipfire.org",
+-      url = "https://bugzilla.ipfire.org/describecomponents.cgi?product=Fireinfo",
+-      ext_modules = [
+-              Extension("_fireinfo", ["src/fireinfo.c"])
+-      ],
+-      packages = ["fireinfo"],
+-      scripts = ["sendprofile"],
+-)
+diff --git a/src/_fireinfo/fireinfo.c b/src/_fireinfo/fireinfo.c
+new file mode 100644
+index 0000000..08d714b
+--- /dev/null
++++ b/src/_fireinfo/fireinfo.c
+@@ -0,0 +1,231 @@
++/*
++ * Fireinfo
++ * Copyright (C) 2010, 2011 IPFire Team (www.ipfire.org)
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
++ */
++
++#include <Python.h>
++
++#include <errno.h>
++#include <fcntl.h>
++#include <linux/hdreg.h>
++#include <stdbool.h>
++#include <string.h>
++#include <sys/ioctl.h>
++
++/* hypervisor vendors */
++enum hypervisors {
++      HYPER_NONE       = 0,
++      HYPER_XEN,
++      HYPER_KVM,
++      HYPER_MSHV,
++      HYPER_VMWARE,
++      HYPER_OTHER,
++      HYPER_LAST /* for loop - must be last*/
++};
++
++const char *hypervisor_ids[] = {
++      [HYPER_NONE]    = NULL,
++      [HYPER_XEN]     = "XenVMMXenVMM",
++      [HYPER_KVM]     = "KVMKVMKVM",
++      /* http://msdn.microsoft.com/en-us/library/ff542428.aspx */
++      [HYPER_MSHV]    = "Microsoft Hv",
++      /* http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1009458 */
++      [HYPER_VMWARE]  = "VMwareVMware",
++      [HYPER_OTHER]   = NULL
++};
++
++const char *hypervisor_vendors[] = {
++      [HYPER_NONE]    = NULL,
++      [HYPER_XEN]     = "Xen",
++      [HYPER_KVM]     = "KVM",
++      [HYPER_MSHV]    = "Microsoft",
++      [HYPER_VMWARE]  = "VMWare",
++      [HYPER_OTHER]   = "other"
++};
++
++#define NEWLINE "\n\r"
++
++char *truncate_nl(char *s) {
++      assert(s);
++
++      s[strcspn(s, NEWLINE)] = 0;
++      return s;
++}
++
++int read_one_line_file(const char *filename, char **line) {
++      assert(filename);
++      assert(line);
++
++      FILE *f = NULL;
++      f = fopen(filename, "re");
++      if (!f)
++              return -errno;
++
++      char t[2048];
++      if (!fgets(t, sizeof(t), f)) {
++              if (ferror(f))
++                      return errno ? -errno : -EIO;
++
++              t[0] = 0;
++      }
++
++      char *c = strdup(t);
++      if (!c)
++              return -ENOMEM;
++      truncate_nl(c);
++
++      *line = c;
++      return 0;
++}
++
++/*
++ * This CPUID leaf returns the information about the hypervisor.
++ * EAX : maximum input value for CPUID supported by the hypervisor.
++ * EBX, ECX, EDX : Hypervisor vendor ID signature. E.g. VMwareVMware.
++ */
++#define HYPERVISOR_INFO_LEAF   0x40000000
++
++int detect_hypervisor(int *hypervisor) {
++#if defined(__x86_64__) || defined(__i386__)
++      /* Try high-level hypervisor sysfs file first: */
++      char *hvtype = NULL;
++      int r = read_one_line_file("/sys/hypervisor/type", &hvtype);
++      if (r >= 0) {
++              if (strcmp(hvtype, "xen") == 0) {
++                      *hypervisor = HYPER_XEN;
++                      return 1;
++              }
++      } else if (r != -ENOENT)
++              return r;
++
++      /* http://lwn.net/Articles/301888/ */
++
++#if defined(__amd64__)
++#define REG_a "rax"
++#define REG_b "rbx"
++#elif defined(__i386__)
++#define REG_a "eax"
++#define REG_b "ebx"
++#endif
++
++      uint32_t eax = 1;
++      uint32_t ecx;
++      union {
++              uint32_t sig32[3];
++              char text[13];
++      } sig = {};
++
++      __asm__ __volatile__ (
++              /* ebx/rbx is being used for PIC! */
++              "  push %%"REG_b"       \n\t"
++              "  cpuid                \n\t"
++              "  pop %%"REG_b"        \n\t"
++
++              : "=a" (eax), "=c" (ecx)
++              : "0" (eax)
++      );
++
++      bool has_hypervisor = !!(ecx & 0x80000000U);
++
++      if (has_hypervisor) {
++              /* There is a hypervisor, see what it is... */
++              eax = 0x40000000U;
++              __asm__ __volatile__ (
++                      "  push %%"REG_b"       \n\t"
++                      "  cpuid                \n\t"
++                      "  mov %%ebx, %1        \n\t"
++                      "  pop %%"REG_b"        \n\t"
++
++                      : "=a" (eax), "=r" (sig.sig32[0]), "=c" (sig.sig32[1]), "=d" (sig.sig32[2])
++                      : "0" (eax)
++              );
++              sig.text[12] = '\0';
++
++              *hypervisor = HYPER_OTHER;
++
++              int id;
++              for (id = HYPER_NONE + 1; id < HYPER_LAST; id++) {
++                      if (strcmp(hypervisor_ids[id], sig.text) == 0) {
++                              *hypervisor = id;
++                              break;
++                      }
++              }
++
++              return 1;
++      }
++#endif
++      return 0;
++}
++
++
++static PyObject *
++do_detect_hypervisor() {
++      /*
++              Get hypervisor from the cpuid command.
++      */
++      int hypervisor = HYPER_NONE;
++
++      int r = detect_hypervisor(&hypervisor);
++      if (r >= 1) {
++              const char* hypervisor_vendor = hypervisor_vendors[hypervisor];
++              if (!hypervisor_vendor)
++                      Py_RETURN_NONE;
++
++              return PyString_FromString(hypervisor_vendor);
++      }
++
++      Py_RETURN_NONE;
++}
++
++static PyObject *
++do_get_harddisk_serial(PyObject *o, PyObject *args) {
++      /*
++              Python wrapper around read_harddisk_serial.
++      */
++      static struct hd_driveid hd;
++      int fd;
++      char *device;
++
++      if (!PyArg_ParseTuple(args, "s", &device))
++              return NULL;
++
++      if ((fd = open(device, O_RDONLY | O_NONBLOCK)) < 0)
++              return NULL;
++
++      if (!ioctl(fd, HDIO_GET_IDENTITY, &hd)) {
++              char serial[21];
++              strncpy(serial, (const char *)hd.serial_no, sizeof(serial));
++
++              if (serial[0])
++                      return PyString_FromString(serial);
++      }
++
++      Py_RETURN_NONE;
++}
++
++static PyMethodDef fireinfoModuleMethods[] = {
++      { "detect_hypervisor", (PyCFunction) do_detect_hypervisor, METH_NOARGS, NULL },
++      { "get_harddisk_serial", (PyCFunction) do_get_harddisk_serial, METH_VARARGS, NULL },
++      { NULL, NULL, 0, NULL }
++};
++
++void init_fireinfo(void) {
++      PyObject *m;
++
++      m = Py_InitModule("_fireinfo", fireinfoModuleMethods);
++      if (m == NULL)
++              return;
++}
+diff --git a/src/fireinfo.c b/src/fireinfo.c
+deleted file mode 100644
+index 25b5333..0000000
+--- a/src/fireinfo.c
++++ /dev/null
+@@ -1,427 +0,0 @@
+-/*
+- * Fireinfo
+- * Copyright (C) 2010, 2011 IPFire Team (www.ipfire.org)
+- *
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 3 of the License, or
+- * (at your option) any later version.
+- *
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU General Public License for more details.
+- *
+- * You should have received a copy of the GNU General Public License
+- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+- */
+-
+-#include <Python.h>
+-
+-#include <fcntl.h>
+-#include <linux/hdreg.h>
+-#include <stdbool.h>
+-#include <sys/ioctl.h>
+-
+-/*
+-      Big parts of this were taken from
+-      http://git.kernel.org/?p=utils/util-linux-ng/util-linux-ng.git;a=blob;f=sys-utils/lscpu.c
+-*/
+-
+-/* /sys paths */
+-#define _PATH_PROC_XEN                "/proc/xen"
+-#define _PATH_PROC_XENCAP     _PATH_PROC_XEN "/capabilities"
+-#define _PATH_PROC_PCIDEVS    "/proc/bus/pci/devices"
+-
+-/* Used for the vmware hypervisor port detection */
+-#define VMWARE_HYPERVISOR_MAGIC 0x564D5868
+-#define VMWARE_HYPERVISOR_PORT  0x5658
+-
+-#define VMWARE_PORT_CMD_GETVERSION      10
+-
+-/* virtualization types */
+-enum {
+-      VIRT_NONE       = 0,
+-      VIRT_PARA,
+-      VIRT_FULL
+-};
+-const char *virt_types[] = {
+-      [VIRT_NONE]     = "none",
+-      [VIRT_PARA]     = "para",
+-      [VIRT_FULL]     = "full"
+-};
+-
+-/* hypervisor vendors */
+-enum {
+-      HYPER_NONE      = 0,
+-      HYPER_XEN,
+-      HYPER_KVM,
+-      HYPER_MSHV,
+-      HYPER_VMWARE
+-};
+-const char *hv_vendors[] = {
+-      [HYPER_NONE]    = NULL,
+-      [HYPER_XEN]     = "Xen",
+-      [HYPER_KVM]     = "KVM",
+-      [HYPER_MSHV]    = "Microsoft",
+-      [HYPER_VMWARE]  = "VMWare"
+-};
+-
+-struct hypervisor_desc {
+-      int hyper;              /* hypervisor vendor ID */
+-      int virtype;    /* VIRT_PARA|FULL|NONE ? */
+-};
+-
+-static size_t sysrootlen;
+-static char pathbuf[PATH_MAX];
+-
+-static FILE *path_fopen(const char *mode, const char *path, ...)
+-              __attribute__ ((__format__ (__printf__, 2, 3)));
+-static int path_exist(const char *path, ...)
+-              __attribute__ ((__format__ (__printf__, 1, 2)));
+-
+-static const char *
+-path_vcreate(const char *path, va_list ap)
+-{
+-      if (sysrootlen)
+-              vsnprintf(pathbuf + sysrootlen,
+-                        sizeof(pathbuf) - sysrootlen, path, ap);
+-      else
+-              vsnprintf(pathbuf, sizeof(pathbuf), path, ap);
+-      return pathbuf;
+-}
+-
+-static FILE *
+-path_vfopen(const char *mode, const char *path, va_list ap)
+-{
+-      const char *p = path_vcreate(path, ap);
+-
+-      return fopen(p, mode);
+-}
+-
+-static FILE *
+-path_fopen(const char *mode, const char *path, ...)
+-{
+-      FILE *fd;
+-      va_list ap;
+-
+-      va_start(ap, path);
+-      fd = path_vfopen(mode, path, ap);
+-      va_end(ap);
+-
+-      return fd;
+-}
+-
+-static int
+-path_exist(const char *path, ...)
+-{
+-      va_list ap;
+-      const char *p;
+-
+-      va_start(ap, path);
+-      p = path_vcreate(path, ap);
+-      va_end(ap);
+-
+-      return access(p, F_OK) == 0;
+-}
+-
+-static int
+-has_pci_device(int vendor, int device)
+-{
+-      FILE *f;
+-      int num, fn, ven, dev;
+-      int res = 1;
+-
+-      f = path_fopen("r", _PATH_PROC_PCIDEVS);
+-      if (!f)
+-              return 0;
+-
+-       /* for more details about bus/pci/devices format see
+-        * drivers/pci/proc.c in linux kernel
+-        */
+-      while(fscanf(f, "%02x%02x\t%04x%04x\t%*[^\n]",
+-                      &num, &fn, &ven, &dev) == 4) {
+-
+-              if (ven == vendor && dev == device)
+-                      goto found;
+-      }
+-
+-      res = 0;
+-found:
+-      fclose(f);
+-      return res;
+-}
+-
+-#if defined(__x86_64__) || defined(__i386__)
+-
+-/*
+- * This CPUID leaf returns the information about the hypervisor.
+- * EAX : maximum input value for CPUID supported by the hypervisor.
+- * EBX, ECX, EDX : Hypervisor vendor ID signature. E.g. VMwareVMware.
+- */
+-#define HYPERVISOR_INFO_LEAF   0x40000000
+-
+-static inline void
+-cpuid(unsigned int op, unsigned int *eax, unsigned int *ebx,
+-                       unsigned int *ecx, unsigned int *edx)
+-{
+-      __asm__(
+-#if defined(__PIC__) && defined(__i386__)
+-              /* x86 PIC cannot clobber ebx -- gcc bitches */
+-              "pushl %%ebx;"
+-              "cpuid;"
+-              "movl %%ebx, %%esi;"
+-              "popl %%ebx;"
+-              : "=S" (*ebx),
+-#else
+-              "cpuid;"
+-              : "=b" (*ebx),
+-#endif
+-                "=a" (*eax),
+-                "=c" (*ecx),
+-                "=d" (*edx)
+-              : "1" (op), "c"(0));
+-}
+-
+-static void
+-read_hypervisor_cpuid(struct hypervisor_desc *desc)
+-{
+-      unsigned int eax = 0, ebx = 0, ecx = 0, edx = 0;
+-      char hyper_vendor_id[13];
+-
+-      memset(hyper_vendor_id, 0, sizeof(hyper_vendor_id));
+-
+-      cpuid(HYPERVISOR_INFO_LEAF, &eax, &ebx, &ecx, &edx);
+-      memcpy(hyper_vendor_id + 0, &ebx, 4);
+-      memcpy(hyper_vendor_id + 4, &ecx, 4);
+-      memcpy(hyper_vendor_id + 8, &edx, 4);
+-      hyper_vendor_id[12] = '\0';
+-
+-      if (!hyper_vendor_id[0])
+-              return;
+-
+-      if (!strncmp("XenVMMXenVMM", hyper_vendor_id, 12))
+-              desc->hyper = HYPER_XEN;
+-      else if (!strncmp("KVMKVMKVM", hyper_vendor_id, 9))
+-              desc->hyper = HYPER_KVM;
+-      else if (!strncmp("Microsoft Hv", hyper_vendor_id, 12))
+-              desc->hyper = HYPER_MSHV;
+-      else if (!strncmp("VMwareVMware", hyper_vendor_id, 12))
+-              desc->hyper = HYPER_VMWARE;
+-}
+-
+-#else /* ! __x86_64__ */
+-static void
+-read_hypervisor_cpuid(struct hypervisor_desc *desc)
+-{
+-}
+-#endif
+-
+-static void
+-read_hypervisor(struct hypervisor_desc *desc)
+-{
+-      read_hypervisor_cpuid(desc);
+-
+-      if (desc->hyper)
+-              /* hvm */
+-              desc->virtype = VIRT_FULL;
+-
+-      else if (path_exist(_PATH_PROC_XEN)) {
+-              /* Xen para-virt or dom0 */
+-              FILE *fd = path_fopen("r", _PATH_PROC_XENCAP);
+-              int dom0 = 0;
+-
+-              if (fd) {
+-                      char buf[256];
+-
+-                      if (fscanf(fd, "%s", buf) == 1 &&
+-                          !strcmp(buf, "control_d"))
+-                              dom0 = 1;
+-                      fclose(fd);
+-              }
+-              desc->virtype = dom0 ? VIRT_NONE : VIRT_PARA;
+-              desc->hyper = HYPER_XEN;
+-
+-      } else if (has_pci_device(0x5853, 0x0001)) {
+-              /* Xen full-virt on non-x86_64 */
+-              desc->hyper = HYPER_XEN;
+-              desc->virtype = VIRT_FULL;
+-      }
+-}
+-
+-static void
+-read_harddisk_serial(char *device, char *serial) {
+-      static struct hd_driveid hd;
+-      int fd;
+-
+-      if ((fd = open(device, O_RDONLY | O_NONBLOCK)) < 0) {
+-          return;
+-      }
+-
+-      if (!ioctl(fd, HDIO_GET_IDENTITY, &hd)) {
+-          strncpy(serial, (const char *)hd.serial_no, 20);
+-      }
+-}
+-
+-#if defined(__x86_64__) || defined(__i386__)
+-static bool
+-is_virtualized() {
+-      unsigned int eax, ebx, ecx, edx;
+-
+-      cpuid(0x1, &eax, &ebx, &ecx, &edx);
+-
+-      /*
+-              Bitwise detection of the 31st bit.
+-              This indicates if a host runs in a virtual environment.
+-      */
+-      if (ecx & (1<<31))
+-              return true;
+-
+-      return false;
+-}
+-
+-void
+-hypervisor_port(unsigned int cmd, unsigned int *eax, unsigned int *ebx,
+-              unsigned int *ecx, unsigned int *edx)
+-{
+-      __asm__(
+-#if defined(__PIC__) && defined(__i386__)
+-              /* x86 PIC really cannot clobber ebx */
+-              "pushl %%ebx;"
+-              "inl (%%dx);"
+-              "movl %%ebx, %%esi;"
+-              "popl %%ebx;"
+-              : "=S" (*ebx),
+-#else
+-              "inl (%%dx);"
+-              : "=b" (*ebx),
+-#endif
+-                "=a" (*eax),
+-                "=c" (*ecx),
+-                "=d" (*edx)
+-              : "0" (VMWARE_HYPERVISOR_MAGIC),
+-                "1" (cmd),
+-                "2" (VMWARE_HYPERVISOR_PORT),
+-                "3" (UINT_MAX)
+-              : "memory"
+-      );
+-}
+-#else
+-static bool
+-is_virtualized() {
+-      /*
+-              Always return false, because other architectures
+-              do not support the virtualization bit.
+-      */
+-      return false;
+-}
+-
+-void
+-hypervisor_port(unsigned int cmd, unsigned int *eax, unsigned int *ebx,
+-              unsigned int *ecx, unsigned int *edx)
+-{
+-}
+-#endif
+-
+-int
+-hypervisor_port_check(void) {
+-              uint32_t eax, ebx, ecx, edx;
+-
+-              hypervisor_port(VMWARE_PORT_CMD_GETVERSION, &eax, &ebx, &ecx, &edx);
+-
+-              if (ebx == VMWARE_HYPERVISOR_MAGIC)
+-                      return 1; // Success - running under VMware
+-              else
+-                      return 0;
+-}
+-
+-static PyObject *
+-do_get_hypervisor() {
+-      /*
+-              Get hypervisor from the cpuid command.
+-      */
+-      struct hypervisor_desc _desc, *desc = &_desc;
+-      memset(desc, 0, sizeof(*desc));
+-
+-      read_hypervisor(desc);
+-
+-      PyObject *d = PyDict_New();
+-      PyObject *o;
+-
+-      /* Hypervisor */
+-      if (desc->hyper == HYPER_NONE) {
+-              o = Py_None;
+-      } else {
+-              o = PyString_FromString((const char *)hv_vendors[desc->hyper]);
+-      }
+-      PyDict_SetItemString(d, "hypervisor", o);
+-
+-      /* Virtualization type */
+-      if (desc->virtype == VIRT_NONE) {
+-              o = Py_None;
+-      } else {
+-              o = PyString_FromString((const char *)virt_types[desc->virtype]);
+-      }
+-      PyDict_SetItemString(d, "virtype", o);
+-
+-      return d;
+-}
+-
+-static PyObject *
+-do_is_virtualized() {
+-      /*
+-              Python wrapper around is_virtualized().
+-      */
+-
+-      if (is_virtualized())
+-              return Py_True;
+-
+-      return Py_False;
+-}
+-
+-static PyObject *
+-do_get_harddisk_serial(PyObject *o, PyObject *args) {
+-      /*
+-              Python wrapper around read_harddisk_serial.
+-      */
+-
+-      char serial[21];
+-      memset(serial, 0, sizeof(serial));
+-
+-      char *device;
+-      if (!PyArg_ParseTuple(args, "s", &device))
+-              return NULL;
+-
+-      read_harddisk_serial(device, serial);
+-
+-      if (serial[0])
+-              return PyString_FromString(serial);
+-
+-      return Py_None;
+-}
+-
+-static PyObject *
+-do_hypervisor_port_check() {
+-      /*
+-              Python wrapper around hypervisor_port_check().
+-      */
+-
+-      if (hypervisor_port_check())
+-              return Py_True;
+-
+-      return Py_False;
+-}
+-
+-static PyMethodDef fireinfoModuleMethods[] = {
+-      { "get_hypervisor", (PyCFunction) do_get_hypervisor, METH_NOARGS, NULL },
+-      { "is_virtualized", (PyCFunction) do_is_virtualized, METH_NOARGS, NULL },
+-      { "get_harddisk_serial", (PyCFunction) do_get_harddisk_serial, METH_VARARGS, NULL },
+-      { "vmware_hypervisor_port_check", (PyCFunction) do_hypervisor_port_check, METH_NOARGS, NULL },
+-      { NULL, NULL, 0, NULL }
+-};
+-
+-void init_fireinfo(void) {
+-      PyObject *m;
+-
+-      m = Py_InitModule("_fireinfo", fireinfoModuleMethods);
+-}
+diff --git a/src/fireinfo/__init__.py.in b/src/fireinfo/__init__.py.in
+new file mode 100644
+index 0000000..05c520e
+--- /dev/null
++++ b/src/fireinfo/__init__.py.in
+@@ -0,0 +1,24 @@
++#!/usr/bin/python
++###############################################################################
++#                                                                             #
++# Fireinfo                                                                    #
++# Copyright (C) 2010, 2011 IPFire Team (www.ipfire.org)                       #
++#                                                                             #
++# This program is free software: you can redistribute it and/or modify        #
++# it under the terms of the GNU General Public License as published by        #
++# the Free Software Foundation, either version 3 of the License, or           #
++# (at your option) any later version.                                         #
++#                                                                             #
++# This program is distributed in the hope that it will be useful,             #
++# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
++# GNU General Public License for more details.                                #
++#                                                                             #
++# You should have received a copy of the GNU General Public License           #
++# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
++#                                                                             #
++###############################################################################
++
++__version__ = "@PACKAGE_VERSION@"
++
++from system import System
+diff --git a/src/fireinfo/bios.py b/src/fireinfo/bios.py
+new file mode 100644
+index 0000000..56e3af0
+--- /dev/null
++++ b/src/fireinfo/bios.py
+@@ -0,0 +1,50 @@
++#!/usr/bin/python
++###############################################################################
++#                                                                             #
++# Fireinfo                                                                    #
++# Copyright (C) 2013 IPFire Team (www.ipfire.org)                             #
++#                                                                             #
++# This program is free software: you can redistribute it and/or modify        #
++# it under the terms of the GNU General Public License as published by        #
++# the Free Software Foundation, either version 3 of the License, or           #
++# (at your option) any later version.                                         #
++#                                                                             #
++# This program is distributed in the hope that it will be useful,             #
++# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
++# GNU General Public License for more details.                                #
++#                                                                             #
++# You should have received a copy of the GNU General Public License           #
++# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
++#                                                                             #
++###############################################################################
++
++import os.path
++
++DMI_VENDORS = [
++      "/sys/class/dmi/id/sys_vendor",
++      "/sys/class/dmi/id/board_vendor",
++      "/sys/class/dmi/id/bios_vendor",
++]
++
++class BIOS(object):
++      def __init__(self, system):
++              self.system = system
++
++      def check_vendor(self, vendor, startswith=True):
++              for file in DMI_VENDORS:
++                      if not os.path.exists(file):
++                              continue
++
++                      with open(file, "r") as f:
++                              v = f.read()
++
++                      # Strip the vendor string.
++                      v = v.strip()
++
++                      if startswith and v.startswith(vendor):
++                              return True
++                      elif v == vendor:
++                              return True
++
++              return False
+diff --git a/src/fireinfo/cpu.py b/src/fireinfo/cpu.py
+new file mode 100644
+index 0000000..32d885d
+--- /dev/null
++++ b/src/fireinfo/cpu.py
+@@ -0,0 +1,194 @@
++#!/usr/bin/python
++###############################################################################
++#                                                                             #
++# Fireinfo                                                                    #
++# Copyright (C) 2010, 2011 IPFire Team (www.ipfire.org)                       #
++#                                                                             #
++# This program is free software: you can redistribute it and/or modify        #
++# it under the terms of the GNU General Public License as published by        #
++# the Free Software Foundation, either version 3 of the License, or           #
++# (at your option) any later version.                                         #
++#                                                                             #
++# This program is distributed in the hope that it will be useful,             #
++# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
++# GNU General Public License for more details.                                #
++#                                                                             #
++# You should have received a copy of the GNU General Public License           #
++# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
++#                                                                             #
++###############################################################################
++
++import os
++
++import system
++
++PROC_CPUINFO = "/proc/cpuinfo"
++
++class CPU(object):
++      """
++              A class that represents the first CPU in a system.
++
++              We get all information form the first CPU (or core) and assume that
++              all other ones are equal.
++      """
++
++      __cpuinfo = {}
++
++      def __init__(self):
++              """
++                      Initialize this class by reading all data from /proc/cpuinfo.
++              """
++              self.__cpuinfo = self.read_cpuinfo()
++
++      @property
++      def system(self):
++              return system.System()
++
++      @staticmethod
++      def read_cpuinfo():
++              """
++                      Read information from PROC_CPUINFO and store
++                      it into a dictionary cpuinfo.
++              """
++              cpuinfo = {}
++
++              f = open(PROC_CPUINFO)
++              while True:
++                      line = f.readline()
++
++                      if not line:
++                              break
++
++                      try:
++                              key, val = line.split(":", 1)
++                      except ValueError:
++                              # We got a line without key, pass that.
++                              pass
++
++                      key = key.strip().replace(" ", "_")
++                      val = val.strip()
++
++                      cpuinfo[key] = val
++
++              f.close()
++
++              return cpuinfo
++
++      @property
++      def bogomips(self):
++              """
++                      Return the bogomips of this CPU.
++              """
++              try:
++                      bogomips = self.__cpuinfo["bogomips"]
++              except KeyError:
++                      bogomips = self.__cpuinfo["BogoMIPS"]
++
++              return float(bogomips)
++
++      @property
++      def model(self):
++              """
++                      Return the model id of this CPU.
++              """
++              try:
++                      model = int(self.__cpuinfo["model"])
++              except KeyError:
++                      model = None
++
++              return model
++
++      @property
++      def model_string(self):
++              """
++                      Return the model string of this CPU.
++              """
++              try:
++                      return self.__cpuinfo["model_name"]
++              except KeyError:
++                      return self.__cpuinfo["Processor"]
++
++      @property
++      def vendor(self):
++              """
++                      Return the vendor string of this CPU.
++              """
++              try:
++                      vendor = self.__cpuinfo["vendor_id"]
++              except KeyError:
++                      if self.system.arch.startswith("arm"):
++                              vendor = "ARM"
++                      else:
++                              vendor = ""
++
++              return vendor
++
++      @property
++      def stepping(self):
++              """
++                      Return the stepping id of this CPU.
++              """
++              try:
++                      stepping = int(self.__cpuinfo["stepping"])
++              except KeyError:
++                      stepping = None
++
++              return stepping
++
++      @property
++      def flags(self):
++              """
++                      Return all flags of this CPU.
++              """
++              try:
++                      flags = self.__cpuinfo["flags"]
++              except KeyError:
++                      flags = self.__cpuinfo["Features"]
++
++              return flags.split()
++
++      @property
++      def speed(self):
++              """
++                      Return the speed (in MHz) of this CPU.
++              """
++              try:
++                      speed = float(self.__cpuinfo["cpu_MHz"])
++              except KeyError:
++                      speed = 0
++
++              return speed
++
++      @property
++      def family(self):
++              """
++                      Return the family id of this CPU.
++              """
++              try:
++                      family = int(self.__cpuinfo["cpu_family"])
++              except KeyError:
++                      family = None
++
++              return family
++      
++      @property
++      def count(self):
++              """
++                      Count number of CPUs (cores).
++              """
++              return os.sysconf("SC_NPROCESSORS_ONLN")
++
++
++if __name__ == "__main__":
++      c = CPU()
++
++      print "Vendor:", c.vendor
++      print "Model:", c.model
++      print "Stepping:", c.stepping
++      print "Flags:", c.flags
++      print "Bogomips:", c.bogomips
++      print "Speed:", c.speed
++      print "Family:", c.family
++      print "Count:", c.count
++      print "Model string:", c.model_string
+diff --git a/src/fireinfo/device.py b/src/fireinfo/device.py
+new file mode 100644
+index 0000000..01338b2
+--- /dev/null
++++ b/src/fireinfo/device.py
+@@ -0,0 +1,133 @@
++#!/usr/bin/python
++###############################################################################
++#                                                                             #
++# Fireinfo                                                                    #
++# Copyright (C) 2010, 2011 IPFire Team (www.ipfire.org)                       #
++#                                                                             #
++# This program is free software: you can redistribute it and/or modify        #
++# it under the terms of the GNU General Public License as published by        #
++# the Free Software Foundation, either version 3 of the License, or           #
++# (at your option) any later version.                                         #
++#                                                                             #
++# This program is distributed in the hope that it will be useful,             #
++# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
++# GNU General Public License for more details.                                #
++#                                                                             #
++# You should have received a copy of the GNU General Public License           #
++# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
++#                                                                             #
++###############################################################################
++
++import os.path
++
++class Device(object):
++      """
++              This is an abstract class that represents all devices in the system.
++              Every single device has its own instance of this class.
++      """
++
++      def __init__(self, path):
++              """
++                      Collect all information about the device by reading the
++                      "uevent" file and parsing it.
++              """
++
++              # Save the path in /sys to the device.
++              self.path = path
++
++              # Datastructure to store information we read.
++              self._uevent = {}
++
++              # Open the uevent file and parse all lines.
++              with open(os.path.join(path, "uevent")) as f:
++                      for line in f.readlines():
++                              key, val = line.split("=")
++                              self._uevent[key] = val.rstrip().lower()
++
++      @property
++      def driver(self):
++              """
++                      Get the driver/kernel module that device is driven by or return None.
++              """
++              return self._uevent.get("DRIVER", None)
++
++                      
++class PCIDevice(Device):
++      """
++              A class that represents all PCI (and PCIe) devices in a system.
++      """
++
++      subsystem = "pci"
++
++      @property
++      def model(self):
++              """
++                      Return the PCI model id of this device.
++              """
++              return self._uevent['PCI_ID'].split(":")[1]
++              
++      @property
++      def vendor(self):
++              """
++                      Return the PCI vendor id of this device.
++              """
++              return self._uevent['PCI_ID'].split(":")[0]
++
++      @property
++      def deviceclass(self):
++              """
++                      Return the PCI device class of this device.
++              """
++              return self._uevent['PCI_CLASS']
++
++      @property
++      def sub_vendor(self):
++              """
++                      Return the PCI vendor sub id of this device.
++              """
++              return self._uevent["PCI_SUBSYS_ID"].split(":")[0]
++
++      @property
++      def sub_model(self):
++              """
++                      Return the PCI model sub id of this device.
++              """
++              return self._uevent["PCI_SUBSYS_ID"].split(":")[1]
++
++
++class USBDevice(Device):
++      """
++              A class that represents all USB devices in a system.
++      """
++
++      subsystem = "usb"
++      
++      def pad(self, s):
++              """
++                      A function to pad ids that have no leading zeroes.
++              """
++              while len(s) < 4:
++                      s = "0"+s
++              return s
++
++      @property
++      def vendor(self):
++              """
++                      Return the USB vendor id of this device.
++              """
++              return self.pad(self._uevent['PRODUCT'].split("/")[0])
++
++      @property
++      def model(self):
++              """
++                      Return the USB model id of this device.
++              """
++              return self.pad(self._uevent['PRODUCT'].split("/")[1])
++
++      @property
++      def deviceclass(self):
++              """
++                      Return the USB device class of this device.
++              """
++              return self._uevent.get("INTERFACE", None)
+diff --git a/src/fireinfo/hypervisor.py b/src/fireinfo/hypervisor.py
+new file mode 100644
+index 0000000..0c07cfa
+--- /dev/null
++++ b/src/fireinfo/hypervisor.py
+@@ -0,0 +1,119 @@
++#!/usr/bin/python
++###############################################################################
++#                                                                             #
++# Fireinfo                                                                    #
++# Copyright (C) 2010, 2011 IPFire Team (www.ipfire.org)                       #
++#                                                                             #
++# This program is free software: you can redistribute it and/or modify        #
++# it under the terms of the GNU General Public License as published by        #
++# the Free Software Foundation, either version 3 of the License, or           #
++# (at your option) any later version.                                         #
++#                                                                             #
++# This program is distributed in the hope that it will be useful,             #
++# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
++# GNU General Public License for more details.                                #
++#                                                                             #
++# You should have received a copy of the GNU General Public License           #
++# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
++#                                                                             #
++###############################################################################
++
++import _fireinfo
++import system
++
++class Hypervisor(object):
++      def __init__(self):
++              self.__hypervisor = _fireinfo.detect_hypervisor()
++
++      @property
++      def system(self):
++              """
++                      Return the current instance of the System class.
++
++                      We need to do that as a property because otherwise
++                      we get a recursion.
++              """
++              return system.System()
++
++      @property
++      def vendor(self):
++              """
++                      Returns the name of the hypervisor vendor.
++              """
++              # Citrix Xen says it is Microsoft Hv.
++              if self.__hypervisor == "Microsoft" and self.system.bios_vendor == "Xen":
++                      return "Xen"
++
++              # Some of the hypervisors can be detected in a right way.
++              # We can return them at this place.
++              if self.__hypervisor:
++                      return self.__hypervisor
++
++              # Check DMI and BIOS information...
++              if self.__bios_is_bochs():
++                      return "Bochs"
++              elif self.__bios_is_microsoft():
++                      return "Microsoft"
++              elif self.__bios_is_qemu():
++                      return "Qemu"
++              elif self.__bios_is_virtualbox():
++                      return "VirtualBox"
++              elif self.__bios_is_vmware():
++                      return "VMWare"
++              elif self.__bios_is_xen():
++                      return "Xen"
++
++      @property
++      def virtual(self):
++              """
++                      Returns true if the host is running in a virtual environment.
++                      Otherwise: false.
++              """
++              if self.vendor:
++                      return True
++
++              return False
++
++      def __bios_is_bochs(self):
++              """
++                      Check for Bochs emulator.
++              """
++              return self.system.bios.check_vendor("Bochs")
++
++      def __bios_is_microsoft(self):
++              """
++                      Check for Microsoft hypervisor.
++              """
++              return self.system.bios.check_vendor("Microsoft Corporation")
++
++      def __bios_is_qemu(self):
++              """
++                      Check for qemu emulator.
++              """
++              return self.system.bios.check_vendor("QEMU")
++
++      def __bios_is_virtualbox(self):
++              """
++                      Check for virtualbox hypervisor by comparing the bios vendor string
++                      to "innotek GmbH".
++              """
++              return self.system.bios.check_vendor("innotek GmbH")
++
++      def __bios_is_vmware(self):
++              if self.system.bios.check_vendor("VMware-"):
++                      return True
++              elif self.system.bios.check_vendor("VMW"):
++                      return True
++
++              return False
++
++      def __bios_is_xen(self):
++              return self.system.bios.check_vendor("Xen")
++
++
++if __name__ == "__main__":
++      h = Hypervisor()
++
++      print "Vendor:", h.vendor
++      print "Virtual:", h.virtual
+diff --git a/src/fireinfo/network.py b/src/fireinfo/network.py
+new file mode 100644
+index 0000000..063e9ec
+--- /dev/null
++++ b/src/fireinfo/network.py
+@@ -0,0 +1,53 @@
++#!/usr/bin/python
++###############################################################################
++#                                                                             #
++# Fireinfo                                                                    #
++# Copyright (C) 2010, 2011 IPFire Team (www.ipfire.org)                       #
++#                                                                             #
++# This program is free software: you can redistribute it and/or modify        #
++# it under the terms of the GNU General Public License as published by        #
++# the Free Software Foundation, either version 3 of the License, or           #
++# (at your option) any later version.                                         #
++#                                                                             #
++# This program is distributed in the hope that it will be useful,             #
++# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
++# GNU General Public License for more details.                                #
++#                                                                             #
++# You should have received a copy of the GNU General Public License           #
++# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
++#                                                                             #
++###############################################################################
++
++import os
++
++SYS_CLASS_NET = "/sys/class/net"
++
++class Network(object):
++      def __init__(self):
++              self._devices = os.listdir(SYS_CLASS_NET)
++
++      def has_green(self):
++              return "green0" in self._devices
++
++      def has_red(self):
++              for i in ("red0", "ppp0"):
++                      if i in self._devices:
++                              return True
++
++              return False
++
++      def has_blue(self):
++              return "blue0" in self._devices
++
++      def has_orange(self):
++              return "orange0" in self._devices
++
++
++if __name__ == "__main__":
++      n = Network()
++
++      print "has_green", n.has_green()
++      print "has_red", n.has_red()
++      print "has_blue", n.has_blue()
++      print "has_orange", n.has_orange()
+diff --git a/src/fireinfo/system.py b/src/fireinfo/system.py
+new file mode 100644
+index 0000000..0a60bcc
+--- /dev/null
++++ b/src/fireinfo/system.py
+@@ -0,0 +1,451 @@
++#!/usr/bin/python
++###############################################################################
++#                                                                             #
++# Fireinfo                                                                    #
++# Copyright (C) 2010, 2011 IPFire Team (www.ipfire.org)                       #
++#                                                                             #
++# This program is free software: you can redistribute it and/or modify        #
++# it under the terms of the GNU General Public License as published by        #
++# the Free Software Foundation, either version 3 of the License, or           #
++# (at your option) any later version.                                         #
++#                                                                             #
++# This program is distributed in the hope that it will be useful,             #
++# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
++# GNU General Public License for more details.                                #
++#                                                                             #
++# You should have received a copy of the GNU General Public License           #
++# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
++#                                                                             #
++###############################################################################
++
++import hashlib
++import json
++import os
++import string
++
++import _fireinfo
++
++import bios
++import cpu
++import device
++import hypervisor
++import network
++
++PROFILE_VERSION = 0
++
++SYS_CLASS_DMI = "/sys/class/dmi/id"
++SECRET_ID_FILE = "/etc/fireinfo-id"
++
++INVALID_ID_STRINGS = (
++      "OEM", "O.E.M.", "o.e.m.",
++      "N/A", "n/a",
++      "12345", "54321", "202020",
++      "Chassis", "chassis",
++      "Not Applicable",
++      "None", "empty",
++      "01010101-0101-0101-0101-010101010101",
++      "00020003-0004-0005-0006-000700080009",
++      "03000200-0400-0500-0006-000700080009",
++      "0000000", "00000000",
++)
++
++class Singleton(type):
++      def __init__(cls, name, bases, dict):
++              super(Singleton, cls).__init__(name, bases, dict)
++              cls.instance = None
++
++      def __call__(cls, *args, **kw):
++              if cls.instance is None:
++                      cls.instance = super(Singleton, cls).__call__(*args, **kw)
++
++              return cls.instance
++
++
++def read_from_file(filename):
++      """
++              Read all data from filename.
++      """
++      if not os.path.exists(filename):
++              return
++
++      try:
++              with open(filename) as f:
++                      return f.read().strip()
++      except IOError:
++              pass
++
++class System(object):
++      __metaclass__ = Singleton
++
++      def __init__(self):
++              self.bios = bios.BIOS(self)
++
++              # find all devices
++              self.devices = []
++              self.scan()
++              self.cpu = cpu.CPU()
++              self.hypervisor = hypervisor.Hypervisor()
++
++              # Read /proc/cpuinfo for vendor information.
++              self.__cpuinfo = self.cpu.read_cpuinfo()
++
++      def profile(self):
++              p = {}
++              p["system"] = {
++                      # System information
++                      "model"  : self.model,
++                      "vendor" : self.vendor,
++
++                      # Indicator if the system is running in a
++                      # virtual environment.
++                      "virtual" : self.virtual,
++                      
++                      # System language
++                      "language" : self.language,
++
++                      # Release information
++                      "release" : self.release,
++                      "kernel_release" : self.kernel_release,
++
++                      "memory" : self.memory,
++                      "root_size" : self.root_size,
++              }
++
++              p["devices"] = []
++              for device in self.devices:
++                      d = {
++                              "subsystem" : device.subsystem.lower(), 
++                              "vendor" : device.vendor.lower(), 
++                              "model" : device.model.lower(), 
++                              "deviceclass" : device.deviceclass,
++                              "driver" : device.driver,
++                      }
++
++                      # PCI devices provide subsystem information, USB don't.
++                      if d["subsystem"] == "pci":
++                              d["sub_model"] = device.sub_model
++                              d["sub_vendor"] = device.sub_vendor
++
++                      p["devices"].append(d)
++
++              p["cpu"] = {
++                      "arch" : self.arch,
++                      "vendor" : self.cpu.vendor,
++                      "model" : self.cpu.model,
++                      "model_string" : self.cpu.model_string,
++                      "stepping" : self.cpu.stepping,
++                      "flags" : self.cpu.flags,
++                      "bogomips" : self.cpu.bogomips,
++                      "speed" : self.cpu.speed,
++                      "family" : self.cpu.family,
++                      "count" : self.cpu.count                                
++              }
++
++              p["network"] = {
++                      "green" : self.network.has_green(),
++                      "blue" : self.network.has_blue(),
++                      "orange" : self.network.has_orange(),
++                      "red" : self.network.has_red(),
++               }
++
++              # Only append hypervisor information if we are virtualized.
++              if self.virtual:
++                      p["hypervisor"] = {
++                              "vendor" : self.hypervisor.vendor,
++                      }
++
++              return {
++                      # Profile version
++                      "profile_version" : PROFILE_VERSION,
++
++                      # Identification and authorization codes
++                      "public_id" : self.public_id,
++                      "private_id" : self.private_id,
++
++                      # Actual profile data
++                      "profile" : p,
++              }
++                              
++              
++      @property
++      def arch(self):
++              return os.uname()[4]
++
++      @property
++      def public_id(self):
++              """
++                      This returns a globally (hopefully) ID to identify the host
++                      later (by request) in the database.
++              """
++              public_id = self.secret_id
++              if not public_id:
++                      return "0" * 40
++
++              return hashlib.sha1(public_id).hexdigest()
++
++      @property
++      def private_id(self):
++              """
++                      The private ID is built out of the _unique_id and used to
++                      permit a host to do changes on the database.
++
++                      No one could ever guess this without access to the host.
++              """
++              private_id = ""
++              for i in reversed(self.secret_id):
++                      private_id += i
++
++              if not private_id:
++                      return "0" * 40
++
++              return hashlib.sha1(private_id).hexdigest()
++
++      @property
++      def secret_id(self):
++              """
++                      Read a "secret" ID from a file if available
++                      or calculate it from the hardware.
++              """
++              if os.path.exists(SECRET_ID_FILE):
++                      return read_from_file(SECRET_ID_FILE)
++
++              return hashlib.sha1(self._unique_id).hexdigest()
++
++      @property
++      def _unique_id(self):
++              """
++                      This is a helper ID which is generated out of some hardware information
++                      that is considered to be constant over a PC's lifetime.
++
++                      None of the data here is ever sent to the server.
++              """
++              ids = []
++
++              # Virtual machines (for example) and some boards have a UUID
++              # which is globally unique.
++              for file in ("product_uuid", "product_serial", "chassis_serial"):
++                      id = read_from_file(os.path.join(SYS_CLASS_DMI, file))
++                      ids.append(id)
++
++              # Sort out all bogous or invalid strings from the list.
++              _ids = []
++              for id in ids:
++                      if id is None:
++                              continue
++
++                      for i in INVALID_ID_STRINGS:
++                              if i in id:
++                                      id = None
++                                      break
++
++                      if id:
++                              _ids.append(id)
++
++              ids = _ids
++
++              # Use serial number from root disk (if available) and if
++              # no other ID was found, yet.
++              if not ids:
++                      root_disk_serial = self.root_disk_serial
++                      if root_disk_serial and not root_disk_serial.startswith("QM000"):
++                              ids.append(root_disk_serial)
++
++              # As last resort, we use the UUID from pakfire.
++              if not ids:
++                      id = read_from_file("/opt/pakfire/db/uuid")
++                      ids.append(id)
++
++              return "#".join(ids)
++
++      @property
++      def language(self):
++              """
++                      Return the language code of IPFire or "unknown" if we cannot get it.
++              """
++              # Return "unknown" if settings file does not exist.
++              filename = "/var/ipfire/main/settings"
++              if not os.path.exists(filename):
++                      return "unknown"
++
++              with open(filename, "r") as f:
++                      for line in f.readlines():
++                              key, val = line.split("=", 1)
++                              if key == "LANGUAGE":
++                                      return val.strip()
++
++      @property
++      def release(self):
++              """
++                      Return the system release string.
++              """
++              return read_from_file("/etc/system-release") or "unknown"
++
++      @property
++      def bios_vendor(self):
++              """
++                      Return the bios vendor name.
++              """
++              return read_from_file("/sys/class/dmi/id/bios_vendor")
++
++      def vendor_model_tuple(self):
++              try:
++                      s = self.__cpuinfo["Hardware"]
++              except KeyError:
++                      return (None, None)
++
++              if s.startswith("ARM-Versatile"):
++                      return ("ARM", s)
++
++              try:
++                      v, m = s.split(" ", 1)
++              except ValueError:
++                      if s.startswith("BCM"):
++                              v = "Broadcom"
++                              m = s
++                      else:
++                              v = None
++                              m = s
++
++              return v, m
++
++      @property
++      def vendor(self):
++              """
++                      Return the vendor string of this system (if any).
++              """
++              ret = None
++              for file in ("sys_vendor", "board_vendor", "chassis_vendor",):
++                      ret = read_from_file(os.path.join(SYS_CLASS_DMI, file))
++                      if ret:
++                              break
++
++              if ret is None:
++                      v, m = self.vendor_model_tuple()
++                      ret = v
++
++              return ret
++
++      @property
++      def model(self):
++              """
++                      Return the model string of this system (if any).
++              """
++              ret = None
++              for file in ("product_name", "board_model", "chassis_model",):
++                      ret = read_from_file(os.path.join(SYS_CLASS_DMI, file))
++                      if ret:
++                              break
++
++              if ret is None:
++                      v, m = self.vendor_model_tuple()
++                      ret = m
++
++              return ret
++
++      @property
++      def memory(self):
++              """
++                      Return the amount of memory in kilobytes.
++              """
++              with open("/proc/meminfo", "r") as f:
++                      firstline = f.readline().strip()
++                      return int(firstline.split()[1])
++
++      @property
++      def kernel_release(self):
++              """
++                      Return the kernel release string.
++              """
++              return os.uname()[2]
++
++      @property
++      def root_disk(self):
++              """
++                      Return the dev node of the root disk.
++              """
++              with open("/etc/mtab", "r") as f:
++                      dev, mountpoint, fs, rest = f.readline().split(" ", 3)
++                      if mountpoint == "/" and not fs == "rootfs":
++                              # Cut off /dev
++                              dev = dev[5:]
++
++                              # Handle raids and MMC cards like (mmcblk0p3).
++                              if dev[-2] == "p":
++                                      return dev[:-2]
++
++                              # Otherwise cut off all digits at end of string
++                              while dev[-1] in string.digits:
++                                      dev = dev[:-1]
++
++                              return dev
++
++      @property
++      def root_size(self):
++              """
++                      Return the size of the root disk in kilobytes.
++              """
++              path = "/sys/block/%s/size" % self.root_disk
++              if not os.path.exists(path):
++                      return
++
++              with open(path, "r") as f:
++                      return int(f.readline()) * 512 / 1024
++
++      @property
++      def root_disk_serial(self):
++              """
++                      Return the serial number of the root disk (if any).
++              """
++              serial = _fireinfo.get_harddisk_serial("/dev/%s" % self.root_disk)
++
++              if serial:
++                      # Strip all spaces
++                      return serial.strip()
++
++      def scan(self):
++              """
++                      Scan for all devices (PCI/USB) in the system and append them
++                      to our list.
++              """
++              self.devices = []
++
++              toscan = (
++                      ("/sys/bus/pci/devices", device.PCIDevice),
++                      ("/sys/bus/usb/devices", device.USBDevice)
++              )
++              for path, cls in toscan:
++                      if not os.path.exists(path):
++                              continue
++
++                      dirlist = os.listdir(path)
++                      for dir in dirlist:
++                              self.devices.append(cls(os.path.join(path, dir)))
++
++      @property
++      def virtual(self):
++              """
++                      Say if the host is running in a virtual environment.
++              """
++              return self.hypervisor.virtual
++
++      @property
++      def network(self):
++              """
++                      Reference to the network class.
++              """
++              return network.Network()
++
++
++if __name__ == "__main__":
++      s=System()
++      print s.arch
++      print s.language
++      print s.release
++      print s.bios_vendor
++      print s.memory
++      print s.kernel
++      print s.root_disk
++      print s.root_size
++      print "------------\n", s.devices, "\n------------\n"
++      print json.dumps(s.profile(), sort_keys=True, indent=4)
+diff --git a/src/sendprofile b/src/sendprofile
+new file mode 100644
+index 0000000..da480ce
+--- /dev/null
++++ b/src/sendprofile
+@@ -0,0 +1,132 @@
++#!/usr/bin/python
++###############################################################################
++#                                                                             #
++# Fireinfo                                                                    #
++# Copyright (C) 2010, 2011 IPFire Team (www.ipfire.org)                       #
++#                                                                             #
++# This program is free software: you can redistribute it and/or modify        #
++# it under the terms of the GNU General Public License as published by        #
++# the Free Software Foundation, either version 3 of the License, or           #
++# (at your option) any later version.                                         #
++#                                                                             #
++# This program is distributed in the hope that it will be useful,             #
++# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
++# GNU General Public License for more details.                                #
++#                                                                             #
++# You should have received a copy of the GNU General Public License           #
++# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
++#                                                                             #
++###############################################################################
++
++import json
++import logging
++import logging.handlers
++import os
++import sys
++import urllib
++import urllib2
++
++import fireinfo
++
++ENABLED_FILE = "/var/ipfire/main/send_profile"
++PROXY_SETTINGS = "/var/ipfire/proxy/advanced/settings"
++
++log_level = logging.INFO
++if "-d" in sys.argv:
++      log_level = logging.DEBUG
++
++# Setup logging
++log = logging.getLogger()
++log.setLevel(log_level)
++log.addHandler(logging.handlers.SysLogHandler("/dev/log"))
++log.addHandler(logging.StreamHandler(sys.stderr))
++for handler in log.handlers:
++      handler.setLevel(log_level)
++
++PROFILE_URL = "http://fireinfo.ipfire.org/send/%(public_id)s"
++
++def get_upstream_proxy():
++      if not os.path.exists(PROXY_SETTINGS):
++              return {"host" : ""}
++
++      proxy_settings = {}
++      with open(PROXY_SETTINGS) as f:
++              for line in f.readlines():
++                      k, v = line.split("=", 1)
++                      proxy_settings[k] = v.strip()
++
++      return {
++              "host" : proxy_settings.get("UPSTREAM_PROXY", ""),
++              "user" : proxy_settings.get("UPSTREAM_USER", ""),
++              "pass" : proxy_settings.get("UPSTREAM_PASSWORD", ""),
++      }
++
++def send_profile(profile):
++      logging.debug("Sending profile:")
++      for line in json.dumps(profile, sort_keys=True, indent=4).splitlines():
++              logging.debug(line)
++
++      request = urllib2.Request(PROFILE_URL % profile,
++              data = urllib.urlencode({"profile" : json.dumps(profile)}),
++      )
++      request.add_header("User-Agent", "fireinfo/%s" % fireinfo.__version__)
++
++      # Set upstream proxy if we have one.
++      # XXX this cannot handle authentication
++      proxy = get_upstream_proxy()
++      if proxy["host"]:
++              request.set_proxy(proxy["host"], "http")
++
++      try:
++              urllib2.urlopen(request, timeout=60)
++      except (urllib2.HTTPError, urllib2.URLError), e:
++              reason = "Unknown reason"
++
++              if isinstance(e, urllib2.HTTPError):
++                      reason = "%s" % e
++              elif isinstance(e, urllib2.URLError):
++                      reason = e.reason
++
++              logging.error("Profile was not sent propertly: %s" % reason)
++              return
++
++      logging.debug("Profile was sent successfully.")
++
++def main():
++      # Collect system information
++      system = fireinfo.System()
++      profile = system.profile()
++
++      # If --dump is passed -> only dump the output.
++      if "--dump" in sys.argv:
++              # Remove the private id when dumping the profile because
++              # it contains no information and may confuse people.
++              del profile["private_id"]
++
++              print json.dumps(profile, sort_keys=True, indent=4)
++              return 0
++
++      if "--secret-id" in sys.argv:
++              print system.secret_id
++              return 0
++
++      if "--hardware-string" in sys.argv:
++              print system._unique_id
++              return 0
++
++      if "--public-id" in sys.argv:
++              print system.public_id
++              return 0
++
++      if not os.path.exists(ENABLED_FILE):
++              del profile["profile"]
++
++      try:
++              send_profile(profile)
++      except urllib2.URLError:
++              return 1
++
++      return 0
++
++sys.exit(main())
diff --git a/src/patches/gcc-4.4.7-texinfo-5.patch b/src/patches/gcc-4.4.7-texinfo-5.patch
new file mode 100644 (file)
index 0000000..7b2e945
--- /dev/null
@@ -0,0 +1,89 @@
+diff -Naur gcc-4.4.7.org/gcc/doc/cppopts.texi gcc-4.4.7/gcc/doc/cppopts.texi
+--- gcc-4.4.7.org/gcc/doc/cppopts.texi 2008-06-15 11:42:13.000000000 +0200
++++ gcc-4.4.7/gcc/doc/cppopts.texi     2013-09-08 16:50:14.353507748 +0200
+@@ -758,7 +758,7 @@
+ Enable special code to work around file systems which only permit very
+ short file names, such as MS-DOS@.
+-@itemx --help
++@item --help
+ @itemx --target-help
+ @opindex help
+ @opindex target-help
+diff -Naur gcc-4.4.7.org/gcc/doc/c-tree.texi gcc-4.4.7/gcc/doc/c-tree.texi
+--- gcc-4.4.7.org/gcc/doc/c-tree.texi  2009-02-20 16:20:38.000000000 +0100
++++ gcc-4.4.7/gcc/doc/c-tree.texi      2013-09-08 17:53:21.055167463 +0200
+@@ -2338,13 +2338,13 @@
+ not matter.  The type of the operands and that of the result are
+ always of @code{BOOLEAN_TYPE} or @code{INTEGER_TYPE}.
+-@itemx POINTER_PLUS_EXPR
++@item POINTER_PLUS_EXPR
+ This node represents pointer arithmetic.  The first operand is always
+ a pointer/reference type.  The second operand is always an unsigned
+ integer type compatible with sizetype.  This is the only binary
+ arithmetic operand that can operate on pointer types.
+-@itemx PLUS_EXPR
++@item PLUS_EXPR
+ @itemx MINUS_EXPR
+ @itemx MULT_EXPR
+ These nodes represent various binary arithmetic operations.
+diff -Naur gcc-4.4.7.org/gcc/doc/invoke.texi gcc-4.4.7/gcc/doc/invoke.texi
+--- gcc-4.4.7.org/gcc/doc/invoke.texi  2011-03-23 23:02:12.000000000 +0100
++++ gcc-4.4.7/gcc/doc/invoke.texi      2013-09-08 17:10:49.503066254 +0200
+@@ -4645,11 +4645,11 @@
+ @option{-fdump-rtl-ce3} enable dumping after the three
+ if conversion passes. 
+-@itemx -fdump-rtl-cprop_hardreg
++@item -fdump-rtl-cprop_hardreg
+ @opindex fdump-rtl-cprop_hardreg
+ Dump after hard register copy propagation.
+-@itemx -fdump-rtl-csa
++@item -fdump-rtl-csa
+ @opindex fdump-rtl-csa
+ Dump after combining stack adjustments.
+@@ -4660,11 +4660,11 @@
+ @option{-fdump-rtl-cse1} and @option{-fdump-rtl-cse2} enable dumping after
+ the two common sub-expression elimination passes.
+-@itemx -fdump-rtl-dce
++@item -fdump-rtl-dce
+ @opindex fdump-rtl-dce
+ Dump after the standalone dead code elimination passes.
+-@itemx -fdump-rtl-dbr
++@item -fdump-rtl-dbr
+ @opindex fdump-rtl-dbr
+ Dump after delayed branch scheduling.
+@@ -4709,7 +4709,7 @@
+ @opindex fdump-rtl-initvals
+ Dump after the computation of the initial value sets.
+-@itemx -fdump-rtl-into_cfglayout
++@item -fdump-rtl-into_cfglayout
+ @opindex fdump-rtl-into_cfglayout
+ Dump after converting to cfglayout mode.
+@@ -4739,7 +4739,7 @@
+ @opindex fdump-rtl-rnreg
+ Dump after register renumbering.
+-@itemx -fdump-rtl-outof_cfglayout
++@item -fdump-rtl-outof_cfglayout
+ @opindex fdump-rtl-outof_cfglayout
+ Dump after converting from cfglayout mode.
+@@ -4751,7 +4751,7 @@
+ @opindex fdump-rtl-postreload
+ Dump after post-reload optimizations.
+-@itemx -fdump-rtl-pro_and_epilogue
++@item -fdump-rtl-pro_and_epilogue
+ @opindex fdump-rtl-pro_and_epilogue
+ Dump after generating the function pro and epilogues.
diff --git a/src/patches/glibc/glibc-rh804630.patch b/src/patches/glibc/glibc-rh804630.patch
deleted file mode 100644 (file)
index 75dbe94..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-diff -rup c/resolv/res_send.c d/resolv/res_send.c
---- c/resolv/res_send.c        2012-01-01 05:16:32.000000000 -0700
-+++ d/resolv/res_send.c        2012-03-30 12:39:30.862467628 -0600
-@@ -409,6 +409,7 @@ __libc_res_nsend(res_state statp, const
-        */
-       if (EXT(statp).nsinit == 0) {
-               unsigned char map[MAXNS];
-+              unsigned int ext_total_nscount;
-               memset (map, MAXNS, sizeof (map));
-               for (n = 0; n < MAXNS; n++) {
-@@ -422,8 +423,9 @@ __libc_res_nsend(res_state statp, const
-                       }
-               }
-               n = statp->nscount;
--              if (statp->nscount > EXT(statp).nscount)
--                      for (n = EXT(statp).nscount, ns = 0;
-+              ext_total_nscount = EXT(statp).nscount + EXT(statp).nscount6;
-+              if (statp->nscount > ext_total_nscount)
-+                      for (n = ext_total_nscount, ns = 0;
-                            n < statp->nscount; n++) {
-                               while (ns < MAXNS
-                                      && EXT(statp).nsmap[ns] != MAXNS)
diff --git a/src/patches/glibc/glibc-rh804686.patch b/src/patches/glibc/glibc-rh804686.patch
new file mode 100644 (file)
index 0000000..292cd84
--- /dev/null
@@ -0,0 +1,87 @@
+--- a/resolv/res_query.c       2010-05-04 05:27:23.000000000 -0600
++++ a/resolv/res_query.c       2012-08-03 13:43:10.761506047 -0600
+@@ -122,6 +122,7 @@ __libc_res_nquery(res_state statp,
+                 int *resplen2)
+ {
+       HEADER *hp = (HEADER *) answer;
++      HEADER *hp2;
+       int n, use_malloc = 0;
+         u_int oflags = statp->_flags;
+@@ -239,26 +240,25 @@ __libc_res_nquery(res_state statp,
+         /* __libc_res_nsend might have reallocated the buffer.  */
+         hp = (HEADER *) *answerp;
+-      /* We simplify the following tests by assigning HP to HP2.  It
+-         is easy to verify that this is the same as ignoring all
+-         tests of HP2.  */
+-      HEADER *hp2 = answerp2 ? (HEADER *) *answerp2 : hp;
+-
+-      if (n < (int) sizeof (HEADER) && answerp2 != NULL
+-          && *resplen2 > (int) sizeof (HEADER))
++      /* We simplify the following tests by assigning HP to HP2 or
++         vice versa.  It is easy to verify that this is the same as
++         ignoring all tests of HP or HP2.  */
++      if (answerp2 == NULL || *resplen2 < (int) sizeof (HEADER))
+         {
+-          /* Special case of partial answer.  */
+-          assert (hp != hp2);
+-          hp = hp2;
++          hp2 = hp;
+         }
+-      else if (answerp2 != NULL && *resplen2 < (int) sizeof (HEADER)
+-               && n > (int) sizeof (HEADER))
++      else
+         {
+-          /* Special case of partial answer.  */
+-          assert (hp != hp2);
+-          hp2 = hp;
++          hp2 = (HEADER *) *answerp2;
++          if (n < (int) sizeof (HEADER))
++            {
++              hp = hp2;
++            }
+         }
++      /* Make sure both hp and hp2 are defined */
++      assert((hp != NULL) && (hp2 != NULL));
++
+       if ((hp->rcode != NOERROR || ntohs(hp->ancount) == 0)
+           && (hp2->rcode != NOERROR || ntohs(hp2->ancount) == 0)) {
+ #ifdef DEBUG
+--- a/resolv/res_send.c        2012-08-03 13:31:26.622168278 -0600
++++ a/resolv/res_send.c        2012-08-03 13:43:11.881501862 -0600
+@@ -549,7 +549,7 @@ __libc_res_nsend(res_state statp, const
+                                   ns, ansp, ansp2, nansp2, resplen2);
+                       if (n < 0)
+                               return (-1);
+-                      if (n == 0)
++                      if (n == 0 && (buf2 == NULL || *resplen2 == 0))
+                               goto next_ns;
+               } else {
+                       /* Use datagrams. */
+@@ -559,7 +559,7 @@ __libc_res_nsend(res_state statp, const
+                                   ansp2, nansp2, resplen2);
+                       if (n < 0)
+                               return (-1);
+-                      if (n == 0)
++                      if (n == 0 && (buf2 == NULL || *resplen2 == 0))
+                               goto next_ns;
+                       if (v_circuit)
+                         // XXX Check whether both requests failed or
+@@ -1275,10 +1275,14 @@ send_dg(res_state statp,
+                               (*thisresplenp > *thisanssizp)
+                               ? *thisanssizp : *thisresplenp);
+-                      if (recvresp1 || (buf2 != NULL && recvresp2))
++                      if (recvresp1 || (buf2 != NULL && recvresp2)) {
++                        *resplen2 = 0;
+                         return resplen;
++                      }
+                       if (buf2 != NULL)
+                         {
++                          /* No data from the first reply.  */
++                          resplen = 0;
+                           /* We are waiting for a possible second reply.  */
+                           if (hp->id == anhp->id)
+                             recvresp1 = 1;
diff --git a/src/patches/glibc/glibc-rh806404.patch b/src/patches/glibc/glibc-rh806404.patch
new file mode 100644 (file)
index 0000000..b78b903
--- /dev/null
@@ -0,0 +1,12 @@
+diff -rup a/nss/getnssent.c b/nss/getnssent.c
+--- a/nss/getnssent.c  2004-12-13 14:48:34.000000000 -0700
++++ b/nss/getnssent.c  2012-03-23 13:46:54.639095121 -0600
+@@ -33,7 +33,7 @@ __nss_getent (getent_r_function func, vo
+       *buffer = malloc (*buffer_size);
+     }
+-  while (buffer != NULL
++  while (*buffer != NULL
+        && func (resbuf, *buffer, *buffer_size, &result, h_errnop) == ERANGE
+        && (h_errnop == NULL || *h_errnop == NETDB_INTERNAL))
+     {
diff --git a/src/patches/glibc/glibc-rh809726.patch b/src/patches/glibc/glibc-rh809726.patch
new file mode 100644 (file)
index 0000000..0f264c8
--- /dev/null
@@ -0,0 +1,89 @@
+diff -rup a/localedata/locales/fi_FI b/localedata/locales/fi_FI
+--- a/localedata/locales/fi_FI 2012-07-11 14:48:45.994749607 -0600
++++ b/localedata/locales/fi_FI 2012-07-11 14:50:20.003277477 -0600
+@@ -63,60 +63,65 @@ reorder-after <z>
+ <a-diaerisis>
+ <o-diaerisis>
+-reorder-after <U005A>
++reorder-after <U007A>
+ <U00E5> <a-ring>;<BAS>;<MIN>;IGNORE
+-<U00C5> <a-ring>;<BAS>;<CAP>;IGNORE
+ <U01FB> <a-ring>;<ACA>;<MIN>;IGNORE
+-<U01FA> <a-ring>;<ACA>;<CAP>;IGNORE
+ <U00E4> <a-diaerisis>;<BAS>;<MIN>;IGNORE
+-<U00C4> <a-diaerisis>;<BAS>;<CAP>;IGNORE
+ <U00E6> <a-diaerisis>;<REU>;<MIN>;IGNORE
+-<U00C6> <a-diaerisis>;<REU>;<CAP>;IGNORE
+ <U01FD> <a-diaerisis>;<U01FD>;<MIN>;IGNORE
+-<U01FC> <a-diaerisis>;<U01FD>;<CAP>;IGNORE
+ <U01E3> <a-diaerisis>;<MAC>;<MIN>;IGNORE
+-<U01E2> <a-diaerisis>;<MAC>;<CAP>;IGNORE
+ <U00F6> <o-diaerisis>;<BAS>;<MIN>;IGNORE
+-<U00D6> <o-diaerisis>;<BAS>;<CAP>;IGNORE
+ <U00F8> <o-diaerisis>;<U00D8>;<MIN>;IGNORE
+-<U00D8> <o-diaerisis>;<U00D8>;<CAP>;IGNORE
+ <U01FF> <o-diaerisis>;<U01FF>;<MIN>;IGNORE
+-<U01FE> <o-diaerisis>;<U01FF>;<CAP>;IGNORE
+ <U00F5> <o-diaerisis>;<TIL>;<MIN>;IGNORE
++reorder-after <U005A>
++<U00C5> <a-ring>;<BAS>;<CAP>;IGNORE
++<U01FA> <a-ring>;<ACA>;<CAP>;IGNORE
++<U00C4> <a-diaerisis>;<BAS>;<CAP>;IGNORE
++<U00C6> <a-diaerisis>;<REU>;<CAP>;IGNORE
++<U01FC> <a-diaerisis>;<U01FD>;<CAP>;IGNORE
++<U01E2> <a-diaerisis>;<MAC>;<CAP>;IGNORE
++<U00D6> <o-diaerisis>;<BAS>;<CAP>;IGNORE
++<U00D8> <o-diaerisis>;<U00D8>;<CAP>;IGNORE
++<U01FE> <o-diaerisis>;<U01FF>;<CAP>;IGNORE
+ <U00D5> <o-diaerisis>;<TIL>;<CAP>;IGNORE
+-reorder-after <U016A>
++reorder-after <U016B>
+ <U0076> <v>;<U0056>;<BAS>;<MIN>
+-<U0056> <v>;<U0056>;<BAS>;<CAP>
+ <U1E7D> <v>;<U0056>;<TIL>;<MIN>
+-<U1E7C> <v>;<U0056>;<TIL>;<CAP>
+ <U0077> <w>;<U0057>;<BAS>;<MIN>
+-<U0057> <w>;<U0057>;<BAS>;<CAP>
+ <U1E83> <w>;<U0057>;<ACA>;<MIN>
+-<U1E82> <w>;<U0057>;<ACA>;<CAP>
+ <U1E81> <w>;<U0057>;<GRA>;<MIN>
+-<U1E80> <w>;<U0057>;<GRA>;<CAP>
+ <U0175> <w>;<U0057>;<CIR>;<MIN>
+-<U0174> <w>;<U0057>;<CIR>;<CAP>
+ <U1E85> <w>;<U0057>;<REU>;<MIN>
+-<U1E84> <w>;<U0057>;<REU>;<CAP>
+ <U1E87> <w>;<U0057>;<PCT>;<MIN>
++reorder-after <U016A>
++<U0056> <v>;<U0056>;<BAS>;<CAP>
++<U1E7C> <v>;<U0056>;<TIL>;<CAP>
++<U0057> <w>;<U0057>;<BAS>;<CAP>
++<U1E82> <w>;<U0057>;<ACA>;<CAP>
++<U1E80> <w>;<U0057>;<GRA>;<CAP>
++<U0174> <w>;<U0057>;<CIR>;<CAP>
++<U1E84> <w>;<U0057>;<REU>;<CAP>
+ <U1E86> <w>;<U0057>;<PCT>;<CAP>
+ reorder-after <U00FF>
+ <U00FC> <y>;<DTT>;<MIN>;IGNORE
++reorder-after <U0178>
+ <U00DC> <y>;<DTT>;<CAP>;IGNORE
+ %  Present in iso14651_t1, but these definitions seem to have been
+ %  removed from latest iso14651 tables.
+-reorder-after <U0162>
++reorder-after <U0163>
+ <U00FE> "<t><h>";"<LIG><LIG>";"<MIN><MIN>";IGNORE
++reorder-after <U0162>
+ <U00DE> "<t><h>";"<LIG><LIG>";"<CAP><CAP>";IGNORE
+ reorder-after <U0064>
+ <U00F0> <d>;<PCL>;<MIN>;IGNORE
+-<U00D0> <d>;<PCL>;<CAP>;IGNORE
+ <U0111> <d>;<OBL>;<MIN>;IGNORE
++reorder-after <U0044>
++<U00D0> <d>;<PCL>;<CAP>;IGNORE
+ <U0110> <d>;<OBL>;<CAP>;IGNORE
+ reorder-end
diff --git a/src/patches/glibc/glibc-rh823909.patch b/src/patches/glibc/glibc-rh823909.patch
new file mode 100644 (file)
index 0000000..ed9c4c9
--- /dev/null
@@ -0,0 +1,25 @@
+diff --git a/iconvdata/ibm930.c b/iconvdata/ibm930.c
+index 25a9be0..6f758eb 100644
+--- a/iconvdata/ibm930.c
++++ b/iconvdata/ibm930.c
+@@ -162,7 +162,8 @@ enum
+       while (ch > rp2->end)                                                 \
+         ++rp2;                                                              \
+                                                                             \
+-      if (__builtin_expect (ch < rp2->start, 0)                             \
++      if (__builtin_expect (rp2->start == 0xffff, 0)                        \
++          || __builtin_expect (ch < rp2->start, 0)                          \
+           || (res = __ibm930db_to_ucs4[ch + rp2->idx],                      \
+               __builtin_expect (res, L'\1') == L'\0' && ch != '\0'))        \
+         {                                                                   \
+@@ -215,7 +216,8 @@ enum
+       while (ch > rp2->end)                                                 \
+         ++rp2;                                                              \
+                                                                             \
+-      if (__builtin_expect (ch < rp2->start, 0)                             \
++      if (__builtin_expect (rp2->start == 0xffff, 0)                        \
++          || __builtin_expect (ch < rp2->start, 0)                          \
+           || (cp = __ucs4_to_ibm930db[ch + rp2->idx],                       \
+               __builtin_expect (cp[0], L'\1')== L'\0' && ch != '\0'))       \
+         {                                                                   \
+
diff --git a/src/patches/glibc/glibc-rh826149.patch b/src/patches/glibc/glibc-rh826149.patch
new file mode 100644 (file)
index 0000000..805572b
--- /dev/null
@@ -0,0 +1,80 @@
+diff -Nrup a/posix/fnmatch.c b/posix/fnmatch.c
+--- a/posix/fnmatch.c  2012-05-25 12:37:26.566678872 -0400
++++ b/posix/fnmatch.c  2012-05-25 13:08:44.451972286 -0400
+@@ -333,6 +333,7 @@ fnmatch (pattern, string, flags)
+ # if HANDLE_MULTIBYTE
+   if (__builtin_expect (MB_CUR_MAX, 1) != 1)
+     {
++      const char *orig_pattern = pattern;
+       mbstate_t ps;
+       size_t n;
+       const char *p;
+@@ -356,10 +357,9 @@ fnmatch (pattern, string, flags)
+                                                alloca_used);
+         n = mbsrtowcs (wpattern, &p, n + 1, &ps);
+         if (__builtin_expect (n == (size_t) -1, 0))
+-          /* Something wrong.
+-             XXX Do we have to set `errno' to something which mbsrtows hasn't
+-             already done?  */
+-          return -1;
++          /* Something wrong: Fall back to single byte matching. */
++          goto try_singlebyte;
++
+         if (p)
+           {
+             memset (&ps, '\0', sizeof (ps));
+@@ -371,10 +371,8 @@ fnmatch (pattern, string, flags)
+       prepare_wpattern:
+         n = mbsrtowcs (NULL, &pattern, 0, &ps);
+         if (__builtin_expect (n == (size_t) -1, 0))
+-          /* Something wrong.
+-             XXX Do we have to set `errno' to something which mbsrtows hasn't
+-             already done?  */
+-          return -1;
++          /* Something wrong: Fall back to single byte matching. */
++          goto try_singlebyte;
+         if (__builtin_expect (n >= (size_t) -1 / sizeof (wchar_t), 0))
+           {
+             __set_errno (ENOMEM);
+@@ -401,14 +399,8 @@ fnmatch (pattern, string, flags)
+                                               alloca_used);
+         n = mbsrtowcs (wstring, &p, n + 1, &ps);
+         if (__builtin_expect (n == (size_t) -1, 0))
+-          {
+-            /* Something wrong.
+-               XXX Do we have to set `errno' to something which
+-               mbsrtows hasn't already done?  */
+-          free_return:
+-            free (wpattern_malloc);
+-            return -1;
+-          }
++          /* Something wrong: Fall back to single byte matching. */
++          goto free_and_try_singlebyte;
+         if (p)
+           {
+             memset (&ps, '\0', sizeof (ps));
+@@ -420,10 +412,8 @@ fnmatch (pattern, string, flags)
+       prepare_wstring:
+         n = mbsrtowcs (NULL, &string, 0, &ps);
+         if (__builtin_expect (n == (size_t) -1, 0))
+-          /* Something wrong.
+-             XXX Do we have to set `errno' to something which mbsrtows hasn't
+-             already done?  */
+-          goto free_return;
++          /* Something wrong: Fall back to single byte matching. */
++          goto free_and_try_singlebyte;
+         if (__builtin_expect (n >= (size_t) -1 / sizeof (wchar_t), 0))
+           {
+             free (wpattern_malloc);
+@@ -450,6 +440,11 @@ fnmatch (pattern, string, flags)
+       free (wpattern_malloc);
+       return res;
++
++      free_and_try_singlebyte:
++      free(wpattern_malloc);
++      try_singlebyte:
++      pattern = orig_pattern;
+     }
+ # endif  /* mbstate_t and mbsrtowcs or _LIBC.  */
diff --git a/src/patches/glibc/glibc-rh827362.patch b/src/patches/glibc/glibc-rh827362.patch
new file mode 100644 (file)
index 0000000..7e6d07e
--- /dev/null
@@ -0,0 +1,250 @@
+diff -pruN glibc-2.12-2-gc4ccff1/libio/Makefile glibc-2.12-2-gc4ccff1.fseek/libio/Makefile
+--- glibc-2.12-2-gc4ccff1/libio/Makefile       2010-05-04 16:57:23.000000000 +0530
++++ glibc-2.12-2-gc4ccff1.fseek/libio/Makefile 2012-09-05 17:28:08.699360413 +0530
+@@ -58,7 +58,7 @@ tests = tst_swprintf tst_wprintf tst_sws
+       tst-memstream1 tst-memstream2 \
+       tst-wmemstream1 tst-wmemstream2 \
+       bug-memstream1 bug-wmemstream1 \
+-      tst-setvbuf1 tst-popen1 tst-fgetwc bug-wsetpos
++      tst-setvbuf1 tst-popen1 tst-fgetwc bug-wsetpos tst-fseek
+ test-srcs = test-freopen
+ all: # Make this the default target; it will be defined in Rules.
+diff -pruN glibc-2.12-2-gc4ccff1/libio/tst-fseek.c glibc-2.12-2-gc4ccff1.fseek/libio/tst-fseek.c
+--- glibc-2.12-2-gc4ccff1/libio/tst-fseek.c    1970-01-01 05:30:00.000000000 +0530
++++ glibc-2.12-2-gc4ccff1.fseek/libio/tst-fseek.c      2012-09-05 17:27:33.606359692 +0530
+@@ -0,0 +1,153 @@
++/* Verify that fseek/ftell combination works for wide chars.
++
++   Copyright (C) 2012 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <stdio.h>
++#include <stdlib.h>
++#include <locale.h>
++#include <errno.h>
++#include <wchar.h>
++#include <unistd.h>
++#include <string.h>
++
++/* Defined in test-skeleton.c.  */
++static int create_temp_file (const char *base, char **filename);
++
++
++static int
++do_seek_end (FILE *fp)
++{
++  long save;
++
++  if (fp == NULL)
++    {
++      printf ("do_seek_end: fopen: %s\n", strerror (errno));
++      return 1;
++    }
++
++  if (fputws (L"abc\n", fp) == -1)
++    {
++      printf ("do_seek_end: fputws: %s\n", strerror (errno));
++      return 1;
++    }
++
++  save = ftell (fp);
++  rewind (fp);
++
++  if (fseek (fp, 0, SEEK_END) == -1)
++    {
++      printf ("do_seek_end: fseek: %s\n", strerror (errno));
++      return 1;
++    }
++
++  if (save != ftell (fp))
++    {
++      printf ("save = %ld, ftell = %ld\n", save, ftell (fp));
++      return 1;
++    }
++
++  return 0;
++}
++
++int
++do_seek_set (FILE *fp)
++{
++  long save;
++
++  if (fputws (L"abc\n", fp) == -1)
++    {
++      printf ("seek_set: fputws: %s\n", strerror (errno));
++      return 1;
++    }
++
++  save = ftell (fp);
++
++  if (fputws (L"xyz\n", fp) == -1)
++    {
++      printf ("seek_set: fputws: %s\n", strerror (errno));
++      return 1;
++    }
++
++  if (fseek (fp, save, SEEK_SET) == -1)
++    {
++      printf ("seek_set: fseek: %s\n", strerror (errno));
++      return 1;
++    }
++
++  if (save != ftell (fp))
++    {
++      printf ("save = %ld, ftell = %ld\n", save, ftell (fp));
++      return 1;
++    }
++
++  return 0;
++}
++
++static int
++do_test (void)
++{
++  if (setlocale (LC_ALL, "en_US.utf8") == NULL)
++    {
++      printf ("Cannot set en_US.utf8 locale.\n");
++      exit (1);
++    }
++
++  int ret = 0;
++  char *filename;
++  int fd = create_temp_file ("tst-fseek.out", &filename);
++
++  if (fd == -1)
++    return 1;
++
++  FILE *fp = fdopen (fd, "w+");
++  if (fp == NULL)
++    {
++      printf ("seek_set: fopen: %s\n", strerror (errno));
++      close (fd);
++      return 1;
++    }
++
++  if (do_seek_set (fp))
++    {
++      printf ("SEEK_SET test failed\n");
++      ret = 1;
++    }
++
++  /* Reopen the file.  */
++  fclose (fp);
++  fp = fopen (filename, "w+");
++  if (fp == NULL)
++    {
++      printf ("seek_end: fopen: %s\n", strerror (errno));
++      return 1;
++    }
++
++  if (do_seek_end (fp))
++    {
++      printf ("SEEK_END test failed\n");
++      ret = 1;
++    }
++
++  fclose (fp);
++
++  return ret;
++}
++
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff -pruN glibc-2.12-2-gc4ccff1/libio/wfileops.c glibc-2.12-2-gc4ccff1.fseek/libio/wfileops.c
+--- glibc-2.12-2-gc4ccff1/libio/wfileops.c     2010-05-04 16:57:23.000000000 +0530
++++ glibc-2.12-2-gc4ccff1.fseek/libio/wfileops.c       2012-09-05 17:27:33.608359685 +0530
+@@ -547,6 +547,55 @@ _IO_wfile_sync (fp)
+ }
+ INTDEF(_IO_wfile_sync)
++/* Adjust the internal buffer pointers to reflect the state in the external
++   buffer.  The content between fp->_IO_read_base and fp->_IO_read_ptr is
++   assumed to be converted and available in the range
++   fp->_wide_data->_IO_read_base and fp->_wide_data->_IO_read_end.  */
++static inline int
++adjust_wide_data (_IO_FILE *fp, bool do_convert)
++{
++  struct _IO_codecvt *cv = fp->_codecvt;
++
++  int clen = (*cv->__codecvt_do_encoding) (cv);
++
++  /* Take the easy way out for constant length encodings if we don't need to
++     convert.  */
++  if (!do_convert && clen > 0)
++    {
++      fp->_wide_data->_IO_read_end += ((fp->_IO_read_ptr - fp->_IO_read_base)
++                                     / clen);
++      goto done;
++    }
++
++  enum __codecvt_result status;
++  const char *read_stop = (const char *) fp->_IO_read_base;
++  do
++    {
++
++      fp->_wide_data->_IO_last_state = fp->_wide_data->_IO_state;
++      status = (*cv->__codecvt_do_in) (cv, &fp->_wide_data->_IO_state,
++                                     fp->_IO_read_base, fp->_IO_read_ptr,
++                                     &read_stop,
++                                     fp->_wide_data->_IO_read_base,
++                                     fp->_wide_data->_IO_buf_end,
++                                     &fp->_wide_data->_IO_read_end);
++
++      /* Should we return EILSEQ?  */
++      if (__builtin_expect (status == __codecvt_error, 0))
++      {
++        fp->_flags |= _IO_ERR_SEEN;
++        return -1;
++      }
++    }
++  while (__builtin_expect (status == __codecvt_partial, 0));
++
++done:
++  /* Now seek to the end of the read buffer.  */
++  fp->_wide_data->_IO_read_ptr = fp->_wide_data->_IO_read_end;
++
++  return 0;
++}
++
+ _IO_off64_t
+ _IO_wfile_seekoff (fp, offset, dir, mode)
+      _IO_FILE *fp;
+@@ -695,6 +744,10 @@ _IO_wfile_seekoff (fp, offset, dir, mode
+                    fp->_wide_data->_IO_buf_base);
+         _IO_wsetp (fp, fp->_wide_data->_IO_buf_base,
+                    fp->_wide_data->_IO_buf_base);
++
++        if (adjust_wide_data (fp, false))
++          goto dumb;
++
+         _IO_mask_flags (fp, 0, _IO_EOF_SEEN);
+         goto resync;
+       }
+@@ -735,6 +788,10 @@ _IO_wfile_seekoff (fp, offset, dir, mode
+   _IO_wsetg (fp, fp->_wide_data->_IO_buf_base,
+            fp->_wide_data->_IO_buf_base, fp->_wide_data->_IO_buf_base);
+   _IO_wsetp (fp, fp->_wide_data->_IO_buf_base, fp->_wide_data->_IO_buf_base);
++
++  if (adjust_wide_data (fp, true))
++    goto dumb;
++
+   fp->_offset = result + count;
+   _IO_mask_flags (fp, 0, _IO_EOF_SEEN);
+   return offset;
diff --git a/src/patches/glibc/glibc-rh830127.patch b/src/patches/glibc/glibc-rh830127.patch
new file mode 100644 (file)
index 0000000..06dea73
--- /dev/null
@@ -0,0 +1,403 @@
+diff -Nrup a/stdio-common/bug22.c b/stdio-common/bug22.c
+--- a/stdio-common/bug22.c     2010-05-04 05:27:23.000000000 -0600
++++ b/stdio-common/bug22.c     2012-08-03 13:56:40.887829210 -0600
+@@ -1,12 +1,22 @@
+ /* BZ #5424 */
+ #include <stdio.h>
++#include <errno.h>
++/* INT_MAX + 1 */
+ #define N 2147483648
++/* (INT_MAX / 2) + 2 */
++#define N2 1073741825
++
++/* INT_MAX - 3 */
++#define N3 2147483644
++
+ #define STRINGIFY(S) #S
+ #define MAKE_STR(S) STRINGIFY(S)
+ #define SN MAKE_STR(N)
++#define SN2 MAKE_STR(N2)
++#define SN3 MAKE_STR(N3)
+ static int
+ do_test (void)
+@@ -20,13 +30,27 @@ do_test (void)
+       return 1;
+     }
+-  ret = fprintf (fp, "%" SN "d%" SN "d", 1, 1);
++  ret = fprintf (fp, "%" SN "d", 1);
++  printf ("ret = %d\n", ret);
++  if (ret != -1 || errno != EOVERFLOW)
++        return 1;
++
++  ret = fprintf (fp, "%." SN "d", 1);
++  printf ("ret = %d\n", ret);
++  if (ret != -1 || errno != EOVERFLOW)
++        return 1;
++
++  ret = fprintf (fp, "%." SN3 "d", 1);
++  printf ("ret = %d\n", ret);
++  if (ret != -1 || errno != EOVERFLOW)
++        return 1;
++  ret = fprintf (fp, "%" SN2 "d%" SN2 "d", 1, 1);
+   printf ("ret = %d\n", ret);
+-  return ret != -1;
++  return ret != -1 || errno != EOVERFLOW;
+ }
+-#define TIMEOUT 30
++#define TIMEOUT 60
+ #define TEST_FUNCTION do_test ()
+ #include "../test-skeleton.c"
+diff -Nrup a/stdio-common/printf-parse.h b/stdio-common/printf-parse.h
+--- a/stdio-common/printf-parse.h      2010-05-04 05:27:23.000000000 -0600
++++ b/stdio-common/printf-parse.h      2012-08-03 13:57:31.932638761 -0600
+@@ -14,9 +14,8 @@
+    Lesser General Public License for more details.
+    You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, write to the Free
+-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+-   02111-1307 USA.  */
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
+ #include <printf.h>
+ #include <stdint.h>
+@@ -69,16 +68,27 @@ union printf_arg
+ #ifndef DONT_NEED_READ_INT
+ /* Read a simple integer from a string and update the string pointer.
+    It is assumed that the first character is a digit.  */
+-static unsigned int
++static int
+ read_int (const UCHAR_T * *pstr)
+ {
+-  unsigned int retval = **pstr - L_('0');
++  int retval = **pstr - L_('0');
+   while (ISDIGIT (*++(*pstr)))
+-    {
+-      retval *= 10;
+-      retval += **pstr - L_('0');
+-    }
++    if (retval >= 0)
++      {
++      if (INT_MAX / 10 < retval)
++        retval = -1;
++      else
++        {
++          int digit = **pstr - L_('0');
++
++          retval *= 10;
++          if (INT_MAX - digit < retval)
++            retval = -1;
++          else
++            retval += digit;
++        }
++      }
+   return retval;
+ }
+diff -Nrup a/stdio-common/printf-parsemb.c b/stdio-common/printf-parsemb.c
+--- a/stdio-common/printf-parsemb.c    2010-05-04 05:27:23.000000000 -0600
++++ b/stdio-common/printf-parsemb.c    2012-08-03 13:58:44.683366361 -0600
+@@ -13,9 +13,8 @@
+    Lesser General Public License for more details.
+    You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, write to the Free
+-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+-   02111-1307 USA.  */
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
+ #include <ctype.h>
+ #include <limits.h>
+@@ -88,12 +87,15 @@ __parse_one_specmb (const UCHAR_T *forma
+       n = read_int (&format);
+-      if (n > 0 && *format == L_('$'))
++      if (n != 0 && *format == L_('$'))
+       /* Is positional parameter.  */
+       {
+         ++format;             /* Skip the '$'.  */
+-        spec->data_arg = n - 1;
+-        *max_ref_arg = MAX (*max_ref_arg, n);
++        if (n != -1)
++          {
++            spec->data_arg = n - 1;
++            *max_ref_arg = MAX (*max_ref_arg, n);
++          }
+       }
+       else
+       /* Oops; that was actually the width and/or 0 padding flag.
+@@ -161,10 +163,13 @@ __parse_one_specmb (const UCHAR_T *forma
+         /* The width argument might be found in a positional parameter.  */
+         n = read_int (&format);
+-        if (n > 0 && *format == L_('$'))
++        if (n != 0 && *format == L_('$'))
+           {
+-            spec->width_arg = n - 1;
+-            *max_ref_arg = MAX (*max_ref_arg, n);
++            if (n != -1)
++              {
++                spec->width_arg = n - 1;
++                *max_ref_arg = MAX (*max_ref_arg, n);
++              }
+             ++format;         /* Skip '$'.  */
+           }
+       }
+@@ -178,9 +183,13 @@ __parse_one_specmb (const UCHAR_T *forma
+       }
+     }
+   else if (ISDIGIT (*format))
+-    /* Constant width specification.  */
+-    spec->info.width = read_int (&format);
++    {
++      int n = read_int (&format);
++      /* Constant width specification.  */
++      if (n != -1)
++      spec->info.width = n;
++    }
+   /* Get the precision.  */
+   spec->prec_arg = -1;
+   /* -1 means none given; 0 means explicit 0.  */
+@@ -197,10 +206,13 @@ __parse_one_specmb (const UCHAR_T *forma
+           {
+             n = read_int (&format);
+-            if (n > 0 && *format == L_('$'))
++            if (n != 0 && *format == L_('$'))
+               {
+-                spec->prec_arg = n - 1;
+-                *max_ref_arg = MAX (*max_ref_arg, n);
++                if (n != -1)
++                  {
++                    spec->prec_arg = n - 1;
++                    *max_ref_arg = MAX (*max_ref_arg, n);
++                  }
+                 ++format;
+               }
+           }
+@@ -214,7 +226,12 @@ __parse_one_specmb (const UCHAR_T *forma
+           }
+       }
+       else if (ISDIGIT (*format))
+-      spec->info.prec = read_int (&format);
++      {
++        int n = read_int (&format);
++
++        if (n != -1)
++          spec->info.prec = n;
++      }
+       else
+       /* "%.?" is treated like "%.0?".  */
+       spec->info.prec = 0;
+@@ -295,9 +312,9 @@ __parse_one_specmb (const UCHAR_T *forma
+       /* We don't try to get the types for all arguments if the format
+        uses more than one.  The normal case is covered though.  If
+        the call returns -1 we continue with the normal specifiers.  */
+-      || (spec->ndata_args = (*__printf_arginfo_table[spec->info.spec])
+-        (&spec->info, 1, &spec->data_arg_type,
+-         &spec->size)) < 0)
++      || (int) (spec->ndata_args = (*__printf_arginfo_table[spec->info.spec])
++                                 (&spec->info, 1, &spec->data_arg_type,
++                                  &spec->size)) < 0)
+     {
+       /* Find the data argument types of a built-in spec.  */
+       spec->ndata_args = 1;
+diff -Nrup a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c
+--- a/stdio-common/vfprintf.c  2012-08-03 13:31:26.605168350 -0600
++++ b/stdio-common/vfprintf.c  2012-08-03 14:09:26.836725512 -0600
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991-2008, 2009   Free Software Foundation, Inc.
++/* Copyright (C) 1991-2012   Free Software Foundation, Inc.
+    This file is part of the GNU C Library.
+    The GNU C Library is free software; you can redistribute it and/or
+@@ -12,9 +12,8 @@
+    Lesser General Public License for more details.
+    You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, write to the Free
+-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+-   02111-1307 USA.  */
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
+ #include <ctype.h>
+ #include <limits.h>
+@@ -67,10 +66,10 @@
+   do {                                                                              \
+     unsigned int _val = val;                                                \
+     assert ((unsigned int) done < (unsigned int) INT_MAX);                  \
+-    if (__builtin_expect ((unsigned int) INT_MAX - (unsigned int) done              \
+-                        < _val, 0))                                         \
++    if (__builtin_expect (INT_MAX - done < _val, 0))                        \
+       {                                                                             \
+       done = -1;                                                            \
++       __set_errno (EOVERFLOW);                                             \
+       goto all_done;                                                        \
+       }                                                                             \
+     done += _val;                                                           \
+@@ -141,12 +140,17 @@
+   do                                                                        \
+     {                                                                       \
+       assert ((size_t) done <= (size_t) INT_MAX);                           \
+-      if ((size_t) PUT (s, (String), (Len)) != (size_t) (Len)               \
+-        || (size_t) INT_MAX - (size_t) done < (size_t) (Len))               \
++      if ((size_t) PUT (s, (String), (Len)) != (size_t) (Len))                      \
+       {                                                                     \
+         done = -1;                                                          \
+         goto all_done;                                                      \
+       }                                                                     \
++      if (__builtin_expect (INT_MAX - done < (Len), 0))                             \
++      {                                                                             \
++      done = -1;                                                            \
++       __set_errno (EOVERFLOW);                                             \
++      goto all_done;                                                        \
++      }                                                                             \
+       done += (Len);                                                        \
+     }                                                                       \
+   while (0)
+@@ -1435,10 +1439,21 @@ vfprintf (FILE *s, const CHAR_T *format,
+       const UCHAR_T *tmp;     /* Temporary value.  */
+       tmp = ++f;
+-      if (ISDIGIT (*tmp) && read_int (&tmp) && *tmp == L_('$'))
+-        /* The width comes from a positional parameter.  */
+-        goto do_positional;
++      if (ISDIGIT (*tmp))
++        {
++          int pos = read_int (&tmp);
++          if (pos == -1)
++            {
++              __set_errno (EOVERFLOW);
++              done = -1;
++              goto all_done;
++            }
++
++          if (pos && *tmp == L_('$'))
++            /* The width comes from a positional parameter.  */
++            goto do_positional;
++        }
+       width = va_arg (ap, int);
+       /* Negative width means left justified.  */
+@@ -1449,9 +1464,9 @@ vfprintf (FILE *s, const CHAR_T *format,
+           left = 1;
+         }
+-      if (__builtin_expect (width >= (size_t) -1 / sizeof (CHAR_T) - 32, 0))
++      if (__builtin_expect (width >= INT_MAX / sizeof (CHAR_T) - 32, 0))
+         {
+-          __set_errno (ERANGE);
++          __set_errno (EOVERFLOW);
+           done = -1;
+           goto all_done;
+         }
+@@ -1481,9 +1496,10 @@ vfprintf (FILE *s, const CHAR_T *format,
+     LABEL (width):
+       width = read_int (&f);
+-      if (__builtin_expect (width >= (size_t) -1 / sizeof (CHAR_T) - 32, 0))
++      if (__builtin_expect (width == -1
++                          || width >= INT_MAX / sizeof (CHAR_T) - 32, 0))
+       {
+-        __set_errno (ERANGE);
++        __set_errno (EOVERFLOW);
+         done = -1;
+         goto all_done;
+       }
+@@ -1518,10 +1534,21 @@ vfprintf (FILE *s, const CHAR_T *format,
+         const UCHAR_T *tmp;   /* Temporary value.  */
+         tmp = ++f;
+-        if (ISDIGIT (*tmp) && read_int (&tmp) > 0 && *tmp == L_('$'))
+-          /* The precision comes from a positional parameter.  */
+-          goto do_positional;
++        if (ISDIGIT (*tmp))
++          {
++            int pos = read_int (&tmp);
++
++            if (pos == -1)
++              {
++                __set_errno (EOVERFLOW);
++                done = -1;
++                goto all_done;
++              }
++            if (pos && *tmp == L_('$'))
++              /* The precision comes from a positional parameter.  */
++              goto do_positional;
++          }
+         prec = va_arg (ap, int);
+         /* If the precision is negative the precision is omitted.  */
+@@ -1529,15 +1556,26 @@ vfprintf (FILE *s, const CHAR_T *format,
+           prec = -1;
+       }
+       else if (ISDIGIT (*f))
+-      prec = read_int (&f);
++      {
++        prec = read_int (&f);
++
++        /* The precision was specified in this case as an extremely
++           large positive value.  */
++        if (prec == -1)
++          {
++            __set_errno (EOVERFLOW);
++            done = -1;
++            goto all_done;
++          }
++      }
+       else
+       prec = 0;
+       if (prec > width
+         && prec > sizeof (work_buffer) / sizeof (work_buffer[0]) - 32)
+       {
+-        if (__builtin_expect (prec >= (size_t) -1 / sizeof (CHAR_T) - 32, 0))
++        if (__builtin_expect (prec >= INT_MAX / sizeof (CHAR_T) - 32, 0))
+           {
+-            __set_errno (ERANGE);
++            __set_errno (EOVERFLOW);
+             done = -1;
+             goto all_done;
+           }
+@@ -1722,13 +1760,13 @@ do_positional:
+     nargs = MAX (nargs, max_ref_arg);
+     /* Calculate total size needed to represent a single argument across
+        all three argument-related arrays.  */
+-    bytes_per_arg = sizeof (*args_value) + sizeof (*args_size)
+-                    + sizeof (*args_type);
++    bytes_per_arg = (sizeof (*args_value) + sizeof (*args_size)
++                   + sizeof (*args_type));
+     /* Check for potential integer overflow.  */
+-    if (__builtin_expect (nargs > SIZE_MAX / bytes_per_arg, 0))
++    if (__builtin_expect (nargs > INT_MAX / bytes_per_arg, 0))
+       {
+-         __set_errno (ERANGE);
++       __set_errno (EOVERFLOW);
+          done = -1;
+          goto all_done;
+       }
+@@ -1746,6 +1784,8 @@ do_positional:
+           }
+       }
++    /* Set up the remaining two arrays to each point past the end of the
++       prior array, since space for all three has been allocated now.  */
+     args_size = &args_value[nargs].pa_int;
+     args_type = &args_size[nargs];
+     memset (args_type, s->_flags2 & _IO_FLAGS2_FORTIFY ? '\xff' : '\0',
diff --git a/src/patches/glibc/glibc-rh832516.patch b/src/patches/glibc/glibc-rh832516.patch
new file mode 100644 (file)
index 0000000..476af4b
--- /dev/null
@@ -0,0 +1,19 @@
+diff -Nrup a/locale/loadlocale.c b/locale/loadlocale.c
+--- a/locale/loadlocale.c      2010-05-04 07:27:23.000000000 -0400
++++ b/locale/loadlocale.c      2012-08-05 17:19:47.761384155 -0400
+@@ -170,7 +170,6 @@ _nl_load_locale (struct loaded_l10nfile 
+   int save_err;
+   int alloc = ld_mapped;
+-  file->decided = 1;
+   file->data = NULL;
+   fd = open_not_cancel_2 (file->filename, O_RDONLY);
+@@ -279,6 +278,7 @@ _nl_load_locale (struct loaded_l10nfile 
+   newdata->alloc = alloc;
+   file->data = newdata;
++  file->decided = 1;
+ }
+ void
diff --git a/src/patches/glibc/glibc-rh832694.patch b/src/patches/glibc/glibc-rh832694.patch
new file mode 100644 (file)
index 0000000..249afb5
--- /dev/null
@@ -0,0 +1,22 @@
+diff --git a/sysdeps/gnu/errlist.c b/sysdeps/gnu/errlist.c
+index e3d2faf..5437ff8 100644
+--- a/sysdeps/gnu/errlist.c
++++ b/sysdeps/gnu/errlist.c
+@@ -780,11 +780,12 @@ TRANS The user's disk quota was exceeded. */
+ #endif
+ #ifdef ESTALE
+ /*
+-TRANS Stale NFS file handle.  This indicates an internal confusion in the NFS
+-TRANS system which is due to file system rearrangements on the server host.
+-TRANS Repairing this condition usually requires unmounting and remounting
+-TRANS the NFS file system on the local host. */
+-    [ERR_REMAP (ESTALE)] = N_("Stale NFS file handle"),
++TRANS Stale file handle.  This indicates an internal confusion in the 
++TRANS file system which is due to file system rearrangements on the server host
++TRANS for NFS filesystems or corruption in other filesystems.
++TRANS Repairing this condition usually requires unmounting, possibly
++TRANS repairing and remounting the file system. */
++    [ERR_REMAP (ESTALE)] = N_("Stale file handle"),
+ # if ESTALE > ERR_MAX
+ # undef ERR_MAX
+ # define ERR_MAX ESTALE
diff --git a/src/patches/glibc/glibc-rh837026.patch b/src/patches/glibc/glibc-rh837026.patch
deleted file mode 100644 (file)
index 558ad4f..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-diff -rup a/resolv/res_send.c b/resolv/res_send.c
---- a/resolv/res_send.c        2012-06-28 11:55:38.361886650 -0600
-+++ b/resolv/res_send.c        2012-06-28 11:51:38.253963687 -0600
-@@ -424,17 +424,15 @@ __libc_res_nsend(res_state statp, const
-               }
-               n = statp->nscount;
-               ext_total_nscount = EXT(statp).nscount + EXT(statp).nscount6;
--              if (statp->nscount > ext_total_nscount)
--                      for (n = ext_total_nscount, ns = 0;
--                           n < statp->nscount; n++) {
--                              while (ns < MAXNS
--                                     && EXT(statp).nsmap[ns] != MAXNS)
--                                      ns++;
--                              if (ns == MAXNS)
--                                      break;
--                              EXT(statp).nsmap[ns] = n;
--                              map[n] = ns++;
--                      }
-+              for (n = 0, ns = 0; n < statp->nscount - ext_total_nscount; n++) {
-+                      while (ns < MAXNS
-+                             && EXT(statp).nsmap[ns] != MAXNS)
-+                              ns++;
-+                      if (ns == MAXNS)
-+                              break;
-+                      EXT(statp).nsmap[ns] = n;
-+                      map[n] = ns++;
-+              }
-               EXT(statp).nscount = n;
-               for (ns = 0; ns < EXT(statp).nscount; ns++) {
-                       n = map[ns];
diff --git a/src/patches/glibc/glibc-rh837695.patch b/src/patches/glibc/glibc-rh837695.patch
new file mode 100644 (file)
index 0000000..03e1e02
--- /dev/null
@@ -0,0 +1,54 @@
+diff -rup a/nss/nsswitch.h b/nss/nsswitch.h
+--- a/nss/nsswitch.h   2010-05-04 05:27:23.000000000 -0600
++++ b/nss/nsswitch.h   2012-07-05 11:28:15.316585117 -0600
+@@ -182,4 +182,8 @@ extern int __nss_hostname_digits_dots (c
+                                      int *h_errnop);
+ libc_hidden_proto (__nss_hostname_digits_dots)
++/* Maximum number of aliases we allow.  */
++#define MAX_NR_ALIASES  48
++#define MAX_NR_ADDRS    48
++
+ #endif        /* nsswitch.h */
+Only in b/nss: nsswitch.h.orig
+diff -rup a/resolv/nss_dns/dns-host.c b/resolv/nss_dns/dns-host.c
+--- a/resolv/nss_dns/dns-host.c        2012-07-05 11:27:39.298760961 -0600
++++ b/resolv/nss_dns/dns-host.c        2012-07-05 11:28:15.317585112 -0600
+@@ -89,10 +89,6 @@
+ #define RESOLVSORT
+-/* Maximum number of aliases we allow.  */
+-#define MAX_NR_ALIASES        48
+-#define MAX_NR_ADDRS  48
+-
+ #if PACKETSZ > 65536
+ # define MAXPACKET    PACKETSZ
+ #else
+Only in b/resolv/nss_dns: dns-host.c.orig
+diff -rup a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
+--- a/sysdeps/posix/getaddrinfo.c      2012-07-05 11:27:39.284761028 -0600
++++ b/sysdeps/posix/getaddrinfo.c      2012-07-05 14:15:39.785546125 -0600
+@@ -565,7 +565,10 @@ gaih_inet (const char *name, const struc
+            IPv6 scope ids. */
+         if (req->ai_family == AF_INET)
+           {
+-            size_t tmpbuflen = 512;
++              /* Add room for struct host_data in resolv/nss_dns/dns-host.c */
++              size_t tmpbuflen = 512 + (MAX_NR_ALIASES+MAX_NR_ADDRS+1)*sizeof(char*)
++                                  + 16 * sizeof(char);
++
+             assert (tmpbuf == NULL);
+             tmpbuf = alloca_account (tmpbuflen, alloca_used);
+             int rc;
+@@ -807,7 +810,7 @@ gaih_inet (const char *name, const struc
+         old_res_options = _res.options;
+         _res.options &= ~RES_USE_INET6;
+-        size_t tmpbuflen = 1024;
++        size_t tmpbuflen = 1024 + sizeof(struct gaih_addrtuple);
+         malloc_tmpbuf = !__libc_use_alloca (alloca_used + tmpbuflen);
+         assert (tmpbuf == NULL);
+         if (!malloc_tmpbuf)
+Only in b/sysdeps/posix: getaddrinfo.c.orig
+Only in b/sysdeps/posix: getaddrinfo.c.rej
diff --git a/src/patches/glibc/glibc-rh837918.patch b/src/patches/glibc/glibc-rh837918.patch
new file mode 100644 (file)
index 0000000..924d83d
--- /dev/null
@@ -0,0 +1,7183 @@
+diff -Nrup a/math/libm-test.inc b/math/libm-test.inc
+--- a/math/libm-test.inc       2010-05-04 05:27:23.000000000 -0600
++++ b/math/libm-test.inc       2012-08-06 09:54:00.821929695 -0600
+@@ -2018,6 +2018,142 @@ cos_test (void)
+ static void
++cos_test_tonearest (void)
++{
++  int save_round_mode;
++  errno = 0;
++  FUNC(cos) (0);
++  if (errno == ENOSYS)
++    /* Function not implemented.  */
++    return;
++
++  START (cos_tonearest);
++
++  save_round_mode = fegetround ();
++
++  if (!fesetround (FE_TONEAREST))
++    {
++      TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L);
++      TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L);
++      TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L);
++      TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L);
++      TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L);
++      TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L);
++      TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L);
++      TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L);
++      TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L);
++      TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L);
++    }
++
++  fesetround (save_round_mode);
++
++  END (cos_tonearest);
++}
++
++
++static void
++cos_test_towardzero (void)
++{
++  int save_round_mode;
++  errno = 0;
++  FUNC(cos) (0);
++  if (errno == ENOSYS)
++    /* Function not implemented.  */
++    return;
++
++  START (cos_towardzero);
++
++  save_round_mode = fegetround ();
++
++  if (!fesetround (FE_TOWARDZERO))
++    {
++      TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L);
++      TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L);
++      TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L);
++      TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L);
++      TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L);
++      TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L);
++      TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L);
++      TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L);
++      TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L);
++      TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L);
++    }
++
++  fesetround (save_round_mode);
++
++  END (cos_towardzero);
++}
++
++
++static void
++cos_test_downward (void)
++{
++  int save_round_mode;
++  errno = 0;
++  FUNC(cos) (0);
++  if (errno == ENOSYS)
++    /* Function not implemented.  */
++    return;
++
++  START (cos_downward);
++
++  save_round_mode = fegetround ();
++
++  if (!fesetround (FE_DOWNWARD))
++    {
++      TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L);
++      TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L);
++      TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L);
++      TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L);
++      TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L);
++      TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L);
++      TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L);
++      TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L);
++      TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L);
++      TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L);
++    }
++
++  fesetround (save_round_mode);
++
++  END (cos_downward);
++}
++
++
++static void
++cos_test_upward (void)
++{
++  int save_round_mode;
++  errno = 0;
++  FUNC(cos) (0);
++  if (errno == ENOSYS)
++    /* Function not implemented.  */
++    return;
++
++  START (cos_upward);
++
++  save_round_mode = fegetround ();
++
++  if (!fesetround (FE_UPWARD))
++    {
++      TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L);
++      TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L);
++      TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L);
++      TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L);
++      TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L);
++      TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L);
++      TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L);
++      TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L);
++      TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L);
++      TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L);
++    }
++
++  fesetround (save_round_mode);
++
++  END (cos_upward);
++}
++
++
++static void
+ cosh_test (void)
+ {
+   errno = 0;
+@@ -2043,6 +2179,114 @@ cosh_test (void)
+ static void
++cosh_test_tonearest (void)
++{
++  int save_round_mode;
++  errno = 0;
++  FUNC(cosh) (0);
++  if (errno == ENOSYS)
++    /* Function not implemented.  */
++    return;
++
++  START (cosh_tonearest);
++
++  save_round_mode = fegetround ();
++
++  if (!fesetround (FE_TONEAREST))
++    {
++      TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L);
++      TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L);
++      TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L);
++    }
++
++  fesetround (save_round_mode);
++
++  END (cosh_tonearest);
++}
++
++
++static void
++cosh_test_towardzero (void)
++{
++  int save_round_mode;
++  errno = 0;
++  FUNC(cosh) (0);
++  if (errno == ENOSYS)
++    /* Function not implemented.  */
++    return;
++
++  START (cosh_towardzero);
++
++  save_round_mode = fegetround ();
++
++  if (!fesetround (FE_TOWARDZERO))
++    {
++      TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L);
++      TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L);
++      TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L);
++    }
++
++  fesetround (save_round_mode);
++
++  END (cosh_towardzero);
++}
++
++
++static void
++cosh_test_downward (void)
++{
++  int save_round_mode;
++  errno = 0;
++  FUNC(cosh) (0);
++  if (errno == ENOSYS)
++    /* Function not implemented.  */
++    return;
++
++  START (cosh_downward);
++
++  save_round_mode = fegetround ();
++
++  if (!fesetround (FE_DOWNWARD))
++    {
++      TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L);
++      TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L);
++      TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L);
++    }
++
++  fesetround (save_round_mode);
++
++  END (cosh_downward);
++}
++
++
++static void
++cosh_test_upward (void)
++{
++  int save_round_mode;
++  errno = 0;
++  FUNC(cosh) (0);
++  if (errno == ENOSYS)
++    /* Function not implemented.  */
++    return;
++
++  START (cosh_upward);
++
++  save_round_mode = fegetround ();
++
++  if (!fesetround (FE_UPWARD))
++    {
++      TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L);
++      TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L);
++      TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L);
++    }
++
++  fesetround (save_round_mode);
++
++  END (cosh_upward);
++}
++
++
++static void
+ cpow_test (void)
+ {
+   errno = 0;
+@@ -2527,6 +2771,114 @@ exp_test (void)
+ static void
++exp_test_tonearest (void)
++{
++  int save_round_mode;
++  errno = 0;
++  FUNC(exp) (0);
++  if (errno == ENOSYS)
++    /* Function not implemented.  */
++    return;
++
++  START (exp_tonearest);
++
++  save_round_mode = fegetround ();
++
++  if (!fesetround (FE_TONEAREST))
++    {
++      TEST_f_f (exp, 1, M_El);
++      TEST_f_f (exp, 2, M_E2l);
++      TEST_f_f (exp, 3, M_E3l);
++    }
++
++  fesetround (save_round_mode);
++
++  END (exp_tonearest);
++}
++
++
++static void
++exp_test_towardzero (void)
++{
++  int save_round_mode;
++  errno = 0;
++  FUNC(exp) (0);
++  if (errno == ENOSYS)
++    /* Function not implemented.  */
++    return;
++
++  START (exp_towardzero);
++
++  save_round_mode = fegetround ();
++
++  if (!fesetround (FE_TOWARDZERO))
++    {
++      TEST_f_f (exp, 1, M_El);
++      TEST_f_f (exp, 2, M_E2l);
++      TEST_f_f (exp, 3, M_E3l);
++    }
++
++  fesetround (save_round_mode);
++
++  END (exp_towardzero);
++}
++
++
++static void
++exp_test_downward (void)
++{
++  int save_round_mode;
++  errno = 0;
++  FUNC(exp) (0);
++  if (errno == ENOSYS)
++    /* Function not implemented.  */
++    return;
++
++  START (exp_downward);
++
++  save_round_mode = fegetround ();
++
++  if (!fesetround (FE_DOWNWARD))
++    {
++      TEST_f_f (exp, 1, M_El);
++      TEST_f_f (exp, 2, M_E2l);
++      TEST_f_f (exp, 3, M_E3l);
++    }
++
++  fesetround (save_round_mode);
++
++  END (exp_downward);
++}
++
++
++static void
++exp_test_upward (void)
++{
++  int save_round_mode;
++  errno = 0;
++  FUNC(exp) (0);
++  if (errno == ENOSYS)
++    /* Function not implemented.  */
++    return;
++
++  START (exp_upward);
++
++  save_round_mode = fegetround ();
++
++  if (!fesetround (FE_UPWARD))
++    {
++      TEST_f_f (exp, 1, M_El);
++      TEST_f_f (exp, 2, M_E2l);
++      TEST_f_f (exp, 3, M_E3l);
++    }
++
++  fesetround (save_round_mode);
++
++  END (exp_upward);
++}
++
++
++static void
+ exp10_test (void)
+ {
+   errno = 0;
+@@ -4848,22 +5200,127 @@ pow_test (void)
+   END (pow);
+ }
++
+ static void
+-remainder_test (void)
++pow_test_tonearest (void)
+ {
++  int save_round_mode;
+   errno = 0;
+-  FUNC(remainder) (1.625, 1.0);
++  FUNC(pow) (0, 0);
+   if (errno == ENOSYS)
+     /* Function not implemented.  */
+     return;
+-  START (remainder);
++  START (pow_tonearest);
+-  TEST_ff_f (remainder, 1, 0, nan_value, INVALID_EXCEPTION);
+-  TEST_ff_f (remainder, 1, minus_zero, nan_value, INVALID_EXCEPTION);
+-  TEST_ff_f (remainder, plus_infty, 1, nan_value, INVALID_EXCEPTION);
+-  TEST_ff_f (remainder, minus_infty, 1, nan_value, INVALID_EXCEPTION);
+-  TEST_ff_f (remainder, nan_value, nan_value, nan_value);
++  save_round_mode = fegetround ();
++
++  if (!fesetround (FE_TONEAREST))
++    {
++      TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L);
++      TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L);
++    }
++
++  fesetround (save_round_mode);
++
++  END (pow_tonearest);
++}
++
++
++static void
++pow_test_towardzero (void)
++{
++  int save_round_mode;
++  errno = 0;
++  FUNC(pow) (0, 0);
++  if (errno == ENOSYS)
++    /* Function not implemented.  */
++    return;
++
++  START (pow_towardzero);
++
++  save_round_mode = fegetround ();
++
++  if (!fesetround (FE_TOWARDZERO))
++    {
++      TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L);
++      TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L);
++    }
++
++  fesetround (save_round_mode);
++
++  END (pow_towardzero);
++}
++
++
++static void
++pow_test_downward (void)
++{
++  int save_round_mode;
++  errno = 0;
++  FUNC(pow) (0, 0);
++  if (errno == ENOSYS)
++    /* Function not implemented.  */
++    return;
++
++  START (pow_downward);
++
++  save_round_mode = fegetround ();
++
++  if (!fesetround (FE_DOWNWARD))
++    {
++      TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L);
++      TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L);
++    }
++
++  fesetround (save_round_mode);
++
++  END (pow_downward);
++}
++
++
++static void
++pow_test_upward (void)
++{
++  int save_round_mode;
++  errno = 0;
++  FUNC(pow) (0, 0);
++  if (errno == ENOSYS)
++    /* Function not implemented.  */
++    return;
++
++  START (pow_upward);
++
++  save_round_mode = fegetround ();
++
++  if (!fesetround (FE_UPWARD))
++    {
++      TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L);
++      TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L);
++    }
++
++  fesetround (save_round_mode);
++
++  END (pow_upward);
++}
++
++
++static void
++remainder_test (void)
++{
++  errno = 0;
++  FUNC(remainder) (1.625, 1.0);
++  if (errno == ENOSYS)
++    /* Function not implemented.  */
++    return;
++
++  START (remainder);
++
++  TEST_ff_f (remainder, 1, 0, nan_value, INVALID_EXCEPTION);
++  TEST_ff_f (remainder, 1, minus_zero, nan_value, INVALID_EXCEPTION);
++  TEST_ff_f (remainder, plus_infty, 1, nan_value, INVALID_EXCEPTION);
++  TEST_ff_f (remainder, minus_infty, 1, nan_value, INVALID_EXCEPTION);
++  TEST_ff_f (remainder, nan_value, nan_value, nan_value);
+   TEST_ff_f (remainder, 1.625, 1.0, -0.375);
+   TEST_ff_f (remainder, -1.625, 1.0, 0.375);
+@@ -5545,6 +6002,7 @@ sin_test (void)
+ #ifdef TEST_DOUBLE
+   TEST_f_f (sin, 0.80190127184058835, 0.71867942238767868);
++  TEST_f_f (sin, 2.522464e-1, 2.4957989804940911e-1);
+ #endif
+   END (sin);
+@@ -5553,6 +6011,142 @@ sin_test (void)
+ static void
++sin_test_tonearest (void)
++{
++  int save_round_mode;
++  errno = 0;
++  FUNC(sin) (0);
++  if (errno == ENOSYS)
++    /* Function not implemented.  */
++    return;
++
++  START (sin_tonearest);
++
++  save_round_mode = fegetround ();
++
++  if (!fesetround (FE_TONEAREST))
++    {
++      TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L);
++      TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L);
++      TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L);
++      TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L);
++      TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L);
++      TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L);
++      TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L);
++      TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L);
++      TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L);
++      TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L);
++    }
++
++  fesetround (save_round_mode);
++
++  END (sin_tonearest);
++}
++
++
++static void
++sin_test_towardzero (void)
++{
++  int save_round_mode;
++  errno = 0;
++  FUNC(sin) (0);
++  if (errno == ENOSYS)
++    /* Function not implemented.  */
++    return;
++
++  START (sin_towardzero);
++
++  save_round_mode = fegetround ();
++
++  if (!fesetround (FE_TOWARDZERO))
++    {
++      TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L);
++      TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L);
++      TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L);
++      TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L);
++      TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L);
++      TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L);
++      TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L);
++      TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L);
++      TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L);
++      TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L);
++    }
++
++  fesetround (save_round_mode);
++
++  END (sin_towardzero);
++}
++
++
++static void
++sin_test_downward (void)
++{
++  int save_round_mode;
++  errno = 0;
++  FUNC(sin) (0);
++  if (errno == ENOSYS)
++    /* Function not implemented.  */
++    return;
++
++  START (sin_downward);
++
++  save_round_mode = fegetround ();
++
++  if (!fesetround (FE_DOWNWARD))
++    {
++      TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L);
++      TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L);
++      TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L);
++      TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L);
++      TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L);
++      TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L);
++      TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L);
++      TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L);
++      TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L);
++      TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L);
++    }
++
++  fesetround (save_round_mode);
++
++  END (sin_downward);
++}
++
++
++static void
++sin_test_upward (void)
++{
++  int save_round_mode;
++  errno = 0;
++  FUNC(sin) (0);
++  if (errno == ENOSYS)
++    /* Function not implemented.  */
++    return;
++
++  START (sin_upward);
++
++  save_round_mode = fegetround ();
++
++  if (!fesetround (FE_UPWARD))
++    {
++      TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L);
++      TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L);
++      TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L);
++      TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L);
++      TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L);
++      TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L);
++      TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L);
++      TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L);
++      TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L);
++      TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L);
++    }
++
++  fesetround (save_round_mode);
++
++  END (sin_upward);
++}
++
++
++static void
+ sincos_test (void)
+ {
+   FLOAT sin_res, cos_res;
+@@ -5610,6 +6204,115 @@ sinh_test (void)
+   END (sinh);
+ }
++
++static void
++sinh_test_tonearest (void)
++{
++  int save_round_mode;
++  errno = 0;
++  FUNC(sinh) (0);
++  if (errno == ENOSYS)
++    /* Function not implemented.  */
++    return;
++
++  START (sinh_tonearest);
++
++  save_round_mode = fegetround ();
++
++  if (!fesetround (FE_TONEAREST))
++    {
++      TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L);
++      TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L);
++      TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L);
++    }
++
++  fesetround (save_round_mode);
++
++  END (sinh_tonearest);
++}
++
++
++static void
++sinh_test_towardzero (void)
++{
++  int save_round_mode;
++  errno = 0;
++  FUNC(sinh) (0);
++  if (errno == ENOSYS)
++    /* Function not implemented.  */
++    return;
++
++  START (sinh_towardzero);
++
++  save_round_mode = fegetround ();
++
++  if (!fesetround (FE_TOWARDZERO))
++    {
++      TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L);
++      TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L);
++      TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L);
++    }
++
++  fesetround (save_round_mode);
++
++  END (sinh_towardzero);
++}
++
++
++static void
++sinh_test_downward (void)
++{
++  int save_round_mode;
++  errno = 0;
++  FUNC(sinh) (0);
++  if (errno == ENOSYS)
++    /* Function not implemented.  */
++    return;
++
++  START (sinh_downward);
++
++  save_round_mode = fegetround ();
++
++  if (!fesetround (FE_DOWNWARD))
++    {
++      TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L);
++      TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L);
++      TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L);
++    }
++
++  fesetround (save_round_mode);
++
++  END (sinh_downward);
++}
++
++
++static void
++sinh_test_upward (void)
++{
++  int save_round_mode;
++  errno = 0;
++  FUNC(sinh) (0);
++  if (errno == ENOSYS)
++    /* Function not implemented.  */
++    return;
++
++  START (sinh_upward);
++
++  save_round_mode = fegetround ();
++
++  if (!fesetround (FE_UPWARD))
++    {
++      TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L);
++      TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L);
++      TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L);
++    }
++
++  fesetround (save_round_mode);
++
++  END (sinh_upward);
++}
++
++
+ static void
+ sqrt_test (void)
+ {
+@@ -5673,6 +6376,143 @@ tan_test (void)
+   END (tan);
+ }
++
++static void
++tan_test_tonearest (void)
++{
++  int save_round_mode;
++  errno = 0;
++  FUNC(tan) (0);
++  if (errno == ENOSYS)
++    /* Function not implemented.  */
++    return;
++
++  START (tan_tonearest);
++
++  save_round_mode = fegetround ();
++
++  if (!fesetround (FE_TONEAREST))
++    {
++      TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L);
++      TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L);
++      TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L);
++      TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L);
++      TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L);
++      TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L);
++      TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L);
++      TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L);
++      TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L);
++      TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L);
++    }
++
++  fesetround (save_round_mode);
++
++  END (tan_tonearest);
++}
++
++
++static void
++tan_test_towardzero (void)
++{
++  int save_round_mode;
++  errno = 0;
++  FUNC(tan) (0);
++  if (errno == ENOSYS)
++    /* Function not implemented.  */
++    return;
++
++  START (tan_towardzero);
++
++  save_round_mode = fegetround ();
++
++  if (!fesetround (FE_TOWARDZERO))
++    {
++      TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L);
++      TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L);
++      TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L);
++      TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L);
++      TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L);
++      TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L);
++      TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L);
++      TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L);
++      TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L);
++      TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L);
++    }
++
++  fesetround (save_round_mode);
++
++  END (tan_towardzero);
++}
++
++
++static void
++tan_test_downward (void)
++{
++  int save_round_mode;
++  errno = 0;
++  FUNC(tan) (0);
++  if (errno == ENOSYS)
++    /* Function not implemented.  */
++    return;
++
++  START (tan_downward);
++
++  save_round_mode = fegetround ();
++
++  if (!fesetround (FE_DOWNWARD))
++    {
++      TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L);
++      TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L);
++      TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L);
++      TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L);
++      TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L);
++      TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L);
++      TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L);
++      TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L);
++      TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L);
++      TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L);
++    }
++
++  fesetround (save_round_mode);
++
++  END (tan_downward);
++}
++
++
++static void
++tan_test_upward (void)
++{
++  int save_round_mode;
++  errno = 0;
++  FUNC(tan) (0);
++  if (errno == ENOSYS)
++    /* Function not implemented.  */
++    return;
++
++  START (tan_upward);
++
++  save_round_mode = fegetround ();
++
++  if (!fesetround (FE_UPWARD))
++    {
++      TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L);
++      TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L);
++      TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L);
++      TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L);
++      TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L);
++      TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L);
++      TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L);
++      TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L);
++      TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L);
++      TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L);
++    }
++
++  fesetround (save_round_mode);
++
++  END (tan_upward);
++}
++
++
+ static void
+ tanh_test (void)
+ {
+@@ -6171,20 +7011,44 @@ main (int argc, char **argv)
+   atan_test ();
+   atan2_test ();
+   cos_test ();
++  cos_test_tonearest ();
++  cos_test_towardzero ();
++  cos_test_downward ();
++  cos_test_upward ();
+   sin_test ();
++  sin_test_tonearest ();
++  sin_test_towardzero ();
++  sin_test_downward ();
++  sin_test_upward ();
+   sincos_test ();
+   tan_test ();
++  tan_test_tonearest ();
++  tan_test_towardzero ();
++  tan_test_downward ();
++  tan_test_upward ();
+   /* Hyperbolic functions:  */
+   acosh_test ();
+   asinh_test ();
+   atanh_test ();
+   cosh_test ();
++  cosh_test_tonearest ();
++  cosh_test_towardzero ();
++  cosh_test_downward ();
++  cosh_test_upward ();
+   sinh_test ();
++  sinh_test_tonearest ();
++  sinh_test_towardzero ();
++  sinh_test_downward ();
++  sinh_test_upward ();
+   tanh_test ();
+   /* Exponential and logarithmic functions:  */
+   exp_test ();
++  exp_test_tonearest ();
++  exp_test_towardzero ();
++  exp_test_downward ();
++  exp_test_upward ();
+   exp10_test ();
+   exp2_test ();
+   expm1_test ();
+@@ -6207,6 +7071,10 @@ main (int argc, char **argv)
+   fabs_test ();
+   hypot_test ();
+   pow_test ();
++  pow_test_tonearest ();
++  pow_test_towardzero ();
++  pow_test_downward ();
++  pow_test_upward ();
+   sqrt_test ();
+   /* Error and gamma functions:  */
+diff -Nrup a/math/math_private.h b/math/math_private.h
+--- a/math/math_private.h      2010-05-04 05:27:23.000000000 -0600
++++ b/math/math_private.h      2012-08-06 09:54:00.821929695 -0600
+@@ -357,4 +357,41 @@ extern void __docos (double __x, double
+ #define math_force_eval(x) __asm __volatile ("" : : "m" (x))
+ #endif
++
++/* The standards only specify one variant of the fenv.h interfaces.
++   But at least for some architectures we can be more efficient if we
++   know what operations are going to be performed.  Therefore we
++   define additional interfaces.  By default they refer to the normal
++   interfaces.  */
++#define libc_fegetround() fegetround ()
++#define libc_fegetroundf() fegetround ()
++#define libc_fegetroundl() fegetround ()
++
++#define libc_fesetround(r) (void) fesetround (r)
++#define libc_fesetroundf(r) (void) fesetround (r)
++#define libc_fesetroundl(r) (void) fesetround (r)
++
++#define libc_feholdexcept(e) (void) feholdexcept (e)
++#define libc_feholdexceptf(e) (void) feholdexcept (e)
++#define libc_feholdexceptl(e) (void) feholdexcept (e)
++
++#define libc_feholdexcept_setround(e, r) \
++  do { feholdexcept (e); fesetround (r); } while (0)
++#define libc_feholdexcept_setroundf(e, r) \
++  do { feholdexcept (e); fesetround (r); } while (0)
++#define libc_feholdexcept_setroundl(e, r) \
++  do { feholdexcept (e); fesetround (r); } while (0)
++
++#define libc_fetestexcept(e) fetestexcept (e)
++#define libc_fetestexceptf(e) fetestexcept (e)
++#define libc_fetestexceptl(e) fetestexcept (e)
++
++#define libc_fesetenv(e) (void) fesetenv (e)
++#define libc_fesetenvf(e) (void) fesetenv (e)
++#define libc_fesetenvl(e) (void) fesetenv (e)
++
++#define libc_feupdateenv(e) (void) feupdateenv (e)
++#define libc_feupdateenvf(e) (void) feupdateenv (e)
++#define libc_feupdateenvl(e) (void) feupdateenv (e)
++
+ #endif /* _MATH_PRIVATE_H_ */
+diff -Nrup a/sysdeps/i386/fpu/libm-test-ulps b/sysdeps/i386/fpu/libm-test-ulps
+--- a/sysdeps/i386/fpu/libm-test-ulps  2010-05-04 05:27:23.000000000 -0600
++++ b/sysdeps/i386/fpu/libm-test-ulps  2012-08-06 11:29:16.370874961 -0600
+@@ -9,18 +9,12 @@ ldouble: 1
+ Test "asin (-0.5) == -pi/6":
+ ildouble: 1
+ ldouble: 1
+-Test "asin (-1.0) == -pi/2":
+-ildouble: 1
+-ldouble: 1
+ Test "asin (0.5) == pi/6":
+ ildouble: 1
+ ldouble: 1
+ Test "asin (0.75) == 0.848062078981481008052944338998418080":
+ ildouble: 1
+ ldouble: 1
+-Test "asin (1.0) == pi/2":
+-ildouble: 1
+-ldouble: 1
+ # atanh
+ Test "atanh (0.75) == 0.972955074527656652552676371721589865":
+@@ -35,20 +29,6 @@ ildouble: 2
+ ldouble: 2
+ # cacosh
+-Test "Real part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i":
+-double: 1
+-float: 9
+-idouble: 1
+-ifloat: 9
+-ildouble: 6
+-ldouble: 6
+-Test "Imaginary part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i":
+-double: 1
+-float: 4
+-idouble: 1
+-ifloat: 4
+-ildouble: 1
+-ldouble: 1
+ Test "Real part of: cacosh (0.75 + 1.25 i) == 1.13239363160530819522266333696834467 + 1.11752014915610270578240049553777969 i":
+ ildouble: 1
+ ldouble: 1
+@@ -124,8 +104,6 @@ ldouble: 1
+ Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
+ float: 1
+ ifloat: 1
+-ildouble: 1
+-ldouble: 1
+ Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
+ double: 1
+ idouble: 1
+@@ -149,9 +127,7 @@ float: 1
+ idouble: 1
+ ifloat: 1
+ Test "Imaginary part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
+-double: 1
+ float: 1
+-idouble: 1
+ ifloat: 1
+ # cexp
+@@ -186,8 +162,6 @@ ifloat: 1
+ Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
+ double: 1
+ idouble: 1
+-ildouble: 1
+-ldouble: 1
+ Test "Imaginary part of: clog10 (-3 + inf i) == inf + pi/2*log10(e) i":
+ double: 1
+ float: 1
+@@ -262,27 +236,175 @@ ifloat: 1
+ # cos
+ Test "cos (M_PI_6l * 2.0) == 0.5":
+ double: 1
+-float: 1
+ idouble: 1
+-ifloat: 1
+ Test "cos (M_PI_6l * 4.0) == -0.5":
+ double: 2
+ float: 1
+ idouble: 2
+ ifloat: 1
++
++# cos_downward
++Test "cos_downward (1) == 0.5403023058681397174009366074429766037323":
++double: 1
++idouble: 1
++ildouble: 1
++ldouble: 1
++Test "cos_downward (10) == -0.8390715290764524522588639478240648345199":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++Test "cos_downward (3) == -0.9899924966004454572715727947312613023937":
++double: 1
++idouble: 1
++Test "cos_downward (4) == -0.6536436208636119146391681830977503814241":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "cos_downward (5) == 0.2836621854632262644666391715135573083344":
++float: 1
++ifloat: 1
++Test "cos_downward (7) == 0.7539022543433046381411975217191820122183":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "cos_downward (8) == -0.1455000338086135258688413818311946826093":
++ildouble: 1
++ldouble: 1
++Test "cos_downward (9) == -0.9111302618846769883682947111811653112463":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++# cos_tonearest
++Test "cos_tonearest (8) == -0.1455000338086135258688413818311946826093":
++ildouble: 1
++ldouble: 1
++Test "cos_tonearest (9) == -0.9111302618846769883682947111811653112463":
++ildouble: 1
++ldouble: 1
++
++# cos_towardzero
++Test "cos_towardzero (1) == 0.5403023058681397174009366074429766037323":
++double: 1
++idouble: 1
++ildouble: 1
++ldouble: 1
++Test "cos_towardzero (10) == -0.8390715290764524522588639478240648345199":
+ ildouble: 1
+ ldouble: 1
+-Test "cos (pi/2) == 0":
++Test "cos_towardzero (2) == -0.4161468365471423869975682295007621897660":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+ ildouble: 1
+ ldouble: 1
++Test "cos_towardzero (3) == -0.9899924966004454572715727947312613023937":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "cos_towardzero (4) == -0.6536436208636119146391681830977503814241":
++double: 1
++idouble: 1
++Test "cos_towardzero (5) == 0.2836621854632262644666391715135573083344":
++float: 1
++ifloat: 1
++Test "cos_towardzero (7) == 0.7539022543433046381411975217191820122183":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "cos_towardzero (8) == -0.1455000338086135258688413818311946826093":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
+-# cosh
+-Test "cosh (0.75) == 1.29468328467684468784170818539018176":
++# cos_upward
++Test "cos_upward (1) == 0.5403023058681397174009366074429766037323":
++float: 1
++ifloat: 1
++Test "cos_upward (10) == -0.8390715290764524522588639478240648345199":
++ildouble: 1
++ldouble: 1
++Test "cos_upward (2) == -0.4161468365471423869975682295007621897660":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "cos_upward (3) == -0.9899924966004454572715727947312613023937":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "cos_upward (4) == -0.6536436208636119146391681830977503814241":
++double: 1
++idouble: 1
++Test "cos_upward (5) == 0.2836621854632262644666391715135573083344":
++double: 1
++idouble: 1
++ildouble: 1
++ldouble: 1
++Test "cos_upward (6) == 0.9601702866503660205456522979229244054519":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
+ ildouble: 1
++ldouble: 1
++Test "cos_upward (7) == 0.7539022543433046381411975217191820122183":
++double: 1
++idouble: 1
++Test "cos_upward (8) == -0.1455000338086135258688413818311946826093":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++# cosh_downward
++Test "cosh_downward (22) == 1792456423.065795780980053377632656584997":
++double: 1
++float: 1
++ldouble: 2
++Test "cosh_downward (23) == 4872401723.124451300068625740569997090344":
++double: 1
++float: 1
++ldouble: 1
++Test "cosh_downward (24) == 13244561064.92173614708845674912733665919":
++float: 1
++ldouble: 1
++
++# cosh_tonearest
++Test "cosh_tonearest (22) == 1792456423.065795780980053377632656584997":
++ldouble: 1
++
++# cosh_towardzero
++Test "cosh_towardzero (22) == 1792456423.065795780980053377632656584997":
++double: 1
++float: 1
++ldouble: 2
++Test "cosh_towardzero (23) == 4872401723.124451300068625740569997090344":
++double: 1
++float: 1
++ldouble: 1
++Test "cosh_towardzero (24) == 13244561064.92173614708845674912733665919":
++float: 1
++ldouble: 1
++
++# cosh_upward
++Test "cosh_upward (23) == 4872401723.124451300068625740569997090344":
++ldouble: 1
++Test "cosh_upward (24) == 13244561064.92173614708845674912733665919":
++double: 1
+ # cpow
+ Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i":
+@@ -353,12 +475,8 @@ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-ildouble: 2
+-ldouble: 2
+ Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
+-double: 1
+ float: 1
+-idouble: 1
+ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+@@ -370,40 +488,36 @@ ifloat: 1
+ Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
+ double: 1
+ idouble: 1
+-ildouble: 439
+-ldouble: 439
++ildouble: 1
++ldouble: 1
+ Test "Imaginary part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
+ float: 1
+ ifloat: 1
+-ildouble: 2
+-ldouble: 2
++ildouble: 1
++ldouble: 1
+ Test "Real part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
+ ildouble: 1
+ ldouble: 1
+ Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
+-double: 1
+ float: 1
+-idouble: 1
+ ifloat: 1
+ ildouble: 3
+ ldouble: 3
+ # ctanh
+ Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
+-ildouble: 5
+-ldouble: 5
++ildouble: 3
++ldouble: 3
+ Test "Imaginary part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
+ float: 1
+ ifloat: 1
+-ildouble: 25
+-ldouble: 25
++ildouble: 1
++ldouble: 1
+ Test "Imaginary part of: ctanh (0 + pi/4 i) == 0.0 + 1.0 i":
+ float: 1
+ ifloat: 1
+ Test "Real part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i":
+-double: 1
+ float: 1
+-idouble: 1
+ ifloat: 1
+ Test "Imaginary part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i":
+ double: 1
+@@ -419,9 +533,6 @@ double: 1
+ idouble: 1
+ # erfc
+-Test "erfc (0.75) == 0.288844366346484868401062165408589223":
+-float: 1
+-ifloat: 1
+ Test "erfc (1.25) == 0.0770998717435417698634765188027188596":
+ ildouble: 1
+ ldouble: 1
+@@ -434,14 +545,6 @@ idouble: 1
+ ildouble: 1
+ ldouble: 1
+-# exp
+-Test "exp (0.75) == 2.11700001661267466854536981983709561":
+-ildouble: 1
+-Test "exp (1000.0) == 0.197007111401704699388887935224332313e435":
+-ildouble: 754
+-Test "exp (50.0) == 5184705528587072464087.45332293348538":
+-ildouble: 16
+-
+ # exp10
+ Test "exp10 (-1) == 0.1":
+ ildouble: 1
+@@ -453,6 +556,51 @@ Test "exp10 (3) == 1000":
+ ildouble: 8
+ ldouble: 8
++# exp_downward
++Test "exp_downward (1) == e":
++ildouble: 1
++ldouble: 1
++Test "exp_downward (2) == e^2":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++ildouble: 2
++ldouble: 2
++Test "exp_downward (3) == e^3":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++# exp_towardzero
++Test "exp_towardzero (1) == e":
++ildouble: 1
++ldouble: 1
++Test "exp_towardzero (2) == e^2":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++ildouble: 2
++ldouble: 2
++Test "exp_towardzero (3) == e^3":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++# exp_upward
++Test "exp_upward (1) == e":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
+ # expm1
+ Test "expm1 (1) == M_El - 1.0":
+ ildouble: 1
+@@ -485,26 +633,24 @@ float: 1
+ # j0
+ Test "j0 (-4.0) == -3.9714980986384737228659076845169804197562E-1":
+ double: 1
+-float: 2
++float: 1
+ idouble: 1
+-ifloat: 2
++ifloat: 1
+ ildouble: 1
+ ldouble: 1
+ Test "j0 (10.0) == -0.245935764451348335197760862485328754":
+-double: 3
++double: 1
+ float: 1
+-idouble: 3
++idouble: 1
+ ifloat: 1
+ Test "j0 (2.0) == 0.223890779141235668051827454649948626":
+-double: 1
+ float: 1
+-idouble: 1
+ ifloat: 1
+ Test "j0 (4.0) == -3.9714980986384737228659076845169804197562E-1":
+ double: 1
+-float: 2
++float: 1
+ idouble: 1
+-ifloat: 2
++ifloat: 1
+ ildouble: 1
+ ldouble: 1
+ Test "j0 (8.0) == 0.171650807137553906090869407851972001":
+@@ -512,13 +658,8 @@ float: 1
+ ifloat: 1
+ # j1
+-Test "j1 (0.75) == 0.349243602174862192523281016426251335":
+-double: 1
+-idouble: 1
+ Test "j1 (10.0) == 0.0434727461688614366697487680258592883":
+-double: 1
+ float: 1
+-idouble: 1
+ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+@@ -526,9 +667,7 @@ Test "j1 (2.0) == 0.57672480775687338720
+ double: 1
+ idouble: 1
+ Test "j1 (8.0) == 0.234636346853914624381276651590454612":
+-double: 1
+ float: 1
+-idouble: 1
+ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+@@ -536,38 +675,31 @@ ldouble: 1
+ # jn
+ Test "jn (0, -4.0) == -3.9714980986384737228659076845169804197562E-1":
+ double: 1
+-float: 2
++float: 1
+ idouble: 1
+-ifloat: 2
++ifloat: 1
+ ildouble: 1
+ ldouble: 1
+ Test "jn (0, 10.0) == -0.245935764451348335197760862485328754":
+-double: 3
++double: 1
+ float: 1
+-idouble: 3
++idouble: 1
+ ifloat: 1
+ Test "jn (0, 2.0) == 0.223890779141235668051827454649948626":
+-double: 1
+ float: 1
+-idouble: 1
+ ifloat: 1
+ Test "jn (0, 4.0) == -3.9714980986384737228659076845169804197562E-1":
+ double: 1
+-float: 2
++float: 1
+ idouble: 1
+-ifloat: 2
++ifloat: 1
+ ildouble: 1
+ ldouble: 1
+ Test "jn (0, 8.0) == 0.171650807137553906090869407851972001":
+ float: 1
+ ifloat: 1
+-Test "jn (1, 0.75) == 0.349243602174862192523281016426251335":
+-double: 1
+-idouble: 1
+ Test "jn (1, 10.0) == 0.0434727461688614366697487680258592883":
+-double: 1
+ float: 1
+-idouble: 1
+ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+@@ -575,9 +707,7 @@ Test "jn (1, 2.0) == 0.57672480775687338
+ double: 1
+ idouble: 1
+ Test "jn (1, 8.0) == 0.234636346853914624381276651590454612":
+-double: 1
+ float: 1
+-idouble: 1
+ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+@@ -589,9 +719,7 @@ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+ Test "jn (10, 0.125) == 0.250543369809369890173993791865771547e-18":
+-double: 1
+ float: 1
+-idouble: 1
+ ifloat: 1
+ Test "jn (10, 0.75) == 0.149621713117596814698712483621682835e-10":
+ float: 1
+@@ -606,38 +734,32 @@ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+ Test "jn (10, 10.0) == 0.207486106633358857697278723518753428":
+-double: 5
+-float: 2
+-idouble: 5
+-ifloat: 2
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
+ ildouble: 2
+ ldouble: 2
+ Test "jn (10, 2.0) == 0.251538628271673670963516093751820639e-6":
+-double: 2
+-idouble: 2
+ ildouble: 1
+ ldouble: 1
+ Test "jn (3, -1.0) == -0.0195633539826684059189053216217515083":
+ ildouble: 1
+ ldouble: 1
+ Test "jn (3, 0.75) == 0.848438342327410884392755236884386804e-2":
+-double: 1
+ float: 1
+-idouble: 1
+ ifloat: 1
+ Test "jn (3, 1.0) == 0.0195633539826684059189053216217515083":
+ ildouble: 1
+ ldouble: 1
+ Test "jn (3, 10.0) == 0.0583793793051868123429354784103409563":
+-double: 5
+-float: 2
+-idouble: 5
+-ifloat: 2
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
+ ildouble: 1
+ ldouble: 1
+ Test "jn (3, 2.0) == 0.128943249474402051098793332969239835":
+-double: 1
+-idouble: 1
+ ildouble: 1
+ ldouble: 1
+@@ -648,9 +770,7 @@ idouble: 1
+ ildouble: 1
+ ldouble: 1
+ Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
+-double: 1
+ float: 1
+-idouble: 1
+ ifloat: 1
+ Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
+ double: 1
+@@ -660,11 +780,6 @@ ifloat: 2
+ ildouble: 1
+ ldouble: 1
+-# log
+-Test "log (e) == 1":
+-float: 1
+-ifloat: 1
+-
+ # log10
+ Test "log10 (0.75) == -0.124938736608299953132449886193870744":
+ ildouble: 1
+@@ -675,20 +790,179 @@ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+-# sincos
+-Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res":
++# pow_downward
++Test "pow_downward (1.0625, 1.125) == 1.070582293028761362162622578677070098674":
+ double: 1
++idouble: 1
++ildouble: 1
++ldouble: 1
++Test "pow_downward (1.5, 1.03125) == 1.519127098714743184071644334163037684948":
+ float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++# pow_towardzero
++Test "pow_towardzero (1.0625, 1.125) == 1.070582293028761362162622578677070098674":
++double: 1
+ idouble: 1
++ildouble: 1
++ldouble: 1
++Test "pow_towardzero (1.5, 1.03125) == 1.519127098714743184071644334163037684948":
++float: 1
+ ifloat: 1
+-Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res":
++ildouble: 1
++ldouble: 1
++
++# pow_upward
++Test "pow_upward (1.0625, 1.125) == 1.070582293028761362162622578677070098674":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "pow_upward (1.5, 1.03125) == 1.519127098714743184071644334163037684948":
++double: 1
++idouble: 1
++ildouble: 1
++ldouble: 1
++
++# sin_downward
++Test "sin_downward (1) == 0.8414709848078965066525023216302989996226":
++ildouble: 1
++ldouble: 1
++Test "sin_downward (10) == -0.5440211108893698134047476618513772816836":
++double: 1
++idouble: 1
++ildouble: 1
++ldouble: 1
++Test "sin_downward (2) == 0.9092974268256816953960198659117448427023":
++double: 1
++idouble: 1
++Test "sin_downward (3) == 0.1411200080598672221007448028081102798469":
++ildouble: 1
++ldouble: 1
++Test "sin_downward (4) == -0.7568024953079282513726390945118290941359":
++double: 1
++idouble: 1
++ildouble: 1
++ldouble: 1
++Test "sin_downward (5) == -0.9589242746631384688931544061559939733525":
++double: 1
++idouble: 1
++ildouble: 1
++ldouble: 1
++Test "sin_downward (6) == -0.2794154981989258728115554466118947596280":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
++Test "sin_downward (7) == 0.6569865987187890903969990915936351779369":
+ ildouble: 1
+ ldouble: 1
+-Test "sincos (pi/2, &sin_res, &cos_res) puts 0 in cos_res":
++Test "sin_downward (8) == 0.9893582466233817778081235982452886721164":
++double: 1
++idouble: 1
++ildouble: 1
++ldouble: 1
++Test "sin_downward (9) == 0.4121184852417565697562725663524351793439":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++# sin_tonearest
++Test "sin_tonearest (10) == -0.5440211108893698134047476618513772816836":
++ildouble: 1
++ldouble: 1
++Test "sin_tonearest (4) == -0.7568024953079282513726390945118290941359":
++ildouble: 1
++ldouble: 1
++Test "sin_tonearest (9) == 0.4121184852417565697562725663524351793439":
++ildouble: 1
++ldouble: 1
++
++# sin_towardzero
++Test "sin_towardzero (1) == 0.8414709848078965066525023216302989996226":
++ildouble: 1
++ldouble: 1
++Test "sin_towardzero (10) == -0.5440211108893698134047476618513772816836":
++float: 1
++ifloat: 1
++Test "sin_towardzero (2) == 0.9092974268256816953960198659117448427023":
++double: 1
++idouble: 1
++Test "sin_towardzero (3) == 0.1411200080598672221007448028081102798469":
++ildouble: 1
++ldouble: 1
++Test "sin_towardzero (4) == -0.7568024953079282513726390945118290941359":
++float: 1
++ifloat: 1
++Test "sin_towardzero (5) == -0.9589242746631384688931544061559939733525":
++float: 1
++ifloat: 1
++Test "sin_towardzero (6) == -0.2794154981989258728115554466118947596280":
++ildouble: 1
++ldouble: 1
++Test "sin_towardzero (7) == 0.6569865987187890903969990915936351779369":
++ildouble: 1
++ldouble: 1
++Test "sin_towardzero (8) == 0.9893582466233817778081235982452886721164":
++double: 1
++idouble: 1
++ildouble: 1
++ldouble: 1
++Test "sin_towardzero (9) == 0.4121184852417565697562725663524351793439":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++# sin_upward
++Test "sin_upward (1) == 0.8414709848078965066525023216302989996226":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++Test "sin_upward (10) == -0.5440211108893698134047476618513772816836":
++float: 1
++ifloat: 1
++Test "sin_upward (2) == 0.9092974268256816953960198659117448427023":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "sin_upward (3) == 0.1411200080598672221007448028081102798469":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++Test "sin_upward (4) == -0.7568024953079282513726390945118290941359":
++float: 1
++ifloat: 1
++Test "sin_upward (5) == -0.9589242746631384688931544061559939733525":
++float: 1
++ifloat: 1
++Test "sin_upward (6) == -0.2794154981989258728115554466118947596280":
++ildouble: 1
++ldouble: 1
++Test "sin_upward (7) == 0.6569865987187890903969990915936351779369":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++Test "sin_upward (8) == 0.9893582466233817778081235982452886721164":
++float: 1
++ifloat: 1
++
++# sincos
++Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res":
++double: 1
++idouble: 1
++Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res":
+ double: 1
+ float: 1
+ idouble: 1
+@@ -698,66 +972,237 @@ ldouble: 1
+ # sinh
+ Test "sinh (0.75) == 0.822316731935829980703661634446913849":
+-double: 1
+ ildouble: 1
+-# tan
+-Test "tan (pi/4) == 1":
++# sinh_downward
++Test "sinh_downward (22) == 1792456423.065795780701106568345764104225":
+ double: 1
++float: 1
++idouble: 1
++ifloat: 1
++ldouble: 4
++Test "sinh_downward (23) == 4872401723.124451299966006944252978187305":
++double: 1
++float: 1
+ idouble: 1
++ifloat: 1
++Test "sinh_downward (24) == 13244561064.92173614705070540368454568168":
++float: 1
++ifloat: 1
++ldouble: 5
+-# tgamma
+-Test "tgamma (-0.5) == -2 sqrt (pi)":
+-double: 2
++# sinh_tonearest
++Test "sinh_tonearest (22) == 1792456423.065795780701106568345764104225":
++ldouble: 3
++Test "sinh_tonearest (23) == 4872401723.124451299966006944252978187305":
++ldouble: 1
++Test "sinh_tonearest (24) == 13244561064.92173614705070540368454568168":
++ldouble: 6
++
++# sinh_towardzero
++Test "sinh_towardzero (22) == 1792456423.065795780701106568345764104225":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++ldouble: 4
++Test "sinh_towardzero (23) == 4872401723.124451299966006944252978187305":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++Test "sinh_towardzero (24) == 13244561064.92173614705070540368454568168":
++float: 1
++ifloat: 1
++ldouble: 5
++
++# sinh_upward
++Test "sinh_upward (22) == 1792456423.065795780701106568345764104225":
++ldouble: 16
++Test "sinh_upward (23) == 4872401723.124451299966006944252978187305":
++ldouble: 27
++Test "sinh_upward (24) == 13244561064.92173614705070540368454568168":
++double: 1
++idouble: 1
++ldouble: 7
++
++# tan_downward
++Test "tan_downward (1) == 1.5574077246549022305069748074583601730873":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++Test "tan_downward (10) == 0.6483608274590866712591249330098086768169":
++float: 1
++ifloat: 1
++Test "tan_downward (2) == -2.1850398632615189916433061023136825434320":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++Test "tan_downward (3) == -0.1425465430742778052956354105339134932261":
++double: 1
++idouble: 1
++Test "tan_downward (4) == 1.1578212823495775831373424182673239231198":
+ float: 1
+-idouble: 2
+ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+-Test "tgamma (0.5) == sqrt (pi)":
++Test "tan_downward (5) == -3.3805150062465856369827058794473439087096":
++ildouble: 1
++ldouble: 1
++Test "tan_downward (6) == -0.2910061913847491570536995888681755428312":
++double: 1
+ float: 1
++idouble: 1
+ ifloat: 1
+-Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
++Test "tan_downward (7) == 0.8714479827243187364564508896003135663222":
++double: 1
++idouble: 1
++Test "tan_downward (8) == -6.7997114552203786999252627596086333648814":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "tan_downward (9) == -0.4523156594418098405903708757987855343087":
++float: 1
++ifloat: 1
++
++# tan_tonearest
++Test "tan_tonearest (6) == -0.2910061913847491570536995888681755428312":
++ildouble: 1
++ldouble: 1
++Test "tan_tonearest (8) == -6.7997114552203786999252627596086333648814":
++ildouble: 1
++ldouble: 1
++Test "tan_tonearest (9) == -0.4523156594418098405903708757987855343087":
++ildouble: 1
++ldouble: 1
++
++# tan_towardzero
++Test "tan_towardzero (1) == 1.5574077246549022305069748074583601730873":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-Test "tgamma (4) == 6":
++Test "tan_towardzero (10) == 0.6483608274590866712591249330098086768169":
++float: 1
++ifloat: 1
++Test "tan_towardzero (2) == -2.1850398632615189916433061023136825434320":
++ildouble: 1
++ldouble: 1
++Test "tan_towardzero (3) == -0.1425465430742778052956354105339134932261":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "tan_towardzero (4) == 1.1578212823495775831373424182673239231198":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "tan_towardzero (5) == -3.3805150062465856369827058794473439087096":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++Test "tan_towardzero (6) == -0.2910061913847491570536995888681755428312":
++ildouble: 1
++ldouble: 1
++Test "tan_towardzero (7) == 0.8714479827243187364564508896003135663222":
++double: 1
++idouble: 1
++Test "tan_towardzero (8) == -6.7997114552203786999252627596086333648814":
++double: 1
++idouble: 1
++ildouble: 2
++ldouble: 2
++Test "tan_towardzero (9) == -0.4523156594418098405903708757987855343087":
++double: 1
++idouble: 1
+ ildouble: 1
+ ldouble: 1
+-# y0
+-Test "y0 (0.125) == -1.38968062514384052915582277745018693":
++# tan_upward
++Test "tan_upward (1) == 1.5574077246549022305069748074583601730873":
+ ildouble: 1
+ ldouble: 1
+-Test "y0 (0.75) == -0.137172769385772397522814379396581855":
++Test "tan_upward (10) == 0.6483608274590866712591249330098086768169":
++double: 1
++idouble: 1
++ildouble: 1
++ldouble: 1
++Test "tan_upward (2) == -2.1850398632615189916433061023136825434320":
++ildouble: 1
++ldouble: 1
++Test "tan_upward (3) == -0.1425465430742778052956354105339134932261":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "tan_upward (4) == 1.1578212823495775831373424182673239231198":
++double: 1
++idouble: 1
++Test "tan_upward (5) == -3.3805150062465856369827058794473439087096":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-Test "y0 (1.0) == 0.0882569642156769579829267660235151628":
++Test "tan_upward (6) == -0.2910061913847491570536995888681755428312":
++ildouble: 1
++ldouble: 1
++Test "tan_upward (7) == 0.8714479827243187364564508896003135663222":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "tan_upward (8) == -6.7997114552203786999252627596086333648814":
++double: 1
++idouble: 1
++ildouble: 2
++ldouble: 2
++Test "tan_upward (9) == -0.4523156594418098405903708757987855343087":
++double: 1
++idouble: 1
++ildouble: 1
++ldouble: 1
++
++# tgamma
++Test "tgamma (-0.5) == -2 sqrt (pi)":
+ double: 2
+ float: 1
+ idouble: 2
+ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+-Test "y0 (1.5) == 0.382448923797758843955068554978089862":
++Test "tgamma (0.5) == sqrt (pi)":
++float: 1
++ifloat: 1
++Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-Test "y0 (10.0) == 0.0556711672835993914244598774101900481":
++
++# y0
++Test "y0 (0.125) == -1.38968062514384052915582277745018693":
++ildouble: 1
++ldouble: 1
++Test "y0 (0.75) == -0.137172769385772397522814379396581855":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
++Test "y0 (1.0) == 0.0882569642156769579829267660235151628":
++ildouble: 1
++ldouble: 1
++Test "y0 (10.0) == 0.0556711672835993914244598774101900481":
++float: 1
++ifloat: 1
+ ildouble: 1
+ ldouble: 1
+ Test "y0 (8.0) == 0.223521489387566220527323400498620359":
+-double: 1
+ float: 1
+-idouble: 1
+ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+@@ -766,9 +1211,6 @@ ldouble: 1
+ Test "y1 (0.125) == -5.19993611253477499595928744876579921":
+ ildouble: 1
+ ldouble: 1
+-Test "y1 (1.0) == -0.781212821300288716547150000047964821":
+-double: 1
+-idouble: 1
+ Test "y1 (10.0) == 0.249015424206953883923283474663222803":
+ double: 2
+ float: 2
+@@ -782,9 +1224,7 @@ ifloat: 2
+ ildouble: 1
+ ldouble: 1
+ Test "y1 (8.0) == -0.158060461731247494255555266187483550":
+-double: 1
+ float: 2
+-idouble: 1
+ ifloat: 2
+ ildouble: 1
+ ldouble: 1
+@@ -799,37 +1239,21 @@ float: 1
+ idouble: 1
+ ifloat: 1
+ Test "yn (0, 1.0) == 0.0882569642156769579829267660235151628":
+-double: 2
+-float: 1
+-idouble: 2
+-ifloat: 1
+ ildouble: 1
+ ldouble: 1
+-Test "yn (0, 1.5) == 0.382448923797758843955068554978089862":
+-double: 1
+-float: 1
+-idouble: 1
+-ifloat: 1
+ Test "yn (0, 10.0) == 0.0556711672835993914244598774101900481":
+-double: 1
+ float: 1
+-idouble: 1
+ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+ Test "yn (0, 8.0) == 0.223521489387566220527323400498620359":
+-double: 1
+ float: 1
+-idouble: 1
+ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+ Test "yn (1, 0.125) == -5.19993611253477499595928744876579921":
+ ildouble: 1
+ ldouble: 1
+-Test "yn (1, 1.0) == -0.781212821300288716547150000047964821":
+-double: 1
+-idouble: 1
+ Test "yn (1, 10.0) == 0.249015424206953883923283474663222803":
+ double: 2
+ float: 2
+@@ -843,17 +1267,13 @@ ifloat: 2
+ ildouble: 1
+ ldouble: 1
+ Test "yn (1, 8.0) == -0.158060461731247494255555266187483550":
+-double: 1
+ float: 2
+-idouble: 1
+ ifloat: 2
+ ildouble: 1
+ ldouble: 1
+ Test "yn (10, 0.125) == -127057845771019398.252538486899753195":
+ double: 1
+-float: 1
+ idouble: 1
+-ifloat: 1
+ ildouble: 2
+ ldouble: 2
+ Test "yn (10, 0.75) == -2133501638.90573424452445412893839236":
+@@ -862,28 +1282,22 @@ ifloat: 1
+ ildouble: 4
+ ldouble: 4
+ Test "yn (10, 1.0) == -121618014.278689189288130426667971145":
+-double: 1
+ float: 2
+-idouble: 1
+ ifloat: 2
+ Test "yn (10, 10.0) == -0.359814152183402722051986577343560609":
+ double: 1
+-float: 3
++float: 1
+ idouble: 1
+-ifloat: 3
++ifloat: 1
+ Test "yn (10, 2.0) == -129184.542208039282635913145923304214":
+-double: 2
+ float: 3
+-idouble: 2
+ ifloat: 3
+ Test "yn (3, 0.125) == -2612.69757350066712600220955744091741":
+ ildouble: 1
+ ldouble: 1
+ Test "yn (3, 0.75) == -12.9877176234475433186319774484809207":
+ double: 1
+-float: 1
+ idouble: 1
+-ifloat: 1
+ ildouble: 2
+ ldouble: 2
+ Test "yn (3, 10.0) == -0.251362657183837329779204747654240998":
+@@ -892,15 +1306,13 @@ float: 1
+ idouble: 1
+ ifloat: 1
+ Test "yn (3, 2.0) == -1.12778377684042778608158395773179238":
+-double: 1
+ float: 1
+-idouble: 1
+ ifloat: 1
+ # Maximal error of functions:
+ Function: "acos":
+-ildouble: 622
+-ldouble: 622
++ildouble: 1
++ldouble: 1
+ Function: "asin":
+ ildouble: 1
+@@ -917,18 +1329,6 @@ ildouble: 2
+ ldouble: 2
+ Function: Real part of "cacosh":
+-double: 1
+-float: 9
+-idouble: 1
+-ifloat: 9
+-ildouble: 6
+-ldouble: 6
+-
+-Function: Imaginary part of "cacosh":
+-double: 1
+-float: 4
+-idouble: 1
+-ifloat: 4
+ ildouble: 1
+ ldouble: 1
+@@ -1033,8 +1433,6 @@ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-ildouble: 1
+-ldouble: 1
+ Function: "cos":
+ double: 2
+@@ -1044,16 +1442,58 @@ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+-Function: "cosh":
++Function: "cos_downward":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++Function: "cos_tonearest":
+ ildouble: 1
++ldouble: 1
++
++Function: "cos_towardzero":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++Function: "cos_upward":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++Function: "cosh_downward":
++double: 1
++float: 1
++ldouble: 2
++
++Function: "cosh_tonearest":
++ldouble: 1
++
++Function: "cosh_towardzero":
++double: 1
++float: 1
++ldouble: 2
++
++Function: "cosh_upward":
++double: 1
++ldouble: 1
+ Function: Real part of "cpow":
+ double: 1
+ float: 4
+ idouble: 1
+ ifloat: 4
+-ildouble: 763
+-ldouble: 763
++ildouble: 6
++ldouble: 6
+ Function: Imaginary part of "cpow":
+ double: 2
+@@ -1086,38 +1526,32 @@ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-ildouble: 2
+-ldouble: 2
+ Function: Real part of "ctan":
+ double: 1
+ idouble: 1
+-ildouble: 439
+-ldouble: 439
++ildouble: 1
++ldouble: 1
+ Function: Imaginary part of "ctan":
+-double: 1
+ float: 1
+-idouble: 1
+ ifloat: 1
+ ildouble: 3
+ ldouble: 3
+ Function: Real part of "ctanh":
+-double: 1
+ float: 1
+-idouble: 1
+ ifloat: 1
+-ildouble: 5
+-ldouble: 5
++ildouble: 3
++ldouble: 3
+ Function: Imaginary part of "ctanh":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-ildouble: 25
+-ldouble: 25
++ildouble: 1
++ldouble: 1
+ Function: "erf":
+ double: 1
+@@ -1125,19 +1559,36 @@ idouble: 1
+ Function: "erfc":
+ double: 1
+-float: 1
+ idouble: 1
+-ifloat: 1
+ ildouble: 1
+ ldouble: 1
+-Function: "exp":
+-ildouble: 754
+-
+ Function: "exp10":
+ ildouble: 8
+ ldouble: 8
++Function: "exp_downward":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++ildouble: 2
++ldouble: 2
++
++Function: "exp_towardzero":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++ildouble: 2
++ldouble: 2
++
++Function: "exp_upward":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
+ Function: "expm1":
+ ildouble: 1
+@@ -1151,10 +1602,10 @@ Function: "hypot":
+ float: 1
+ Function: "j0":
+-double: 3
+-float: 2
+-idouble: 3
+-ifloat: 2
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
+ ildouble: 1
+ ldouble: 1
+@@ -1167,10 +1618,10 @@ ildouble: 1
+ ldouble: 1
+ Function: "jn":
+-double: 5
+-float: 2
+-idouble: 5
+-ifloat: 2
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
+ ildouble: 2
+ ldouble: 2
+@@ -1192,6 +1643,58 @@ ifloat: 1
+ ildouble: 1
+ ldouble: 1
++Function: "pow_downward":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++Function: "pow_towardzero":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++Function: "pow_upward":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++Function: "sin_downward":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++Function: "sin_tonearest":
++ildouble: 1
++ldouble: 1
++
++Function: "sin_towardzero":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++Function: "sin_upward":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
+ Function: "sincos":
+ double: 1
+ float: 1
+@@ -1201,13 +1704,62 @@ ildouble: 1
+ ldouble: 1
+ Function: "sinh":
+-double: 1
+ ildouble: 1
++Function: "sinh_downward":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++ldouble: 5
++
++Function: "sinh_tonearest":
++ldouble: 6
++
++Function: "sinh_towardzero":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++ldouble: 5
++
++Function: "sinh_upward":
++double: 1
++idouble: 1
++ldouble: 27
++
+ Function: "tan":
+ double: 1
+ idouble: 1
++Function: "tan_downward":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++Function: "tan_tonearest":
++ildouble: 1
++ldouble: 1
++
++Function: "tan_towardzero":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++ildouble: 2
++ldouble: 2
++
++Function: "tan_upward":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++ildouble: 2
++ldouble: 2
++
+ Function: "tgamma":
+ double: 2
+ float: 1
+@@ -1217,9 +1769,9 @@ ildouble: 1
+ ldouble: 1
+ Function: "y0":
+-double: 2
++double: 1
+ float: 1
+-idouble: 2
++idouble: 1
+ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+diff -Nrup a/sysdeps/ieee754/dbl-64/e_exp.c b/sysdeps/ieee754/dbl-64/e_exp.c
+--- a/sysdeps/ieee754/dbl-64/e_exp.c   2010-05-04 05:27:23.000000000 -0600
++++ b/sysdeps/ieee754/dbl-64/e_exp.c   2012-08-06 09:54:00.823929687 -0600
+@@ -1,7 +1,7 @@
+ /*
+  * IBM Accurate Mathematical Library
+  * written by International Business Machines Corp.
+- * Copyright (C) 2001 Free Software Foundation
++ * Copyright (C) 2001-2012 Free Software Foundation
+  *
+  * This program is free software; you can redistribute it and/or modify
+  * it under the terms of the GNU Lesser General Public License as published by
+@@ -39,6 +39,7 @@
+ #include "MathLib.h"
+ #include "uexp.tbl"
+ #include "math_private.h"
++#include <fenv.h>
+ double __slowexp(double);
+@@ -53,6 +54,10 @@ double __ieee754_exp(double x) {
+   int4 k;
+ #endif
+   int4 i,j,m,n,ex;
++  fenv_t env;
++  double retval;
++
++  libc_feholdexcept_setround (&env, FE_TONEAREST);
+   junk1.x = x;
+   m = junk1.i[HIGH_HALF];
+@@ -85,18 +90,19 @@ double __ieee754_exp(double x) {
+     rem=(bet + bet*eps)+al*eps;
+     res = al + rem;
+     cor = (al - res) + rem;
+-    if  (res == (res+cor*err_0)) return res*binexp.x;
+-    else return __slowexp(x); /*if error is over bound */
++    if  (res == (res+cor*err_0)) { retval = res*binexp.x; goto ret; }
++    else { retval = __slowexp(x); goto ret; } /*if error is over bound */
+   }
+-  if (n <= smallint) return 1.0;
++  if (n <= smallint) { retval = 1.0; goto ret; }
+   if (n >= badint) {
+-    if (n > infint) return(x+x);               /* x is NaN */
+-    if (n < infint) return ( (x>0) ? (hhuge*hhuge) : (tiny*tiny) );
++    if (n > infint) { retval = x+x; goto ret; }               /* x is NaN */
++    if (n < infint) { retval = (x>0) ? (hhuge*hhuge) : (tiny*tiny); goto ret; }
+     /* x is finite,  cause either overflow or underflow  */
+-    if (junk1.i[LOW_HALF] != 0)  return (x+x);                /*  x is NaN  */
+-    return ((x>0)?inf.x:zero );             /* |x| = inf;  return either inf or 0 */
++    if (junk1.i[LOW_HALF] != 0) { retval = x+x; goto ret; } /*  x is NaN  */
++    retval = (x>0)?inf.x:zero;             /* |x| = inf;  return either inf or 0 */
++    goto ret;
+   }
+   y = x*log2e.x + three51.x;
+@@ -121,8 +127,8 @@ double __ieee754_exp(double x) {
+     if (res < 1.0) {res+=res; cor+=cor; ex-=1;}
+     if (ex >=-1022) {
+       binexp.i[HIGH_HALF] = (1023+ex)<<20;
+-      if  (res == (res+cor*err_0)) return res*binexp.x;
+-      else return __slowexp(x); /*if error is over bound */
++      if  (res == (res+cor*err_0)) { retval = res*binexp.x; goto ret; }
++      else { retval = __slowexp(x); goto ret; } /*if error is over bound */
+     }
+     ex = -(1022+ex);
+     binexp.i[HIGH_HALF] = (1023-ex)<<20;
+@@ -135,15 +141,19 @@ double __ieee754_exp(double x) {
+     cor = (t-res)+y;
+     if (res == (res + eps*cor))
+     { binexp.i[HIGH_HALF] = 0x00100000;
+-      return (res-1.0)*binexp.x;
++      retval = (res-1.0)*binexp.x;
++      goto ret;
+     }
+-    else return __slowexp(x); /*   if error is over bound    */
++    else { retval = __slowexp(x); goto ret; } /*   if error is over bound    */
+   }
+   else {
+     binexp.i[HIGH_HALF] =(junk1.i[LOW_HALF]+767)<<20;
+-    if  (res == (res+cor*err_0)) return res*binexp.x*t256.x;
+-    else return __slowexp(x);
++    if (res == (res+cor*err_0)) { retval = res*binexp.x*t256.x; goto ret; }
++    else { retval = __slowexp(x); goto ret; }
+   }
++ ret:
++  libc_feupdateenv (&env);
++  return retval;
+ }
+ /************************************************************************/
+diff -Nrup a/sysdeps/ieee754/dbl-64/e_exp2.c b/sysdeps/ieee754/dbl-64/e_exp2.c
+--- a/sysdeps/ieee754/dbl-64/e_exp2.c  2010-05-04 05:27:23.000000000 -0600
++++ b/sysdeps/ieee754/dbl-64/e_exp2.c  2012-08-06 09:54:00.824929683 -0600
+@@ -24,9 +24,6 @@
+    17 (1), March 1991, pp. 26-45.
+    It has been slightly modified to compute 2^x instead of e^x.
+    */
+-#ifndef _GNU_SOURCE
+-#define _GNU_SOURCE
+-#endif
+ #include <stdlib.h>
+ #include <float.h>
+ #include <ieee754.h>
+@@ -37,13 +34,8 @@
+ #include "t_exp2.h"
+-/* XXX I know the assembler generates a warning about incorrect section
+-   attributes. But without the attribute here the compiler places the
+-   constants in the .data section.  Ideally the constant is placed in
+-   .rodata.cst8 so that it can be merged, but gcc sucks, it ICEs when
+-   we try to force this section on it.  --drepper  */
+-static const volatile double TWO1023 = 8.988465674311579539e+307;
+-static const volatile double TWOM1000 = 9.3326361850321887899e-302;
++static const double TWO1023 = 8.988465674311579539e+307;
++static const double TWOM1000 = 9.3326361850321887899e-302;
+ double
+ __ieee754_exp2 (double x)
+@@ -60,11 +52,7 @@ __ieee754_exp2 (double x)
+       union ieee754_double ex2_u, scale_u;
+       fenv_t oldenv;
+-      feholdexcept (&oldenv);
+-#ifdef FE_TONEAREST
+-      /* If we don't have this, it's too bad.  */
+-      fesetround (FE_TONEAREST);
+-#endif
++      libc_feholdexcept_setround (&oldenv, FE_TONEAREST);
+       /* 1. Argument reduction.
+        Choose integers ex, -256 <= t < 256, and some real
+@@ -108,9 +96,10 @@ __ieee754_exp2 (double x)
+              * x + .055504110254308625)
+             * x + .240226506959100583)
+            * x + .69314718055994495) * ex2_u.d;
++      math_opt_barrier (x22);
+       /* 5. Return (2^x2-1) * 2^(t/512+e+ex) + 2^(t/512+e+ex).  */
+-      fesetenv (&oldenv);
++      libc_fesetenv (&oldenv);
+       result = x22 * x + ex2_u.d;
+diff -Nrup a/sysdeps/ieee754/dbl-64/e_pow.c b/sysdeps/ieee754/dbl-64/e_pow.c
+--- a/sysdeps/ieee754/dbl-64/e_pow.c   2010-05-04 05:27:23.000000000 -0600
++++ b/sysdeps/ieee754/dbl-64/e_pow.c   2012-08-06 09:54:00.824929683 -0600
+@@ -42,6 +42,7 @@
+ #include "MathLib.h"
+ #include "upow.tbl"
+ #include "math_private.h"
++#include <fenv.h>
+ double __exp1(double x, double xx, double error);
+@@ -79,6 +80,11 @@ double __ieee754_pow(double x, double y)
+        (u.i[HIGH_HALF]==0 && u.i[LOW_HALF]!=0))  &&
+                                       /*   2^-1023< x<= 2^-1023 * 0x1.0000ffffffff */
+       (v.i[HIGH_HALF]&0x7fffffff) < 0x4ff00000) {              /* if y<-1 or y>1   */
++    fenv_t env;
++    double retval;
++
++    libc_feholdexcept_setround (&env, FE_TONEAREST);
++
+     z = log1(x,&aa,&error);                                 /* x^y  =e^(y log (X)) */
+     t = y*134217729.0;
+     y1 = t - (t-y);
+@@ -92,7 +98,10 @@ double __ieee754_pow(double x, double y)
+     a2 = (a-a1)+aa;
+     error = error*ABS(y);
+     t = __exp1(a1,a2,1.9e16*error);     /* return -10 or 0 if wasn't computed exactly */
+-    return (t>0)?t:power1(x,y);
++    retval = (t>0)?t:power1(x,y);
++
++    libc_feupdateenv (&env);
++    return retval;
+   }
+   if (x == 0) {
+diff -Nrup a/sysdeps/ieee754/dbl-64/s_sin.c b/sysdeps/ieee754/dbl-64/s_sin.c
+--- a/sysdeps/ieee754/dbl-64/s_sin.c   2010-05-04 05:27:23.000000000 -0600
++++ b/sysdeps/ieee754/dbl-64/s_sin.c   2012-08-06 09:54:00.827929671 -0600
+@@ -55,6 +55,7 @@
+ #include "MathLib.h"
+ #include "sincos.tbl"
+ #include "math_private.h"
++#include <fenv.h>
+ static const double
+           sn3 = -1.66666666666664880952546298448555E-01,
+@@ -97,12 +98,16 @@ double __sin(double x){
+ #if 0
+       int4 nn;
+ #endif
++      fenv_t env;
++      double retval = 0;
++
++      libc_feholdexcept_setround (&env, FE_TONEAREST);
+       u.x = x;
+       m = u.i[HIGH_HALF];
+       k = 0x7fffffff&m;              /* no sign           */
+       if (k < 0x3e500000)            /* if x->0 =>sin(x)=x */
+-       return x;
++        { retval = x; goto ret; }
+  /*---------------------------- 2^-26 < |x|< 0.25 ----------------------*/
+       else  if (k < 0x3fd00000){
+         xx = x*x;
+@@ -110,7 +115,8 @@ double __sin(double x){
+         t = ((((s5.x*xx + s4.x)*xx + s3.x)*xx + s2.x)*xx + s1.x)*(xx*x);
+         res = x+t;
+         cor = (x-res)+t;
+-        return (res == res + 1.07*cor)? res : slow(x);
++        retval = (res == res + 1.07*cor)? res : slow(x);
++        goto ret;
+       }    /*  else  if (k < 0x3fd00000)    */
+ /*---------------------------- 0.25<|x|< 0.855469---------------------- */
+       else if (k < 0x3feb6000)  {
+@@ -127,7 +133,8 @@ double __sin(double x){
+         cor=(ssn+s*ccs-sn*c)+cs*s;
+         res=sn+cor;
+         cor=(sn-res)+cor;
+-        return (res==res+1.025*cor)? res : slow1(x);
++        retval = (res==res+1.096*cor)? res : slow1(x);
++        goto ret;
+       }    /*   else  if (k < 0x3feb6000)    */
+ /*----------------------- 0.855469  <|x|<2.426265  ----------------------*/
+@@ -153,7 +160,8 @@ double __sin(double x){
+         cor=(ccs-s*ssn-cs*c)-sn*s;
+         res=cs+cor;
+         cor=(cs-res)+cor;
+-        return (res==res+1.020*cor)? ((m>0)?res:-res) : slow2(x);
++        retval = (res==res+1.020*cor)? ((m>0)?res:-res) : slow2(x);
++        goto ret;
+       } /*   else  if (k < 0x400368fd)    */
+ /*-------------------------- 2.426265<|x|< 105414350 ----------------------*/
+@@ -179,7 +187,8 @@ double __sin(double x){
+             res = a+t;
+             cor = (a-res)+t;
+             cor = (cor>0)? 1.02*cor+eps : 1.02*cor -eps;
+-            return (res == res + cor)? res : sloww(a,da,x);
++            retval = (res == res + cor)? res : sloww(a,da,x);
++            goto ret;
+           }
+           else  {
+             if (a>0)
+@@ -200,7 +209,8 @@ double __sin(double x){
+             res=sn+cor;
+             cor=(sn-res)+cor;
+             cor = (cor>0)? 1.035*cor+eps : 1.035*cor-eps;
+-            return (res==res+cor)? ((m)?res:-res) : sloww1(a,da,x);
++            retval = (res==res+cor)? ((m)?res:-res) : sloww1(a,da,x);
++            goto ret;
+           }
+           break;
+@@ -222,7 +232,8 @@ double __sin(double x){
+           res=cs+cor;
+           cor=(cs-res)+cor;
+           cor = (cor>0)? 1.025*cor+eps : 1.025*cor-eps;
+-          return (res==res+cor)? ((n&2)?-res:res) : sloww2(a,da,x,n);
++          retval = (res==res+cor)? ((n&2)?-res:res) : sloww2(a,da,x,n);
++          goto ret;
+           break;
+@@ -258,7 +269,8 @@ double __sin(double x){
+             res = a+t;
+             cor = (a-res)+t;
+             cor = (cor>0)? 1.02*cor+eps : 1.02*cor -eps;
+-            return (res == res + cor)? res : bsloww(a,da,x,n);
++            retval = (res == res + cor)? res : bsloww(a,da,x,n);
++            goto ret;
+           }
+           else  {
+             if (a>0) {m=1;t=a;db=da;}
+@@ -277,7 +289,8 @@ double __sin(double x){
+             res=sn+cor;
+             cor=(sn-res)+cor;
+             cor = (cor>0)? 1.035*cor+eps : 1.035*cor-eps;
+-            return (res==res+cor)? ((m)?res:-res) : bsloww1(a,da,x,n);
++            retval = (res==res+cor)? ((m)?res:-res) : bsloww1(a,da,x,n);
++            goto ret;
+                  }
+           break;
+@@ -299,7 +312,8 @@ double __sin(double x){
+           res=cs+cor;
+           cor=(cs-res)+cor;
+           cor = (cor>0)? 1.025*cor+eps : 1.025*cor-eps;
+-          return (res==res+cor)? ((n&2)?-res:res) : bsloww2(a,da,x,n);
++          retval = (res==res+cor)? ((n&2)?-res:res) : bsloww2(a,da,x,n);
++          goto ret;
+           break;
+@@ -313,17 +327,20 @@ double __sin(double x){
+         n = __branred(x,&a,&da);
+         switch (n) {
+         case 0:
+-          if (a*a < 0.01588) return bsloww(a,da,x,n);
+-          else return bsloww1(a,da,x,n);
++          if (a*a < 0.01588) retval = bsloww(a,da,x,n);
++          else retval = bsloww1(a,da,x,n);
++          goto ret;
+           break;
+         case 2:
+-          if (a*a < 0.01588) return bsloww(-a,-da,x,n);
+-          else return bsloww1(-a,-da,x,n);
++          if (a*a < 0.01588) retval = bsloww(-a,-da,x,n);
++          else retval = bsloww1(-a,-da,x,n);
++          goto ret;
+           break;
+         case 1:
+         case 3:
+-          return  bsloww2(a,da,x,n);
++          retval = bsloww2(a,da,x,n);
++          goto ret;
+           break;
+         }
+@@ -333,9 +350,13 @@ double __sin(double x){
+       else {
+         if (k == 0x7ff00000 && u.i[LOW_HALF] == 0)
+           __set_errno (EDOM);
+-        return x / x;
++        retval = x / x;
++        goto ret;
+       }
+-      return 0;         /* unreachable */
++
++ ret:
++      libc_feupdateenv (&env);
++      return retval;
+ }
+@@ -350,11 +371,16 @@ double __cos(double x)
+   mynumber u,v;
+   int4 k,m,n;
++  fenv_t env;
++  double retval = 0;
++
++  libc_feholdexcept_setround (&env, FE_TONEAREST);
++
+   u.x = x;
+   m = u.i[HIGH_HALF];
+   k = 0x7fffffff&m;
+-  if (k < 0x3e400000 ) return 1.0; /* |x|<2^-27 => cos(x)=1 */
++  if (k < 0x3e400000 ) { retval = 1.0; goto ret; } /* |x|<2^-27 => cos(x)=1 */
+   else if (k < 0x3feb6000 ) {/* 2^-27 < |x| < 0.855469 */
+     y=ABS(x);
+@@ -371,7 +397,8 @@ double __cos(double x)
+     cor=(ccs-s*ssn-cs*c)-sn*s;
+     res=cs+cor;
+     cor=(cs-res)+cor;
+-    return (res==res+1.020*cor)? res : cslow2(x);
++    retval = (res==res+1.020*cor)? res : cslow2(x);
++    goto ret;
+ }    /*   else  if (k < 0x3feb6000)    */
+@@ -385,7 +412,8 @@ double __cos(double x)
+       res = a+t;
+       cor = (a-res)+t;
+       cor = (cor>0)? 1.02*cor+1.0e-31 : 1.02*cor -1.0e-31;
+-      return (res == res + cor)? res : csloww(a,da,x);
++      retval = (res == res + cor)? res : csloww(a,da,x);
++      goto ret;
+     }
+     else  {
+       if (a>0) {m=1;t=a;db=da;}
+@@ -404,7 +432,8 @@ double __cos(double x)
+       res=sn+cor;
+       cor=(sn-res)+cor;
+       cor = (cor>0)? 1.035*cor+1.0e-31 : 1.035*cor-1.0e-31;
+-      return (res==res+cor)? ((m)?res:-res) : csloww1(a,da,x);
++      retval = (res==res+cor)? ((m)?res:-res) : csloww1(a,da,x);
++      goto ret;
+ }
+ }    /*   else  if (k < 0x400368fd)    */
+@@ -431,7 +460,8 @@ double __cos(double x)
+       res = a+t;
+       cor = (a-res)+t;
+       cor = (cor>0)? 1.02*cor+eps : 1.02*cor -eps;
+-      return (res == res + cor)? res : csloww(a,da,x);
++      retval = (res == res + cor)? res : csloww(a,da,x);
++      goto ret;
+       }
+       else  {
+       if (a>0) {m=1;t=a;db=da;}
+@@ -450,7 +480,8 @@ double __cos(double x)
+       res=sn+cor;
+       cor=(sn-res)+cor;
+       cor = (cor>0)? 1.035*cor+eps : 1.035*cor-eps;
+-      return (res==res+cor)? ((m)?res:-res) : csloww1(a,da,x);
++      retval = (res==res+cor)? ((m)?res:-res) : csloww1(a,da,x);
++      goto ret;
+       }
+       break;
+@@ -471,7 +502,8 @@ double __cos(double x)
+       res=cs+cor;
+       cor=(cs-res)+cor;
+       cor = (cor>0)? 1.025*cor+eps : 1.025*cor-eps;
+-      return (res==res+cor)? ((n)?-res:res) : csloww2(a,da,x,n);
++      retval = (res==res+cor)? ((n)?-res:res) : csloww2(a,da,x,n);
++      goto ret;
+            break;
+@@ -506,7 +538,8 @@ double __cos(double x)
+       res = a+t;
+       cor = (a-res)+t;
+       cor = (cor>0)? 1.02*cor+eps : 1.02*cor -eps;
+-      return (res == res + cor)? res : bsloww(a,da,x,n);
++      retval = (res == res + cor)? res : bsloww(a,da,x,n);
++      goto ret;
+       }
+       else  {
+       if (a>0) {m=1;t=a;db=da;}
+@@ -525,7 +558,8 @@ double __cos(double x)
+       res=sn+cor;
+       cor=(sn-res)+cor;
+       cor = (cor>0)? 1.035*cor+eps : 1.035*cor-eps;
+-      return (res==res+cor)? ((m)?res:-res) : bsloww1(a,da,x,n);
++      retval = (res==res+cor)? ((m)?res:-res) : bsloww1(a,da,x,n);
++      goto ret;
+       }
+       break;
+@@ -546,7 +580,8 @@ double __cos(double x)
+       res=cs+cor;
+       cor=(cs-res)+cor;
+       cor = (cor>0)? 1.025*cor+eps : 1.025*cor-eps;
+-      return (res==res+cor)? ((n)?-res:res) : bsloww2(a,da,x,n);
++      retval = (res==res+cor)? ((n)?-res:res) : bsloww2(a,da,x,n);
++      goto ret;
+       break;
+     }
+@@ -558,17 +593,20 @@ double __cos(double x)
+     n = __branred(x,&a,&da);
+     switch (n) {
+     case 1:
+-      if (a*a < 0.01588) return bsloww(-a,-da,x,n);
+-      else return bsloww1(-a,-da,x,n);
++      if (a*a < 0.01588) retval = bsloww(-a,-da,x,n);
++      else retval = bsloww1(-a,-da,x,n);
++      goto ret;
+       break;
+               case 3:
+-                if (a*a < 0.01588) return bsloww(a,da,x,n);
+-                else return bsloww1(a,da,x,n);
++                if (a*a < 0.01588) retval = bsloww(a,da,x,n);
++                else retval = bsloww1(a,da,x,n);
++                goto ret;
+                 break;
+     case 0:
+     case 2:
+-      return  bsloww2(a,da,x,n);
++      retval = bsloww2(a,da,x,n);
++      goto ret;
+       break;
+     }
+@@ -580,10 +618,13 @@ double __cos(double x)
+   else {
+     if (k == 0x7ff00000 && u.i[LOW_HALF] == 0)
+       __set_errno (EDOM);
+-    return x / x; /* |x| > 2^1024 */
++    retval = x / x; /* |x| > 2^1024 */
++    goto ret;
+   }
+-  return 0;
++ ret:
++  libc_feupdateenv (&env);
++  return retval;
+ }
+ /************************************************************************/
+diff -Nrup a/sysdeps/ieee754/dbl-64/s_tan.c b/sysdeps/ieee754/dbl-64/s_tan.c
+--- a/sysdeps/ieee754/dbl-64/s_tan.c   2010-05-04 05:27:23.000000000 -0600
++++ b/sysdeps/ieee754/dbl-64/s_tan.c   2012-08-06 09:54:00.828929666 -0600
+@@ -40,6 +40,8 @@
+ #include "mpa.h"
+ #include "MathLib.h"
+ #include "math.h"
++#include "math_private.h"
++#include <fenv.h>
+ static double tanMp(double);
+ void __mptan(double, mp_no *, int);
+@@ -58,21 +60,27 @@ double tan(double x) {
+   mp_no mpy;
+ #endif
++  fenv_t env;
++  double retval;
++
+   int __branred(double, double *, double *);
+   int __mpranred(double, mp_no *, int);
++  libc_feholdexcept_setround (&env, FE_TONEAREST);
++
+   /* x=+-INF, x=NaN */
+   num.d = x;  ux = num.i[HIGH_HALF];
+   if ((ux&0x7ff00000)==0x7ff00000) {
+     if ((ux&0x7fffffff)==0x7ff00000)
+       __set_errno (EDOM);
+-    return x-x;
++    retval = x-x;
++    goto ret;
+   }
+   w=(x<ZERO) ? -x : x;
+   /* (I) The case abs(x) <= 1.259e-8 */
+-  if (w<=g1.d)  return x;
++  if (w<=g1.d) { retval = x; goto ret; }
+   /* (II) The case 1.259e-8 < abs(x) <= 0.0608 */
+   if (w<=g2.d) {
+@@ -80,7 +88,7 @@ double tan(double x) {
+     /* First stage */
+     x2 = x*x;
+     t2 = x*x2*(d3.d+x2*(d5.d+x2*(d7.d+x2*(d9.d+x2*d11.d))));
+-    if ((y=x+(t2-u1.d*t2)) == x+(t2+u1.d*t2))  return y;
++    if ((y=x+(t2-u1.d*t2)) == x+(t2+u1.d*t2)) { retval = y; goto ret; }
+     /* Second stage */
+     c1 = x2*(a15.d+x2*(a17.d+x2*(a19.d+x2*(a21.d+x2*(a23.d+x2*(a25.d+
+@@ -100,8 +108,9 @@ double tan(double x) {
+     MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8)
+     MUL2(x ,zero.d,c1,cc1,c2,cc2,t1,t2,t3,t4,t5,t6,t7,t8)
+     ADD2(x    ,zero.d,c2,cc2,c1,cc1,t1,t2)
+-    if ((y=c1+(cc1-u2.d*c1)) == c1+(cc1+u2.d*c1))  return y;
+-    return tanMp(x);
++    if ((y=c1+(cc1-u2.d*c1)) == c1+(cc1+u2.d*c1)) { retval = y; goto ret; }
++    retval = tanMp(x);
++    goto ret;
+   }
+   /* (III) The case 0.0608 < abs(x) <= 0.787 */
+@@ -112,10 +121,10 @@ double tan(double x) {
+     z = w-xfg[i][0].d;  z2 = z*z;   s = (x<ZERO) ? MONE : ONE;
+     pz = z+z*z2*(e0.d+z2*e1.d);
+     fi = xfg[i][1].d;   gi = xfg[i][2].d;   t2 = pz*(gi+fi)/(gi-pz);
+-    if ((y=fi+(t2-fi*u3.d))==fi+(t2+fi*u3.d))  return (s*y);
++    if ((y=fi+(t2-fi*u3.d))==fi+(t2+fi*u3.d)) { retval = (s*y); goto ret; }
+     t3 = (t2<ZERO) ? -t2 : t2;
+     t4 = fi*ua3.d+t3*ub3.d;
+-    if ((y=fi+(t2-t4))==fi+(t2+t4))  return (s*y);
++    if ((y=fi+(t2-t4))==fi+(t2+t4)) { retval = (s*y); goto ret; }
+     /* Second stage */
+     ffi = xfg[i][3].d;
+@@ -133,8 +142,9 @@ double tan(double x) {
+     SUB2(one.d,zero.d,c3,cc3,c1,cc1,t1,t2)
+     DIV2(c2,cc2,c1,cc1,c3,cc3,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10)
+-    if ((y=c3+(cc3-u4.d*c3))==c3+(cc3+u4.d*c3))  return (s*y);
+-    return tanMp(x);
++      if ((y=c3+(cc3-u4.d*c3))==c3+(cc3+u4.d*c3)) { retval = (s*y); goto ret; }
++    retval = tanMp(x);
++    goto ret;
+   }
+   /* (---) The case 0.787 < abs(x) <= 25 */
+@@ -152,7 +162,7 @@ double tan(double x) {
+     else         {ya= a;  yya= da;  sy= ONE;}
+     /* (IV),(V) The case 0.787 < abs(x) <= 25,    abs(y) <= 1e-7 */
+-    if (ya<=gy1.d)  return tanMp(x);
++    if (ya<=gy1.d) { retval = tanMp(x); goto ret; }
+     /* (VI) The case 0.787 < abs(x) <= 25,    1e-7 < abs(y) <= 0.0608 */
+     if (ya<=gy2.d) {
+@@ -162,10 +172,10 @@ double tan(double x) {
+         /* First stage -cot */
+         EADD(a,t2,b,db)
+         DIV2(one.d,zero.d,b,db,c,dc,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10)
+-        if ((y=c+(dc-u6.d*c))==c+(dc+u6.d*c))  return (-y); }
++      if ((y=c+(dc-u6.d*c))==c+(dc+u6.d*c)) { retval = (-y); goto ret; } }
+       else {
+         /* First stage tan */
+-        if ((y=a+(t2-u5.d*a))==a+(t2+u5.d*a))  return y; }
++      if ((y=a+(t2-u5.d*a))==a+(t2+u5.d*a)) { retval = y; goto ret; } }
+       /* Second stage */
+       /* Range reduction by algorithm ii */
+       t = (x*hpinv.d + toint.d);
+@@ -203,11 +213,12 @@ double tan(double x) {
+       if (n) {
+         /* Second stage -cot */
+         DIV2(one.d,zero.d,c1,cc1,c2,cc2,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10)
+-        if ((y=c2+(cc2-u8.d*c2)) == c2+(cc2+u8.d*c2))  return (-y); }
++      if ((y=c2+(cc2-u8.d*c2)) == c2+(cc2+u8.d*c2)) { retval = (-y); goto ret; } }
+       else {
+         /* Second stage tan */
+-        if ((y=c1+(cc1-u7.d*c1)) == c1+(cc1+u7.d*c1))  return y; }
+-      return tanMp(x);
++      if ((y=c1+(cc1-u7.d*c1)) == c1+(cc1+u7.d*c1)) { retval = y; goto ret; } }
++      retval = tanMp(x);
++      goto ret;
+     }
+     /* (VII) The case 0.787 < abs(x) <= 25,    0.0608 < abs(y) <= 0.787 */
+@@ -221,17 +232,17 @@ double tan(double x) {
+     if (n) {
+       /* -cot */
+       t2 = pz*(fi+gi)/(fi+pz);
+-      if ((y=gi-(t2-gi*u10.d))==gi-(t2+gi*u10.d))  return (-sy*y);
++      if ((y=gi-(t2-gi*u10.d))==gi-(t2+gi*u10.d)) { retval = (-sy*y); goto ret; }
+       t3 = (t2<ZERO) ? -t2 : t2;
+       t4 = gi*ua10.d+t3*ub10.d;
+-      if ((y=gi-(t2-t4))==gi-(t2+t4))  return (-sy*y); }
++      if ((y=gi-(t2-t4))==gi-(t2+t4)) { retval = (-sy*y); goto ret; } }
+     else   {
+       /* tan */
+       t2 = pz*(gi+fi)/(gi-pz);
+-      if ((y=fi+(t2-fi*u9.d))==fi+(t2+fi*u9.d))  return (sy*y);
++      if ((y=fi+(t2-fi*u9.d))==fi+(t2+fi*u9.d)) { retval = (sy*y); goto ret; }
+       t3 = (t2<ZERO) ? -t2 : t2;
+       t4 = fi*ua9.d+t3*ub9.d;
+-      if ((y=fi+(t2-t4))==fi+(t2+t4))  return (sy*y); }
++      if ((y=fi+(t2-t4))==fi+(t2+t4)) { retval = (sy*y); goto ret; } }
+     /* Second stage */
+     ffi = xfg[i][3].d;
+@@ -252,13 +263,14 @@ double tan(double x) {
+     if (n) {
+       /* -cot */
+       DIV2(c1,cc1,c2,cc2,c3,cc3,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10)
+-      if ((y=c3+(cc3-u12.d*c3))==c3+(cc3+u12.d*c3))  return (-sy*y); }
++      if ((y=c3+(cc3-u12.d*c3))==c3+(cc3+u12.d*c3)) { retval = (-sy*y); goto ret; } }
+     else {
+       /* tan */
+       DIV2(c2,cc2,c1,cc1,c3,cc3,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10)
+-      if ((y=c3+(cc3-u11.d*c3))==c3+(cc3+u11.d*c3))  return (sy*y); }
++      if ((y=c3+(cc3-u11.d*c3))==c3+(cc3+u11.d*c3)) { retval = (sy*y); goto ret; } }
+-    return tanMp(x);
++    retval = tanMp(x);
++    goto ret;
+   }
+   /* (---) The case 25 < abs(x) <= 1e8 */
+@@ -280,7 +292,7 @@ double tan(double x) {
+     else         {ya= a;  yya= da;  sy= ONE;}
+     /* (+++) The case 25 < abs(x) <= 1e8,    abs(y) <= 1e-7 */
+-    if (ya<=gy1.d)  return tanMp(x);
++    if (ya<=gy1.d) { retval = tanMp(x); goto ret; }
+     /* (VIII) The case 25 < abs(x) <= 1e8,    1e-7 < abs(y) <= 0.0608 */
+     if (ya<=gy2.d) {
+@@ -290,10 +302,10 @@ double tan(double x) {
+         /* First stage -cot */
+         EADD(a,t2,b,db)
+         DIV2(one.d,zero.d,b,db,c,dc,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10)
+-        if ((y=c+(dc-u14.d*c))==c+(dc+u14.d*c))  return (-y); }
++      if ((y=c+(dc-u14.d*c))==c+(dc+u14.d*c)) { retval = (-y); goto ret; } }
+       else {
+         /* First stage tan */
+-        if ((y=a+(t2-u13.d*a))==a+(t2+u13.d*a))  return y; }
++      if ((y=a+(t2-u13.d*a))==a+(t2+u13.d*a)) { retval = y; goto ret; } }
+       /* Second stage */
+       MUL2(a,da,a,da,x2,xx2,t1,t2,t3,t4,t5,t6,t7,t8)
+@@ -317,11 +329,12 @@ double tan(double x) {
+       if (n) {
+         /* Second stage -cot */
+         DIV2(one.d,zero.d,c1,cc1,c2,cc2,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10)
+-        if ((y=c2+(cc2-u16.d*c2)) == c2+(cc2+u16.d*c2))  return (-y); }
++      if ((y=c2+(cc2-u16.d*c2)) == c2+(cc2+u16.d*c2)) { retval = (-y); goto ret; } }
+       else {
+         /* Second stage tan */
+-        if ((y=c1+(cc1-u15.d*c1)) == c1+(cc1+u15.d*c1))  return (y); }
+-      return tanMp(x);
++      if ((y=c1+(cc1-u15.d*c1)) == c1+(cc1+u15.d*c1)) { retval = (y); goto ret; } }
++      retval = tanMp(x);
++      goto ret;
+     }
+     /* (IX) The case 25 < abs(x) <= 1e8,    0.0608 < abs(y) <= 0.787 */
+@@ -334,17 +347,17 @@ double tan(double x) {
+     if (n) {
+       /* -cot */
+       t2 = pz*(fi+gi)/(fi+pz);
+-      if ((y=gi-(t2-gi*u18.d))==gi-(t2+gi*u18.d))  return (-sy*y);
++      if ((y=gi-(t2-gi*u18.d))==gi-(t2+gi*u18.d)) { retval = (-sy*y); goto ret; }
+       t3 = (t2<ZERO) ? -t2 : t2;
+       t4 = gi*ua18.d+t3*ub18.d;
+-      if ((y=gi-(t2-t4))==gi-(t2+t4))  return (-sy*y); }
++      if ((y=gi-(t2-t4))==gi-(t2+t4)) { retval = (-sy*y); goto ret; } }
+     else   {
+       /* tan */
+       t2 = pz*(gi+fi)/(gi-pz);
+-      if ((y=fi+(t2-fi*u17.d))==fi+(t2+fi*u17.d))  return (sy*y);
++      if ((y=fi+(t2-fi*u17.d))==fi+(t2+fi*u17.d)) { retval = (sy*y); goto ret; }
+       t3 = (t2<ZERO) ? -t2 : t2;
+       t4 = fi*ua17.d+t3*ub17.d;
+-      if ((y=fi+(t2-t4))==fi+(t2+t4))  return (sy*y); }
++      if ((y=fi+(t2-t4))==fi+(t2+t4)) { retval = (sy*y); goto ret; } }
+     /* Second stage */
+     ffi = xfg[i][3].d;
+@@ -365,12 +378,13 @@ double tan(double x) {
+     if (n) {
+       /* -cot */
+       DIV2(c1,cc1,c2,cc2,c3,cc3,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10)
+-      if ((y=c3+(cc3-u20.d*c3))==c3+(cc3+u20.d*c3))  return (-sy*y); }
++      if ((y=c3+(cc3-u20.d*c3))==c3+(cc3+u20.d*c3)) { retval = (-sy*y); goto ret; } }
+     else {
+       /* tan */
+       DIV2(c2,cc2,c1,cc1,c3,cc3,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10)
+-      if ((y=c3+(cc3-u19.d*c3))==c3+(cc3+u19.d*c3))  return (sy*y); }
+-    return tanMp(x);
++      if ((y=c3+(cc3-u19.d*c3))==c3+(cc3+u19.d*c3)) { retval = (sy*y); goto ret; } }
++    retval = tanMp(x);
++    goto ret;
+   }
+   /* (---) The case 1e8 < abs(x) < 2**1024 */
+@@ -381,7 +395,7 @@ double tan(double x) {
+   else         {ya= a;  yya= da;  sy= ONE;}
+   /* (+++) The case 1e8 < abs(x) < 2**1024,    abs(y) <= 1e-7 */
+-  if (ya<=gy1.d)  return tanMp(x);
++  if (ya<=gy1.d) { retval = tanMp(x); goto ret; }
+   /* (X) The case 1e8 < abs(x) < 2**1024,    1e-7 < abs(y) <= 0.0608 */
+   if (ya<=gy2.d) {
+@@ -391,10 +405,10 @@ double tan(double x) {
+       /* First stage -cot */
+       EADD(a,t2,b,db)
+       DIV2(one.d,zero.d,b,db,c,dc,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10)
+-      if ((y=c+(dc-u22.d*c))==c+(dc+u22.d*c))  return (-y); }
++      if ((y=c+(dc-u22.d*c))==c+(dc+u22.d*c)) { retval = (-y); goto ret; } }
+     else {
+       /* First stage tan */
+-      if ((y=a+(t2-u21.d*a))==a+(t2+u21.d*a))  return y; }
++      if ((y=a+(t2-u21.d*a))==a+(t2+u21.d*a)) { retval = y; goto ret; } }
+     /* Second stage */
+     /* Reduction by algorithm iv */
+@@ -423,11 +437,12 @@ double tan(double x) {
+     if (n) {
+       /* Second stage -cot */
+       DIV2(one.d,zero.d,c1,cc1,c2,cc2,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10)
+-      if ((y=c2+(cc2-u24.d*c2)) == c2+(cc2+u24.d*c2))  return (-y); }
++      if ((y=c2+(cc2-u24.d*c2)) == c2+(cc2+u24.d*c2)) { retval = (-y); goto ret; } }
+     else {
+       /* Second stage tan */
+-      if ((y=c1+(cc1-u23.d*c1)) == c1+(cc1+u23.d*c1))  return y; }
+-    return tanMp(x);
++      if ((y=c1+(cc1-u23.d*c1)) == c1+(cc1+u23.d*c1)) { retval = y; goto ret; } }
++    retval = tanMp(x);
++    goto ret;
+   }
+   /* (XI) The case 1e8 < abs(x) < 2**1024,    0.0608 < abs(y) <= 0.787 */
+@@ -440,17 +455,17 @@ double tan(double x) {
+   if (n) {
+     /* -cot */
+     t2 = pz*(fi+gi)/(fi+pz);
+-    if ((y=gi-(t2-gi*u26.d))==gi-(t2+gi*u26.d))  return (-sy*y);
++    if ((y=gi-(t2-gi*u26.d))==gi-(t2+gi*u26.d)) { retval = (-sy*y); goto ret; }
+     t3 = (t2<ZERO) ? -t2 : t2;
+     t4 = gi*ua26.d+t3*ub26.d;
+-    if ((y=gi-(t2-t4))==gi-(t2+t4))  return (-sy*y); }
++    if ((y=gi-(t2-t4))==gi-(t2+t4)) { retval = (-sy*y); goto ret; } }
+   else   {
+     /* tan */
+     t2 = pz*(gi+fi)/(gi-pz);
+-    if ((y=fi+(t2-fi*u25.d))==fi+(t2+fi*u25.d))  return (sy*y);
++    if ((y=fi+(t2-fi*u25.d))==fi+(t2+fi*u25.d)) { retval = (sy*y); goto ret; }
+     t3 = (t2<ZERO) ? -t2 : t2;
+     t4 = fi*ua25.d+t3*ub25.d;
+-    if ((y=fi+(t2-t4))==fi+(t2+t4))  return (sy*y); }
++    if ((y=fi+(t2-t4))==fi+(t2+t4)) { retval = (sy*y); goto ret; } }
+   /* Second stage */
+   ffi = xfg[i][3].d;
+@@ -471,15 +486,19 @@ double tan(double x) {
+   if (n) {
+     /* -cot */
+     DIV2(c1,cc1,c2,cc2,c3,cc3,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10)
+-    if ((y=c3+(cc3-u28.d*c3))==c3+(cc3+u28.d*c3))  return (-sy*y); }
++    if ((y=c3+(cc3-u28.d*c3))==c3+(cc3+u28.d*c3)) { retval = (-sy*y); goto ret; } }
+   else {
+     /* tan */
+     DIV2(c2,cc2,c1,cc1,c3,cc3,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10)
+-    if ((y=c3+(cc3-u27.d*c3))==c3+(cc3+u27.d*c3))  return (sy*y); }
+-  return tanMp(x);
++    if ((y=c3+(cc3-u27.d*c3))==c3+(cc3+u27.d*c3)) { retval = (sy*y); goto ret; } }
++  retval = tanMp(x);
++  goto ret;
++
++ ret:
++  libc_feupdateenv (&env);
++  return retval;
+ }
+-
+ /* multiple precision stage                                              */
+ /* Convert x to multi precision number,compute tan(x) by mptan() routine */
+ /* and converts result back to double                                    */
+diff -Nrup a/sysdeps/ieee754/dbl-64/wordsize-64/s_nearbyint.c b/sysdeps/ieee754/dbl-64/wordsize-64/s_nearbyint.c
+--- a/sysdeps/ieee754/dbl-64/wordsize-64/s_nearbyint.c 2010-05-04 05:27:23.000000000 -0600
++++ b/sysdeps/ieee754/dbl-64/wordsize-64/s_nearbyint.c 2012-08-06 09:54:00.828929666 -0600
+@@ -24,22 +24,14 @@
+ #include "math.h"
+ #include "math_private.h"
+-#ifdef __STDC__
+ static const double
+-#else
+-static double
+-#endif
+ TWO52[2]={
+   4.50359962737049600000e+15, /* 0x43300000, 0x00000000 */
+  -4.50359962737049600000e+15, /* 0xC3300000, 0x00000000 */
+ };
+-#ifdef __STDC__
+-      double __nearbyint(double x)
+-#else
+-      double __nearbyint(x)
+-      double x;
+-#endif
++double
++__nearbyint(double x)
+ {
+       fenv_t env;
+       int64_t i0,sx;
+@@ -47,20 +39,19 @@ TWO52[2]={
+       EXTRACT_WORDS64(i0,x);
+       sx = (i0>>63)&1;
+       j0 = ((i0>>52)&0x7ff)-0x3ff;
+-      if(j0<52) {
++      if(__builtin_expect(j0<52, 1)) {
+           if(j0<0) {
+             if((i0&UINT64_C(0x7fffffffffffffff))==0) return x;
+               uint64_t i = i0 & UINT64_C(0xfffffffffffff);
+               i0 &= UINT64_C(0xfffe000000000000);
+               i0 |= (((i|-i) >> 12) & UINT64_C(0x8000000000000));
+               INSERT_WORDS64(x,i0);
+-              feholdexcept (&env);
++              libc_feholdexcept (&env);
+               double w = TWO52[sx]+x;
+               double t =  w-TWO52[sx];
+-              fesetenv (&env);
+-              EXTRACT_WORDS64(i0,t);
+-              INSERT_WORDS64(t,(i0&UINT64_C(0x7fffffffffffffff))|(sx<<63));
+-              return t;
++              math_opt_barrier(t);
++              libc_fesetenv (&env);
++              return copysign(t, x);
+           } else {
+               uint64_t i = UINT64_C(0x000fffffffffffff)>>j0;
+               if((i0&i)==0) return x; /* x is integral */
+@@ -73,10 +64,11 @@ TWO52[2]={
+           else return x;              /* x is integral */
+       }
+       INSERT_WORDS64(x,i0);
+-      feholdexcept (&env);
++      libc_feholdexcept (&env);
+       double w = TWO52[sx]+x;
+       double t = w-TWO52[sx];
+-      fesetenv (&env);
++      math_opt_barrier (t);
++      libc_fesetenv (&env);
+       return t;
+ }
+ weak_alias (__nearbyint, nearbyint)
+diff -Nrup a/sysdeps/ieee754/flt-32/e_exp2f.c b/sysdeps/ieee754/flt-32/e_exp2f.c
+--- a/sysdeps/ieee754/flt-32/e_exp2f.c 2010-05-04 05:27:23.000000000 -0600
++++ b/sysdeps/ieee754/flt-32/e_exp2f.c 2012-08-06 09:54:00.829929661 -0600
+@@ -56,11 +56,7 @@ __ieee754_exp2f (float x)
+       union ieee754_float ex2_u, scale_u;
+       fenv_t oldenv;
+-      feholdexcept (&oldenv);
+-#ifdef FE_TONEAREST
+-      /* If we don't have this, it's too bad.  */
+-      fesetround (FE_TONEAREST);
+-#endif
++      libc_feholdexcept_setroundf (&oldenv, FE_TONEAREST);
+       /* 1. Argument reduction.
+        Choose integers ex, -128 <= t < 128, and some real
+@@ -103,7 +99,7 @@ __ieee754_exp2f (float x)
+       x22 = (.24022656679f * x + .69314736128f) * ex2_u.f;
+       /* 5. Return (2^x2-1) * 2^(t/512+e+ex) + 2^(t/512+e+ex).  */
+-      fesetenv (&oldenv);
++      libc_fesetenv (&oldenv);
+       result = x22 * x + ex2_u.f;
+diff -Nrup a/sysdeps/ieee754/flt-32/e_expf.c b/sysdeps/ieee754/flt-32/e_expf.c
+--- a/sysdeps/ieee754/flt-32/e_expf.c  2010-05-04 05:27:23.000000000 -0600
++++ b/sysdeps/ieee754/flt-32/e_expf.c  2012-08-06 09:54:00.829929661 -0600
+@@ -47,9 +47,6 @@
+    to perform an 'accurate table method' expf, because of the range reduction
+    overhead (compare exp2f).
+    */
+-#ifndef _GNU_SOURCE
+-#define _GNU_SOURCE
+-#endif
+ #include <float.h>
+ #include <ieee754.h>
+ #include <math.h>
+@@ -60,8 +57,8 @@
+ extern const float __exp_deltatable[178];
+ extern const double __exp_atable[355] /* __attribute__((mode(DF))) */;
+-static const volatile float TWOM100 = 7.88860905e-31;
+-static const volatile float TWO127 = 1.7014118346e+38;
++static const float TWOM100 = 7.88860905e-31;
++static const float TWO127 = 1.7014118346e+38;
+ float
+ __ieee754_expf (float x)
+@@ -86,10 +83,7 @@ __ieee754_expf (float x)
+       union ieee754_double ex2_u;
+       fenv_t oldenv;
+-      feholdexcept (&oldenv);
+-#ifdef FE_TONEAREST
+-      fesetround (FE_TONEAREST);
+-#endif
++      libc_feholdexcept_setroundf (&oldenv, FE_TONEAREST);
+       /* Calculate n.  */
+       n = x * M_1_LN2 + THREEp22;
+@@ -119,7 +113,7 @@ __ieee754_expf (float x)
+       x22 = (0.5000000496709180453 * dx + 1.0000001192102037084) * dx + delta;
+       /* Return result.  */
+-      fesetenv (&oldenv);
++      libc_fesetenvf (&oldenv);
+       result = x22 * ex2_u.d + ex2_u.d;
+       return (float) result;
+diff -Nrup a/sysdeps/ieee754/flt-32/s_nearbyintf.c b/sysdeps/ieee754/flt-32/s_nearbyintf.c
+--- a/sysdeps/ieee754/flt-32/s_nearbyintf.c    2010-05-04 05:27:23.000000000 -0600
++++ b/sysdeps/ieee754/flt-32/s_nearbyintf.c    2012-08-06 09:54:00.891929402 -0600
+@@ -19,22 +19,14 @@
+ #include "math.h"
+ #include "math_private.h"
+-#ifdef __STDC__
+ static const float
+-#else
+-static float
+-#endif
+ TWO23[2]={
+   8.3886080000e+06, /* 0x4b000000 */
+  -8.3886080000e+06, /* 0xcb000000 */
+ };
+-#ifdef __STDC__
+-      float __nearbyintf(float x)
+-#else
+-      float __nearbyintf(x)
+-      float x;
+-#endif
++float
++__nearbyintf(float x)
+ {
+       fenv_t env;
+       int32_t i0,j0,sx;
+@@ -50,13 +42,13 @@ TWO23[2]={
+               i0 &= 0xfff00000;
+               i0 |= ((i1|-i1)>>9)&0x400000;
+               SET_FLOAT_WORD(x,i0);
+-              feholdexcept (&env);
+-              w = TWO23[sx]+x;
+-              t =  w-TWO23[sx];
+-              fesetenv (&env);
++              libc_feholdexceptf (&env);
++              w = TWO23[sx]+x;
++              t =  w-TWO23[sx];
++              libc_fesetenvf (&env);
+               GET_FLOAT_WORD(i0,t);
+               SET_FLOAT_WORD(t,(i0&0x7fffffff)|(sx<<31));
+-              return t;
++              return t;
+           } else {
+               i = (0x007fffff)>>j0;
+               if((i0&i)==0) return x; /* x is integral */
+@@ -64,14 +56,14 @@ TWO23[2]={
+               if((i0&i)!=0) i0 = (i0&(~i))|((0x100000)>>j0);
+           }
+       } else {
+-          if(j0==0x80) return x+x;    /* inf or NaN */
++          if(__builtin_expect(j0==0x80, 0)) return x+x;       /* inf or NaN */
+           else return x;              /* x is integral */
+       }
+       SET_FLOAT_WORD(x,i0);
+-      feholdexcept (&env);
++      libc_feholdexceptf (&env);
+       w = TWO23[sx]+x;
+       t = w-TWO23[sx];
+-      fesetenv (&env);
++      libc_fesetenvf (&env);
+       return t;
+ }
+ weak_alias (__nearbyintf, nearbyintf)
+diff -Nrup a/sysdeps/powerpc/fpu/libm-test-ulps b/sysdeps/powerpc/fpu/libm-test-ulps
+--- a/sysdeps/powerpc/fpu/libm-test-ulps       2010-05-04 05:27:23.000000000 -0600
++++ b/sysdeps/powerpc/fpu/libm-test-ulps       2012-08-06 10:03:24.424569052 -0600
+@@ -37,16 +37,9 @@ ildouble: 1
+ ldouble: 1
+ # cacosh
+-Test "Real part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i":
+-double: 1
+-float: 7
+-idouble: 1
+-ifloat: 7
+ Test "Imaginary part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i":
+-double: 1
+-float: 3
+-idouble: 1
+-ifloat: 3
++float: 1
++ifloat: 1
+ # casin
+ Test "Real part of: casin (-2 - 3 i) == -0.57065278432109940071028387968566963 - 1.9833870299165354323470769028940395 i":
+@@ -84,8 +77,6 @@ ifloat: 1
+ # catan
+ Test "Real part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i":
+-float: 3
+-ifloat: 3
+ ildouble: 1
+ ldouble: 1
+ Test "Imaginary part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i":
+@@ -93,23 +84,14 @@ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-Test "Real part of: catan (0.75 + 1.25 i) == 1.10714871779409050301706546017853704 + 0.549306144334054845697622618461262852 i":
+-float: 4
+-ifloat: 4
+ # catanh
+ Test "Real part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i":
+ double: 4
+ idouble: 4
+-Test "Imaginary part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i":
+-float: 4
+-ifloat: 4
+ Test "Real part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i":
+ double: 1
+ idouble: 1
+-Test "Imaginary part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i":
+-float: 6
+-ifloat: 6
+ # cbrt
+ Test "cbrt (-27.0) == -3.0":
+@@ -167,8 +149,6 @@ ldouble: 1
+ # clog
+ Test "Imaginary part of: clog (-2 - 3 i) == 1.2824746787307683680267437207826593 - 2.1587989303424641704769327722648368 i":
+-float: 3
+-ifloat: 3
+ ildouble: 1
+ ldouble: 1
+ Test "Real part of: clog (0.75 + 1.25 i) == 0.376885901188190075998919126749298416 + 1.03037682652431246378774332703115153 i":
+@@ -197,9 +177,7 @@ ildouble: 1
+ ldouble: 1
+ Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
+ double: 1
+-float: 5
+ idouble: 1
+-ifloat: 5
+ ildouble: 1
+ ldouble: 1
+ Test "Imaginary part of: clog10 (-3 + inf i) == inf + pi/2*log10(e) i":
+@@ -298,23 +276,165 @@ ldouble: 1
+ # cos
+ Test "cos (M_PI_6l * 2.0) == 0.5":
+ double: 1
+-float: 1
+ idouble: 1
+-ifloat: 1
+ Test "cos (M_PI_6l * 4.0) == -0.5":
+ double: 2
+ float: 1
+ idouble: 2
+ ifloat: 1
+-Test "cos (pi/2) == 0":
+-double: 1
++
++# cos_downward
++Test "cos_downward (1) == 0.5403023058681397174009366074429766037323":
++float: 1
++ifloat: 1
++ildouble: 4
++ldouble: 4
++Test "cos_downward (10) == -0.8390715290764524522588639478240648345199":
++ildouble: 1
++ldouble: 1
++Test "cos_downward (2) == -0.4161468365471423869975682295007621897660":
++float: 1
++ifloat: 1
++Test "cos_downward (3) == -0.9899924966004454572715727947312613023937":
++float: 1
++ifloat: 1
++Test "cos_downward (4) == -0.6536436208636119146391681830977503814241":
++float: 1
++ifloat: 1
++Test "cos_downward (5) == 0.2836621854632262644666391715135573083344":
++float: 1
++ifloat: 1
++Test "cos_downward (6) == 0.9601702866503660205456522979229244054519":
++ildouble: 1
++ldouble: 1
++Test "cos_downward (7) == 0.7539022543433046381411975217191820122183":
++float: 1
++ifloat: 1
++Test "cos_downward (8) == -0.1455000338086135258688413818311946826093":
++float: 1
++ifloat: 1
++ildouble: 2
++ldouble: 2
++Test "cos_downward (9) == -0.9111302618846769883682947111811653112463":
++ildouble: 1
++ldouble: 1
++
++# cos_tonearest
++Test "cos_tonearest (7) == 0.7539022543433046381411975217191820122183":
++float: 1
++ifloat: 1
++
++# cos_towardzero
++Test "cos_towardzero (1) == 0.5403023058681397174009366074429766037323":
++ildouble: 2
++ldouble: 2
++Test "cos_towardzero (10) == -0.8390715290764524522588639478240648345199":
++ildouble: 1
++ldouble: 1
++Test "cos_towardzero (2) == -0.4161468365471423869975682295007621897660":
++float: 1
++ifloat: 1
++Test "cos_towardzero (3) == -0.9899924966004454572715727947312613023937":
++float: 1
++ifloat: 1
++Test "cos_towardzero (4) == -0.6536436208636119146391681830977503814241":
++ildouble: 1
++ldouble: 1
++Test "cos_towardzero (5) == 0.2836621854632262644666391715135573083344":
++float: 1
++ifloat: 1
++Test "cos_towardzero (7) == 0.7539022543433046381411975217191820122183":
++float: 1
++ifloat: 1
++Test "cos_towardzero (8) == -0.1455000338086135258688413818311946826093":
+ float: 1
+-idouble: 1
+ ifloat: 1
+-Test "cos (16.0) == -0.9576594803233846418996372326511034717803"
+ ildouble: 2
+ ldouble: 2
++# cos_upward
++Test "cos_upward (1) == 0.5403023058681397174009366074429766037323":
++ildouble: 2
++ldouble: 2
++Test "cos_upward (10) == -0.8390715290764524522588639478240648345199":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "cos_upward (4) == -0.6536436208636119146391681830977503814241":
++ildouble: 1
++ldouble: 1
++Test "cos_upward (5) == 0.2836621854632262644666391715135573083344":
++ildouble: 1
++ldouble: 1
++Test "cos_upward (6) == 0.9601702866503660205456522979229244054519":
++float: 1
++ifloat: 1
++Test "cos_upward (7) == 0.7539022543433046381411975217191820122183":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "cos_upward (9) == -0.9111302618846769883682947111811653112463":
++float: 2
++ifloat: 2
++
++# cosh_downward
++Test "cosh_downward (22) == 1792456423.065795780980053377632656584997":
++float: 1
++ifloat: 1
++ildouble: 5269156250720
++ldouble: 5269156250720
++Test "cosh_downward (23) == 4872401723.124451300068625740569997090344":
++float: 1
++ifloat: 1
++ildouble: 484603564240
++ldouble: 484603564240
++Test "cosh_downward (24) == 13244561064.92173614708845674912733665919":
++float: 1
++ifloat: 1
++ildouble: 89137844202
++ldouble: 89137844202
++
++# cosh_tonearest
++Test "cosh_tonearest (22) == 1792456423.065795780980053377632656584997":
++ildouble: 5269156250719
++ldouble: 5269156250719
++Test "cosh_tonearest (23) == 4872401723.124451300068625740569997090344":
++ildouble: 484603564240
++ldouble: 484603564240
++Test "cosh_tonearest (24) == 13244561064.92173614708845674912733665919":
++ildouble: 89137844202
++ldouble: 89137844202
++
++# cosh_towardzero
++Test "cosh_towardzero (22) == 1792456423.065795780980053377632656584997":
++float: 1
++ifloat: 1
++ildouble: 5269156250720
++ldouble: 5269156250720
++Test "cosh_towardzero (23) == 4872401723.124451300068625740569997090344":
++float: 1
++ifloat: 1
++ildouble: 484603564240
++ldouble: 484603564240
++Test "cosh_towardzero (24) == 13244561064.92173614708845674912733665919":
++float: 1
++ifloat: 1
++ildouble: 89137844202
++ldouble: 89137844202
++
++# cosh_upward
++Test "cosh_upward (22) == 1792456423.065795780980053377632656584997":
++ildouble: 5269156250719
++ldouble: 5269156250719
++Test "cosh_upward (23) == 4872401723.124451300068625740569997090344":
++ildouble: 484603564240
++ldouble: 484603564240
++Test "cosh_upward (24) == 13244561064.92173614708845674912733665919":
++ildouble: 89137844200
++ldouble: 89137844200
++
+ # cpow
+ Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i":
+ float: 1
+@@ -386,12 +506,6 @@ float: 1
+ ifloat: 1
+ # ctan
+-Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
+-double: 1
+-idouble: 1
+-Test "Imaginary part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
+-ildouble: 1
+-ldouble: 1
+ Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
+ double: 1
+ idouble: 1
+@@ -463,6 +577,33 @@ Test "exp2 (10) == 1024":
+ ildouble: 2
+ ldouble: 2
++# exp_downward
++Test "exp_downward (2) == e^2":
++float: 1
++ifloat: 1
++Test "exp_downward (3) == e^3":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++# exp_towardzero
++Test "exp_towardzero (2) == e^2":
++float: 1
++ifloat: 1
++Test "exp_towardzero (3) == e^3":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++# exp_upward
++Test "exp_upward (1) == e":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
+ # expm1
+ Test "expm1 (0.75) == 1.11700001661267466854536981983709561":
+ double: 1
+@@ -505,40 +646,27 @@ ifloat: 1
+ # j0
+ Test "j0 (-4.0) == -3.9714980986384737228659076845169804197562E-1":
+ double: 1
+-float: 2
++float: 1
+ idouble: 1
+-ifloat: 2
+-ildouble: 1
+-ldouble: 1
++ifloat: 1
+ Test "j0 (10.0) == -0.245935764451348335197760862485328754":
+-double: 3
++double: 2
+ float: 1
+-idouble: 3
++idouble: 2
+ ifloat: 1
+-ildouble: 1
+-ldouble: 1
+-Test "j0 (2.0) == 0.223890779141235668051827454649948626":
+-float: 2
+-ifloat: 2
+ Test "j0 (4.0) == -3.9714980986384737228659076845169804197562E-1":
+ double: 1
+-float: 2
++float: 1
+ idouble: 1
+-ifloat: 2
+-ildouble: 1
+-ldouble: 1
++ifloat: 1
+ Test "j0 (8.0) == 0.171650807137553906090869407851972001":
+ float: 1
+ ifloat: 1
+-ildouble: 1
+-ldouble: 1
+ # j1
+ Test "j1 (10.0) == 0.0434727461688614366697487680258592883":
+ float: 2
+ ifloat: 2
+-ildouble: 1
+-ldouble: 1
+ Test "j1 (2.0) == 0.576724807756873387202448242269137087":
+ double: 1
+ idouble: 1
+@@ -551,38 +679,25 @@ ldouble: 1
+ # jn
+ Test "jn (0, -4.0) == -3.9714980986384737228659076845169804197562E-1":
+ double: 1
+-float: 2
++float: 1
+ idouble: 1
+-ifloat: 2
+-ildouble: 1
+-ldouble: 1
++ifloat: 1
+ Test "jn (0, 10.0) == -0.245935764451348335197760862485328754":
+-double: 3
++double: 2
+ float: 1
+-idouble: 3
++idouble: 2
+ ifloat: 1
+-ildouble: 1
+-ldouble: 1
+-Test "jn (0, 2.0) == 0.223890779141235668051827454649948626":
+-float: 2
+-ifloat: 2
+ Test "jn (0, 4.0) == -3.9714980986384737228659076845169804197562E-1":
+ double: 1
+-float: 2
++float: 1
+ idouble: 1
+-ifloat: 2
+-ildouble: 1
+-ldouble: 1
++ifloat: 1
+ Test "jn (0, 8.0) == 0.171650807137553906090869407851972001":
+ float: 1
+ ifloat: 1
+-ildouble: 1
+-ldouble: 1
+ Test "jn (1, 10.0) == 0.0434727461688614366697487680258592883":
+ float: 2
+ ifloat: 2
+-ildouble: 1
+-ldouble: 1
+ Test "jn (1, 2.0) == 0.576724807756873387202448242269137087":
+ double: 1
+ idouble: 1
+@@ -615,11 +730,8 @@ ifloat: 1
+ ildouble: 4
+ ldouble: 4
+ Test "jn (10, 2.0) == 0.251538628271673670963516093751820639e-6":
+-float: 4
+-ifloat: 4
+-Test "jn (3, -1.0) == -0.0195633539826684059189053216217515083":
+-ildouble: 1
+-ldouble: 1
++float: 3
++ifloat: 3
+ Test "jn (3, 0.125) == 0.406503832554912875023029337653442868e-4":
+ double: 1
+ float: 1
+@@ -628,21 +740,18 @@ ifloat: 1
+ Test "jn (3, 0.75) == 0.848438342327410884392755236884386804e-2":
+ double: 1
+ idouble: 1
+-Test "jn (3, 1.0) == 0.0195633539826684059189053216217515083":
+-ildouble: 1
+-ldouble: 1
+ Test "jn (3, 10.0) == 0.0583793793051868123429354784103409563":
+ double: 3
+-float: 2
++float: 1
+ idouble: 3
+-ifloat: 2
++ifloat: 1
+ ildouble: 2
+ ldouble: 2
+ Test "jn (3, 2.0) == 0.128943249474402051098793332969239835":
+ double: 1
+-float: 2
++float: 1
+ idouble: 1
+-ifloat: 2
++ifloat: 1
+ ildouble: 2
+ ldouble: 2
+@@ -675,115 +784,350 @@ Test "log1p (-0.25) == -0.28768207245178
+ float: 1
+ ifloat: 1
+-# log2
+-Test "log2 (e) == M_LOG2El":
++# pow_downward
++Test "pow_downward (1.0625, 1.125) == 1.070582293028761362162622578677070098674":
+ ildouble: 1
+ ldouble: 1
+-
+-# sin
+-Test "sin (16.0) == -0.2879033166650652947844562482186175296207"
+-ildouble: 2
+-ldouble: 2
+-
+-# sincos
+-Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res":
+-double: 1
+-float: 1
+-idouble: 1
+-ifloat: 1
+-Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res":
+-double: 1
++Test "pow_downward (1.5, 1.03125) == 1.519127098714743184071644334163037684948":
+ float: 1
+-idouble: 1
+ ifloat: 1
+-Test "sincos (pi/2, &sin_res, &cos_res) puts 0 in cos_res":
+-double: 1
++
++# pow_towardzero
++Test "pow_towardzero (1.0625, 1.125) == 1.070582293028761362162622578677070098674":
++ildouble: 1
++ldouble: 1
++Test "pow_towardzero (1.5, 1.03125) == 1.519127098714743184071644334163037684948":
+ float: 1
+-idouble: 1
+ ifloat: 1
+-Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res":
++
++# pow_upward
++Test "pow_upward (1.0625, 1.125) == 1.070582293028761362162622578677070098674":
+ float: 1
+ ifloat: 1
+-
+-# sinh
+-Test "sinh (0.75) == 0.822316731935829980703661634446913849":
++Test "pow_upward (1.5, 1.03125) == 1.519127098714743184071644334163037684948":
+ ildouble: 1
+ ldouble: 1
+-# tan
+-Test "tan (pi/4) == 1":
+-double: 1
+-idouble: 1
++# sin_downward
++Test "sin_downward (1) == 0.8414709848078965066525023216302989996226":
++ildouble: 4
++ldouble: 4
++Test "sin_downward (10) == -0.5440211108893698134047476618513772816836":
++float: 1
++ifloat: 1
++Test "sin_downward (2) == 0.9092974268256816953960198659117448427023":
+ ildouble: 1
+ ldouble: 1
+-
+-# tanh
+-Test "tanh (-0.75) == -0.635148952387287319214434357312496495":
++Test "sin_downward (3) == 0.1411200080598672221007448028081102798469":
++float: 1
++ifloat: 1
++ildouble: 2
++ldouble: 2
++Test "sin_downward (4) == -0.7568024953079282513726390945118290941359":
+ ildouble: 1
+ ldouble: 1
+-Test "tanh (0.75) == 0.635148952387287319214434357312496495":
++Test "sin_downward (5) == -0.9589242746631384688931544061559939733525":
++float: 1
++ifloat: 1
++Test "sin_downward (6) == -0.2794154981989258728115554466118947596280":
++float: 1
++ifloat: 1
++ildouble: 2
++ldouble: 2
++Test "sin_downward (8) == 0.9893582466233817778081235982452886721164":
+ ildouble: 1
+ ldouble: 1
+-# tgamma
+-Test "tgamma (-0.5) == -2 sqrt (pi)":
+-double: 1
++# sin_tonearest
++Test "sin_tonearest (1) == 0.8414709848078965066525023216302989996226":
+ float: 1
+-idouble: 1
+ ifloat: 1
+-Test "tgamma (0.5) == sqrt (pi)":
++
++# sin_towardzero
++Test "sin_towardzero (1) == 0.8414709848078965066525023216302989996226":
+ float: 1
+ ifloat: 1
+-Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
+-double: 1
++ildouble: 2
++ldouble: 2
++Test "sin_towardzero (10) == -0.5440211108893698134047476618513772816836":
+ float: 1
+-idouble: 1
+ ifloat: 1
+-
+-# y0
+-Test "y0 (0.125) == -1.38968062514384052915582277745018693":
++Test "sin_towardzero (2) == 0.9092974268256816953960198659117448427023":
+ ildouble: 1
+ ldouble: 1
+-Test "y0 (0.75) == -0.137172769385772397522814379396581855":
++Test "sin_towardzero (3) == 0.1411200080598672221007448028081102798469":
+ ildouble: 1
+ ldouble: 1
+-Test "y0 (1.0) == 0.0882569642156769579829267660235151628":
+-double: 2
++Test "sin_towardzero (4) == -0.7568024953079282513726390945118290941359":
++float: 1
++ifloat: 1
++Test "sin_towardzero (5) == -0.9589242746631384688931544061559939733525":
+ float: 1
+-idouble: 2
+ ifloat: 1
++Test "sin_towardzero (8) == 0.9893582466233817778081235982452886721164":
+ ildouble: 1
+ ldouble: 1
+-Test "y0 (1.5) == 0.382448923797758843955068554978089862":
+-double: 2
++Test "sin_towardzero (9) == 0.4121184852417565697562725663524351793439":
+ float: 1
+-idouble: 2
+ ifloat: 1
+-Test "y0 (10.0) == 0.0556711672835993914244598774101900481":
++ildouble: 1
++ldouble: 1
++
++# sin_upward
++Test "sin_upward (1) == 0.8414709848078965066525023216302989996226":
++float: 1
++ifloat: 1
++ildouble: 2
++ldouble: 2
++Test "sin_upward (2) == 0.9092974268256816953960198659117448427023":
++float: 2
++ifloat: 2
++Test "sin_upward (3) == 0.1411200080598672221007448028081102798469":
++ildouble: 1
++ldouble: 1
++Test "sin_upward (4) == -0.7568024953079282513726390945118290941359":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "sin_upward (6) == -0.2794154981989258728115554466118947596280":
++ildouble: 1
++ldouble: 1
++Test "sin_upward (9) == 0.4121184852417565697562725663524351793439":
++float: 1
++ifloat: 1
++
++# sincos
++Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res":
++double: 1
++idouble: 1
++Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
++Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res":
++float: 1
++ifloat: 1
++
++# sinh
++Test "sinh (0.75) == 0.822316731935829980703661634446913849":
+ ildouble: 1
+ ldouble: 1
+-Test "y0 (2.0) == 0.510375672649745119596606592727157873":
++
++# sinh_downward
++Test "sinh_downward (22) == 1792456423.065795780701106568345764104225":
++float: 1
++ifloat: 1
++ildouble: 5269156250718
++ldouble: 5269156250718
++Test "sinh_downward (23) == 4872401723.124451299966006944252978187305":
++float: 1
++ifloat: 1
++ildouble: 484603564240
++ldouble: 484603564240
++Test "sinh_downward (24) == 13244561064.92173614705070540368454568168":
++float: 1
++ifloat: 1
++ildouble: 89137844201
++ldouble: 89137844201
++
++# sinh_tonearest
++Test "sinh_tonearest (22) == 1792456423.065795780701106568345764104225":
++ildouble: 5269156250719
++ldouble: 5269156250719
++Test "sinh_tonearest (23) == 4872401723.124451299966006944252978187305":
++ildouble: 484603564241
++ldouble: 484603564241
++Test "sinh_tonearest (24) == 13244561064.92173614705070540368454568168":
++ildouble: 89137844201
++ldouble: 89137844201
++
++# sinh_towardzero
++Test "sinh_towardzero (22) == 1792456423.065795780701106568345764104225":
++float: 1
++ifloat: 1
++ildouble: 5269156250718
++ldouble: 5269156250718
++Test "sinh_towardzero (23) == 4872401723.124451299966006944252978187305":
++float: 1
++ifloat: 1
++ildouble: 484603564240
++ldouble: 484603564240
++Test "sinh_towardzero (24) == 13244561064.92173614705070540368454568168":
++float: 1
++ifloat: 1
++ildouble: 89137844201
++ldouble: 89137844201
++
++# sinh_upward
++Test "sinh_upward (22) == 1792456423.065795780701106568345764104225":
++ildouble: 5269156250719
++ldouble: 5269156250719
++Test "sinh_upward (23) == 4872401723.124451299966006944252978187305":
++ildouble: 484603564241
++ldouble: 484603564241
++Test "sinh_upward (24) == 13244561064.92173614705070540368454568168":
++ildouble: 89137844202
++ldouble: 89137844202
++
++# tan
++Test "tan (pi/4) == 1":
++ildouble: 1
++ldouble: 1
++
++# tan_downward
++Test "tan_downward (1) == 1.5574077246549022305069748074583601730873":
++float: 1
++ifloat: 1
++ildouble: 2
++ldouble: 2
++Test "tan_downward (10) == 0.6483608274590866712591249330098086768169":
++float: 1
++ifloat: 1
++ildouble: 2
++ldouble: 2
++Test "tan_downward (2) == -2.1850398632615189916433061023136825434320":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "tan_downward (6) == -0.2910061913847491570536995888681755428312":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "tan_downward (8) == -6.7997114552203786999252627596086333648814":
++float: 1
++ifloat: 1
++Test "tan_downward (9) == -0.4523156594418098405903708757987855343087":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++# tan_tonearest
++Test "tan_tonearest (10) == 0.6483608274590866712591249330098086768169":
++ildouble: 1
++ldouble: 1
++Test "tan_tonearest (4) == 1.1578212823495775831373424182673239231198":
++ildouble: 1
++ldouble: 1
++Test "tan_tonearest (7) == 0.8714479827243187364564508896003135663222":
++ildouble: 1
++ldouble: 1
++
++# tan_towardzero
++Test "tan_towardzero (10) == 0.6483608274590866712591249330098086768169":
++float: 1
++ifloat: 1
++ildouble: 2
++ldouble: 2
++Test "tan_towardzero (3) == -0.1425465430742778052956354105339134932261":
++float: 1
++ifloat: 1
++ildouble: 3
++ldouble: 3
++Test "tan_towardzero (4) == 1.1578212823495775831373424182673239231198":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "tan_towardzero (5) == -3.3805150062465856369827058794473439087096":
++float: 1
++ifloat: 1
++Test "tan_towardzero (6) == -0.2910061913847491570536995888681755428312":
++ildouble: 1
++ldouble: 1
++Test "tan_towardzero (7) == 0.8714479827243187364564508896003135663222":
++ildouble: 2
++ldouble: 2
++Test "tan_towardzero (9) == -0.4523156594418098405903708757987855343087":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++# tan_upward
++Test "tan_upward (10) == 0.6483608274590866712591249330098086768169":
++ildouble: 1
++ldouble: 1
++Test "tan_upward (3) == -0.1425465430742778052956354105339134932261":
++float: 1
++ifloat: 1
++ildouble: 3
++ldouble: 3
++Test "tan_upward (5) == -3.3805150062465856369827058794473439087096":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "tan_upward (6) == -0.2910061913847491570536995888681755428312":
++ildouble: 1
++ldouble: 1
++Test "tan_upward (7) == 0.8714479827243187364564508896003135663222":
++ildouble: 1
++ldouble: 1
++Test "tan_upward (9) == -0.4523156594418098405903708757987855343087":
++ildouble: 1
++ldouble: 1
++
++# tanh
++Test "tanh (-0.75) == -0.635148952387287319214434357312496495":
++ildouble: 1
++ldouble: 1
++Test "tanh (0.75) == 0.635148952387287319214434357312496495":
++ildouble: 1
++ldouble: 1
++
++# tgamma
++Test "tgamma (-0.5) == -2 sqrt (pi)":
+ double: 1
++float: 1
+ idouble: 1
+-Test "y0 (8.0) == 0.223521489387566220527323400498620359":
++ifloat: 1
++Test "tgamma (0.5) == sqrt (pi)":
++float: 1
++ifloat: 1
++Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
++
++# y0
++Test "y0 (0.125) == -1.38968062514384052915582277745018693":
+ ildouble: 1
+ ldouble: 1
+-
+-# y1
+-Test "y1 (0.125) == -5.19993611253477499595928744876579921":
++Test "y0 (1.0) == 0.0882569642156769579829267660235151628":
++double: 2
++float: 1
++idouble: 2
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "y0 (1.5) == 0.382448923797758843955068554978089862":
++double: 2
++float: 1
++idouble: 2
++ifloat: 1
++Test "y0 (10.0) == 0.0556711672835993914244598774101900481":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++Test "y0 (2.0) == 0.510375672649745119596606592727157873":
+ double: 1
+ idouble: 1
+-Test "y1 (1.5) == -0.412308626973911295952829820633445323":
++Test "y0 (8.0) == 0.223521489387566220527323400498620359":
++double: 1
+ float: 1
++idouble: 1
+ ifloat: 1
++ildouble: 1
++ldouble: 1
++
++# y1
+ Test "y1 (10.0) == 0.249015424206953883923283474663222803":
+ double: 3
+ float: 1
+@@ -794,30 +1138,27 @@ ldouble: 2
+ Test "y1 (2.0) == -0.107032431540937546888370772277476637":
+ double: 1
+ float: 1
+-idouble: 2
+-ifloat: 2
++idouble: 1
++ifloat: 1
+ Test "y1 (8.0) == -0.158060461731247494255555266187483550":
+ double: 1
+ float: 2
+ idouble: 1
+ ifloat: 2
+-ildouble: 2
+-ldouble: 2
++ildouble: 1
++ldouble: 1
+ # yn
+ Test "yn (0, 0.125) == -1.38968062514384052915582277745018693":
+ ildouble: 1
+ ldouble: 1
+-Test "yn (0, 0.75) == -0.137172769385772397522814379396581855":
+-ildouble: 1
+-ldouble: 1
+ Test "yn (0, 1.0) == 0.0882569642156769579829267660235151628":
+ double: 2
+ float: 1
+ idouble: 2
+ ifloat: 1
+-ildouble: 2
+-ldouble: 2
++ildouble: 1
++ldouble: 1
+ Test "yn (0, 1.5) == 0.382448923797758843955068554978089862":
+ double: 2
+ float: 1
+@@ -828,8 +1169,6 @@ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-ildouble: 2
+-ldouble: 2
+ Test "yn (0, 2.0) == 0.510375672649745119596606592727157873":
+ double: 1
+ idouble: 1
+@@ -838,14 +1177,8 @@ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-ildouble: 2
+-ldouble: 2
+-Test "yn (1, 0.125) == -5.19993611253477499595928744876579921":
+-double: 1
+-idouble: 1
+-Test "yn (1, 1.5) == -0.412308626973911295952829820633445323":
+-float: 2
+-ifloat: 2
++ildouble: 1
++ldouble: 1
+ Test "yn (1, 10.0) == 0.249015424206953883923283474663222803":
+ double: 3
+ float: 1
+@@ -863,14 +1196,8 @@ double: 1
+ float: 2
+ idouble: 1
+ ifloat: 2
+-ildouble: 2
+-ldouble: 2
+-Test "yn (3, 0.125) == -2612.69757350066712600220955744091741":
+-double: 1
+-idouble: 1
+-Test "yn (10, 0.125) == -127057845771019398.252538486899753195":
+-double: 1
+-idouble: 1
++ildouble: 1
++ldouble: 1
+ Test "yn (10, 0.75) == -2133501638.90573424452445412893839236":
+ double: 1
+ float: 2
+@@ -881,21 +1208,14 @@ float: 2
+ ifloat: 2
+ Test "yn (10, 10.0) == -0.359814152183402722051986577343560609":
+ double: 2
+-float: 2
+ idouble: 2
+-ifloat: 2
+-ildouble: 2
+-ldouble: 2
+ Test "yn (10, 2.0) == -129184.542208039282635913145923304214":
+ double: 3
+ float: 1
+ idouble: 3
+ ifloat: 1
+-ildouble: 2
+-ldouble: 2
+-Test "yn (3, 0.125) == -2612.69757350066712600220955744091741":
+-double: 1
+-idouble: 1
++ildouble: 1
++ldouble: 1
+ Test "yn (3, 0.75) == -12.9877176234475433186319774484809207":
+ float: 1
+ ifloat: 1
+@@ -904,8 +1224,8 @@ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-ildouble: 2
+-ldouble: 2
++ildouble: 1
++ldouble: 1
+ Test "yn (3, 2.0) == -1.12778377684042778608158395773179238":
+ double: 1
+ idouble: 1
+@@ -950,18 +1270,12 @@ ildouble: 1
+ ldouble: 1
+ Function: Real part of "cacosh":
+-double: 1
+-float: 7
+-idouble: 1
+-ifloat: 7
+ ildouble: 1
+ ldouble: 1
+ Function: Imaginary part of "cacosh":
+-double: 1
+-float: 3
+-idouble: 1
+-ifloat: 3
++float: 1
++ifloat: 1
+ Function: Real part of "casin":
+ double: 1
+@@ -992,8 +1306,6 @@ ildouble: 1
+ ldouble: 1
+ Function: Real part of "catan":
+-float: 4
+-ifloat: 4
+ ildouble: 1
+ ldouble: 1
+@@ -1009,10 +1321,6 @@ Function: Real part of "catanh":
+ double: 4
+ idouble: 4
+-Function: Imaginary part of "catanh":
+-float: 6
+-ifloat: 6
+-
+ Function: "cbrt":
+ double: 1
+ idouble: 1
+@@ -1066,8 +1374,6 @@ ildouble: 2
+ ldouble: 2
+ Function: Imaginary part of "clog":
+-float: 3
+-ifloat: 3
+ ildouble: 1
+ ldouble: 1
+@@ -1079,9 +1385,9 @@ ldouble: 3
+ Function: Imaginary part of "clog10":
+ double: 1
+-float: 5
++float: 1
+ idouble: 1
+-ifloat: 5
++ifloat: 1
+ ildouble: 1
+ ldouble: 1
+@@ -1093,10 +1399,54 @@ ifloat: 1
+ ildouble: 1
+ ldouble: 1
++Function: "cos_downward":
++float: 1
++ifloat: 1
++ildouble: 4
++ldouble: 4
++
++Function: "cos_tonearest":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++Function: "cos_towardzero":
++float: 1
++ifloat: 1
++ildouble: 2
++ldouble: 2
++
++Function: "cos_upward":
++float: 2
++ifloat: 2
++ildouble: 2
++ldouble: 2
++
+ Function: "cosh":
+ ildouble: 1
+ ldouble: 1
++Function: "cosh_downward":
++float: 1
++ifloat: 1
++ildouble: 5269156250720
++ldouble: 5269156250720
++
++Function: "cosh_tonearest":
++ildouble: 5269156250719
++ldouble: 5269156250719
++
++Function: "cosh_towardzero":
++float: 1
++ifloat: 1
++ildouble: 5269156250720
++ldouble: 5269156250720
++
++Function: "cosh_upward":
++ildouble: 5269156250719
++ldouble: 5269156250719
++
+ Function: Real part of "cpow":
+ double: 2
+ float: 5
+@@ -1113,10 +1463,6 @@ ifloat: 2
+ ildouble: 2
+ ldouble: 2
+-Function: Imaginary part of "cproj":
+-ildouble: 1
+-ldouble: 1
+-
+ Function: Real part of "csin":
+ ildouble: 1
+ ldouble: 1
+@@ -1146,8 +1492,6 @@ ildouble: 1
+ ldouble: 1
+ Function: Real part of "ctan":
+-double: 1
+-idouble: 1
+ ildouble: 1
+ ldouble: 1
+@@ -1201,6 +1545,28 @@ Function: "exp2":
+ ildouble: 2
+ ldouble: 2
++Function: "exp_downward":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++Function: "exp_tonearest":
++ildouble: 1
++ldouble: 1
++
++Function: "exp_towardzero":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++Function: "exp_upward":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
+ Function: "expm1":
+ double: 1
+ float: 1
+@@ -1218,10 +1584,10 @@ ildouble: 1
+ ldouble: 1
+ Function: "j0":
+-double: 3
+-float: 2
+-idouble: 3
+-ifloat: 2
++double: 2
++float: 1
++idouble: 2
++ifloat: 1
+ ildouble: 1
+ ldouble: 1
+@@ -1235,9 +1601,9 @@ ldouble: 1
+ Function: "jn":
+ double: 3
+-float: 4
++float: 3
+ idouble: 3
+-ifloat: 4
++ifloat: 3
+ ildouble: 4
+ ldouble: 4
+@@ -1264,8 +1630,6 @@ ldouble: 1
+ Function: "log1p":
+ float: 1
+ ifloat: 1
+-ildouble: 1
+-ldouble: 1
+ Function: "log2":
+ ildouble: 1
+@@ -1275,10 +1639,52 @@ Function: "pow":
+ ildouble: 1
+ ldouble: 1
++Function: "pow_downward":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++Function: "pow_towardzero":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++Function: "pow_upward":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
+ Function: "sin":
+ ildouble: 1
+ ldouble: 1
++Function: "sin_downward":
++float: 1
++ifloat: 1
++ildouble: 4
++ldouble: 4
++
++Function: "sin_tonearest":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++Function: "sin_towardzero":
++float: 1
++ifloat: 1
++ildouble: 2
++ldouble: 2
++
++Function: "sin_upward":
++float: 2
++ifloat: 2
++ildouble: 2
++ldouble: 2
++
+ Function: "sincos":
+ double: 1
+ float: 1
+@@ -1291,12 +1697,54 @@ Function: "sinh":
+ ildouble: 1
+ ldouble: 1
++Function: "sinh_downward":
++float: 1
++ifloat: 1
++ildouble: 5269156250718
++ldouble: 5269156250718
++
++Function: "sinh_tonearest":
++ildouble: 5269156250719
++ldouble: 5269156250719
++
++Function: "sinh_towardzero":
++float: 1
++ifloat: 1
++ildouble: 5269156250718
++ldouble: 5269156250718
++
++Function: "sinh_upward":
++ildouble: 5269156250719
++ldouble: 5269156250719
++
+ Function: "tan":
+ double: 1
+ idouble: 1
+ ildouble: 1
+ ldouble: 1
++Function: "tan_downward":
++float: 1
++ifloat: 1
++ildouble: 2
++ldouble: 2
++
++Function: "tan_tonearest":
++ildouble: 1
++ldouble: 1
++
++Function: "tan_towardzero":
++float: 1
++ifloat: 1
++ildouble: 3
++ldouble: 3
++
++Function: "tan_upward":
++float: 1
++ifloat: 1
++ildouble: 3
++ldouble: 3
++
+ Function: "tanh":
+ ildouble: 1
+ ldouble: 1
+diff -Nrup a/sysdeps/s390/fpu/libm-test-ulps b/sysdeps/s390/fpu/libm-test-ulps
+--- a/sysdeps/s390/fpu/libm-test-ulps  2010-05-04 05:27:23.000000000 -0600
++++ b/sysdeps/s390/fpu/libm-test-ulps  2012-08-06 09:54:38.324772546 -0600
+@@ -31,16 +31,9 @@ ildouble: 1
+ ldouble: 1
+ # cacosh
+-Test "Real part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i":
+-double: 1
+-float: 7
+-idouble: 1
+-ifloat: 7
+ Test "Imaginary part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i":
+-double: 1
+-float: 3
+-idouble: 1
+-ifloat: 3
++float: 1
++ifloat: 1
+ ildouble: 1
+ ldouble: 1
+@@ -83,17 +76,11 @@ ildouble: 1
+ ldouble: 1
+ # catan
+-Test "Real part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i":
+-float: 3
+-ifloat: 3
+ Test "Imaginary part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-Test "Real part of: catan (0.75 + 1.25 i) == 1.10714871779409050301706546017853704 + 0.549306144334054845697622618461262852 i":
+-float: 4
+-ifloat: 4
+ Test "Imaginary part of: catan (0.75 + 1.25 i) == 1.10714871779409050301706546017853704 + 0.549306144334054845697622618461262852 i":
+ ildouble: 1
+ ldouble: 1
+@@ -102,17 +89,12 @@ ldouble: 1
+ Test "Real part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i":
+ double: 4
+ idouble: 4
+-Test "Imaginary part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i":
+-float: 4
+-ifloat: 4
+ Test "Real part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i":
+ double: 1
+ idouble: 1
+ ildouble: 1
+ ldouble: 1
+ Test "Imaginary part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i":
+-float: 6
+-ifloat: 6
+ ildouble: 1
+ ldouble: 1
+@@ -185,9 +167,6 @@ ildouble: 1
+ ldouble: 1
+ # clog
+-Test "Imaginary part of: clog (-2 - 3 i) == 1.2824746787307683680267437207826593 - 2.1587989303424641704769327722648368 i":
+-float: 3
+-ifloat: 3
+ Test "Real part of: clog (0.75 + 1.25 i) == 0.376885901188190075998919126749298416 + 1.03037682652431246378774332703115153 i":
+ float: 1
+ ifloat: 1
+@@ -210,9 +189,7 @@ ildouble: 1
+ ldouble: 1
+ Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
+ double: 1
+-float: 5
+ idouble: 1
+-ifloat: 5
+ ildouble: 1
+ ldouble: 1
+ Test "Imaginary part of: clog10 (-3 + inf i) == inf + pi/2*log10(e) i":
+@@ -288,9 +265,7 @@ ifloat: 1
+ # cos
+ Test "cos (M_PI_6l * 2.0) == 0.5":
+ double: 1
+-float: 1
+ idouble: 1
+-ifloat: 1
+ ildouble: 1
+ ldouble: 1
+ Test "cos (M_PI_6l * 4.0) == -0.5":
+@@ -300,11 +275,159 @@ idouble: 2
+ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+-Test "cos (pi/2) == 0":
+-double: 1
++
++# cos_downward
++Test "cos_downward (1) == 0.5403023058681397174009366074429766037323":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "cos_downward (10) == -0.8390715290764524522588639478240648345199":
++ildouble: 1
++ldouble: 1
++Test "cos_downward (2) == -0.4161468365471423869975682295007621897660":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "cos_downward (3) == -0.9899924966004454572715727947312613023937":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "cos_downward (4) == -0.6536436208636119146391681830977503814241":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "cos_downward (5) == 0.2836621854632262644666391715135573083344":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "cos_downward (6) == 0.9601702866503660205456522979229244054519":
++ildouble: 1
++ldouble: 1
++Test "cos_downward (7) == 0.7539022543433046381411975217191820122183":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "cos_downward (8) == -0.1455000338086135258688413818311946826093":
++float: 1
++ifloat: 1
++ildouble: 2
++ldouble: 2
++
++# cos_tonearest
++Test "cos_tonearest (7) == 0.7539022543433046381411975217191820122183":
++float: 1
++ifloat: 1
++
++# cos_towardzero
++Test "cos_towardzero (1) == 0.5403023058681397174009366074429766037323":
++ildouble: 1
++ldouble: 1
++Test "cos_towardzero (10) == -0.8390715290764524522588639478240648345199":
++ildouble: 1
++ldouble: 1
++Test "cos_towardzero (2) == -0.4161468365471423869975682295007621897660":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "cos_towardzero (3) == -0.9899924966004454572715727947312613023937":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "cos_towardzero (4) == -0.6536436208636119146391681830977503814241":
++ildouble: 1
++ldouble: 1
++Test "cos_towardzero (5) == 0.2836621854632262644666391715135573083344":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "cos_towardzero (6) == 0.9601702866503660205456522979229244054519":
++ildouble: 1
++ldouble: 1
++Test "cos_towardzero (7) == 0.7539022543433046381411975217191820122183":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "cos_towardzero (8) == -0.1455000338086135258688413818311946826093":
++float: 1
++ifloat: 1
++ildouble: 2
++ldouble: 2
++
++# cos_upward
++Test "cos_upward (10) == -0.8390715290764524522588639478240648345199":
++float: 1
++ifloat: 1
++Test "cos_upward (6) == 0.9601702866503660205456522979229244054519":
++float: 1
++ifloat: 1
++Test "cos_upward (7) == 0.7539022543433046381411975217191820122183":
++float: 1
++ifloat: 1
++Test "cos_upward (9) == -0.9111302618846769883682947111811653112463":
++float: 2
++ifloat: 2
++ildouble: 1
++ldouble: 1
++
++# cosh_downward
++Test "cosh_downward (22) == 1792456423.065795780980053377632656584997":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "cosh_downward (23) == 4872401723.124451300068625740569997090344":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "cosh_downward (24) == 13244561064.92173614708845674912733665919":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++# cosh_tonearest
++Test "cosh_tonearest (22) == 1792456423.065795780980053377632656584997":
++ildouble: 1
++ldouble: 1
++
++# cosh_towardzero
++Test "cosh_towardzero (22) == 1792456423.065795780980053377632656584997":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "cosh_towardzero (23) == 4872401723.124451300068625740569997090344":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "cosh_towardzero (24) == 13244561064.92173614708845674912733665919":
+ float: 1
+-idouble: 1
+ ifloat: 1
++ildouble: 1
++ldouble: 1
++
++# cosh_upward
++Test "cosh_upward (22) == 1792456423.065795780980053377632656584997":
++ildouble: 1
++ldouble: 1
++Test "cosh_upward (23) == 4872401723.124451300068625740569997090344":
++ildouble: 1
++ldouble: 1
++Test "cosh_upward (24) == 13244561064.92173614708845674912733665919":
++ildouble: 1
++ldouble: 1
+ # cpow
+ Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i":
+@@ -393,8 +516,6 @@ ldouble: 1
+ # ctan
+ Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
+-double: 1
+-idouble: 1
+ ildouble: 1
+ ldouble: 1
+ Test "Imaginary part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
+@@ -467,6 +588,37 @@ Test "exp2 (10) == 1024":
+ ildouble: 2
+ ldouble: 2
++# exp_downward
++Test "exp_downward (2) == e^2":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "exp_downward (3) == e^3":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++# exp_towardzero
++Test "exp_towardzero (2) == e^2":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "exp_towardzero (3) == e^3":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++# exp_upward
++Test "exp_upward (1) == e":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
+ # expm1
+ Test "expm1 (0.75) == 1.11700001661267466854536981983709561":
+ double: 1
+@@ -513,29 +665,27 @@ ifloat: 1
+ # j0
+ Test "j0 (-4.0) == -3.9714980986384737228659076845169804197562E-1":
+ double: 1
+-float: 2
++float: 1
+ idouble: 1
+-ifloat: 2
++ifloat: 1
+ Test "j0 (0.75) == 0.864242275166648623555731103820923211":
+ float: 1
+ ifloat: 1
+ Test "j0 (10.0) == -0.245935764451348335197760862485328754":
+-double: 3
++double: 2
+ float: 1
+-idouble: 3
++idouble: 2
+ ifloat: 1
+ ildouble: 2
+ ldouble: 2
+ Test "j0 (2.0) == 0.223890779141235668051827454649948626":
+-float: 2
+-ifloat: 2
+ ildouble: 2
+ ldouble: 2
+ Test "j0 (4.0) == -3.9714980986384737228659076845169804197562E-1":
+ double: 1
+-float: 2
++float: 1
+ idouble: 1
+-ifloat: 2
++ifloat: 1
+ Test "j0 (8.0) == 0.171650807137553906090869407851972001":
+ float: 1
+ ifloat: 1
+@@ -569,29 +719,27 @@ ldouble: 4
+ # jn
+ Test "jn (0, -4.0) == -3.9714980986384737228659076845169804197562E-1":
+ double: 1
+-float: 2
++float: 1
+ idouble: 1
+-ifloat: 2
++ifloat: 1
+ Test "jn (0, 0.75) == 0.864242275166648623555731103820923211":
+ float: 1
+ ifloat: 1
+ Test "jn (0, 10.0) == -0.245935764451348335197760862485328754":
+-double: 3
++double: 2
+ float: 1
+-idouble: 3
++idouble: 2
+ ifloat: 1
+ ildouble: 2
+ ldouble: 2
+ Test "jn (0, 2.0) == 0.223890779141235668051827454649948626":
+-float: 2
+-ifloat: 2
+ ildouble: 2
+ ldouble: 2
+ Test "jn (0, 4.0) == -3.9714980986384737228659076845169804197562E-1":
+ double: 1
+-float: 2
++float: 1
+ idouble: 1
+-ifloat: 2
++ifloat: 1
+ Test "jn (0, 8.0) == 0.171650807137553906090869407851972001":
+ float: 1
+ ifloat: 1
+@@ -640,15 +788,13 @@ Test "jn (10, 1.0) == 0.2630615123687453
+ ildouble: 1
+ ldouble: 1
+ Test "jn (10, 10.0) == 0.207486106633358857697278723518753428":
+-double: 4
+-float: 3
+-idouble: 4
+-ifloat: 3
++float: 1
++ifloat: 1
+ ildouble: 2
+ ldouble: 2
+ Test "jn (10, 2.0) == 0.251538628271673670963516093751820639e-6":
+-float: 4
+-ifloat: 4
++float: 3
++ifloat: 3
+ Test "jn (3, 0.125) == 0.406503832554912875023029337653442868e-4":
+ double: 1
+ float: 1
+@@ -661,16 +807,16 @@ idouble: 1
+ ifloat: 1
+ Test "jn (3, 10.0) == 0.0583793793051868123429354784103409563":
+ double: 3
+-float: 2
++float: 1
+ idouble: 3
+-ifloat: 2
++ifloat: 1
+ ildouble: 2
+ ldouble: 2
+ Test "jn (3, 2.0) == 0.128943249474402051098793332969239835":
+ double: 1
+-float: 2
++float: 1
+ idouble: 1
+-ifloat: 2
++ifloat: 1
+ # lgamma
+ Test "lgamma (-0.5) == log(2*sqrt(pi))":
+@@ -713,71 +859,315 @@ Test "log2 (0.75) == -.41503749927884381
+ ildouble: 1
+ ldouble: 1
+-# sincos
+-Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res":
+-double: 1
++# pow_downward
++Test "pow_downward (1.5, 1.03125) == 1.519127098714743184071644334163037684948":
+ float: 1
+-idouble: 1
+ ifloat: 1
+-ildouble: 1
+-ldouble: 1
+-Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res":
+-double: 1
++
++# pow_towardzero
++Test "pow_towardzero (1.5, 1.03125) == 1.519127098714743184071644334163037684948":
++float: 1
++ifloat: 1
++
++# pow_upward
++Test "pow_upward (1.0625, 1.125) == 1.070582293028761362162622578677070098674":
+ float: 1
+-idouble: 1
+ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+-Test "sincos (pi/2, &sin_res, &cos_res) puts 0 in cos_res":
+-double: 1
++
++# sin_downward
++Test "sin_downward (1) == 0.8414709848078965066525023216302989996226":
++ildouble: 1
++ldouble: 1
++Test "sin_downward (10) == -0.5440211108893698134047476618513772816836":
+ float: 1
+-idouble: 1
+ ifloat: 1
+-Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res":
++Test "sin_downward (2) == 0.9092974268256816953960198659117448427023":
++ildouble: 1
++ldouble: 1
++Test "sin_downward (3) == 0.1411200080598672221007448028081102798469":
+ float: 1
+ ifloat: 1
+-
+-# sqrt
+-Test "sqrt (2) == M_SQRT2l":
+ ildouble: 1
+ ldouble: 1
+-
+-# tan
+-Test "tan (pi/4) == 1":
+-double: 1
+-idouble: 1
+-
+-# tanh
+-Test "tanh (-0.75) == -0.635148952387287319214434357312496495":
++Test "sin_downward (4) == -0.7568024953079282513726390945118290941359":
+ ildouble: 1
+ ldouble: 1
+-Test "tanh (-1.0) == -0.7615941559557648881194582826047935904":
++Test "sin_downward (5) == -0.9589242746631384688931544061559939733525":
++float: 1
++ifloat: 1
+ ildouble: 1
+ ldouble: 1
+-Test "tanh (0.75) == 0.635148952387287319214434357312496495":
++Test "sin_downward (6) == -0.2794154981989258728115554466118947596280":
++float: 1
++ifloat: 1
+ ildouble: 1
+ ldouble: 1
+-Test "tanh (1.0) == 0.7615941559557648881194582826047935904":
++Test "sin_downward (8) == 0.9893582466233817778081235982452886721164":
+ ildouble: 1
+ ldouble: 1
+-# tgamma
+-Test "tgamma (-0.5) == -2 sqrt (pi)":
+-double: 1
++# sin_tonearest
++Test "sin_tonearest (1) == 0.8414709848078965066525023216302989996226":
+ float: 1
+-idouble: 1
+ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+-Test "tgamma (0.5) == sqrt (pi)":
++Test "sin_tonearest (3) == 0.1411200080598672221007448028081102798469":
++ildouble: 1
++ldouble: 1
++Test "sin_tonearest (6) == -0.2794154981989258728115554466118947596280":
++ildouble: 1
++ldouble: 1
++Test "sin_tonearest (9) == 0.4121184852417565697562725663524351793439":
++ildouble: 1
++ldouble: 1
++
++# sin_towardzero
++Test "sin_towardzero (1) == 0.8414709848078965066525023216302989996226":
+ float: 1
+ ifloat: 1
+-Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
+-double: 1
++Test "sin_towardzero (10) == -0.5440211108893698134047476618513772816836":
+ float: 1
+-idouble: 1
+ ifloat: 1
+-Test "tgamma (4) == 6":
++Test "sin_towardzero (2) == 0.9092974268256816953960198659117448427023":
++ildouble: 1
++ldouble: 1
++Test "sin_towardzero (3) == 0.1411200080598672221007448028081102798469":
++ildouble: 1
++ldouble: 1
++Test "sin_towardzero (4) == -0.7568024953079282513726390945118290941359":
++float: 1
++ifloat: 1
++Test "sin_towardzero (5) == -0.9589242746631384688931544061559939733525":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "sin_towardzero (6) == -0.2794154981989258728115554466118947596280":
++ildouble: 1
++ldouble: 1
++Test "sin_towardzero (8) == 0.9893582466233817778081235982452886721164":
++ildouble: 1
++ldouble: 1
++Test "sin_towardzero (9) == 0.4121184852417565697562725663524351793439":
++float: 1
++ifloat: 1
++ildouble: 2
++ldouble: 2
++
++# sin_upward
++Test "sin_upward (1) == 0.8414709848078965066525023216302989996226":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "sin_upward (10) == -0.5440211108893698134047476618513772816836":
++ildouble: 1
++ldouble: 1
++Test "sin_upward (2) == 0.9092974268256816953960198659117448427023":
++float: 2
++ifloat: 2
++Test "sin_upward (3) == 0.1411200080598672221007448028081102798469":
++ildouble: 1
++ldouble: 1
++Test "sin_upward (4) == -0.7568024953079282513726390945118290941359":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "sin_upward (7) == 0.6569865987187890903969990915936351779369":
++ildouble: 1
++ldouble: 1
++Test "sin_upward (9) == 0.4121184852417565697562725663524351793439":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++# sincos
++Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res":
++double: 1
++idouble: 1
++ildouble: 1
++ldouble: 1
++Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res":
++float: 1
++ifloat: 1
++
++# sinh_downward
++Test "sinh_downward (22) == 1792456423.065795780701106568345764104225":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "sinh_downward (23) == 4872401723.124451299966006944252978187305":
++float: 1
++ifloat: 1
++ildouble: 2
++ldouble: 2
++Test "sinh_downward (24) == 13244561064.92173614705070540368454568168":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++# sinh_towardzero
++Test "sinh_towardzero (22) == 1792456423.065795780701106568345764104225":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "sinh_towardzero (23) == 4872401723.124451299966006944252978187305":
++float: 1
++ifloat: 1
++ildouble: 2
++ldouble: 2
++Test "sinh_towardzero (24) == 13244561064.92173614705070540368454568168":
++float: 1
++ifloat: 1
++
++# sinh_upward
++Test "sinh_upward (22) == 1792456423.065795780701106568345764104225":
++ildouble: 1
++ldouble: 1
++Test "sinh_upward (23) == 4872401723.124451299966006944252978187305":
++ildouble: 1
++ldouble: 1
++Test "sinh_upward (24) == 13244561064.92173614705070540368454568168":
++ildouble: 1
++ldouble: 1
++
++# sqrt
++Test "sqrt (2) == M_SQRT2l":
++ildouble: 1
++ldouble: 1
++
++# tan_downward
++Test "tan_downward (1) == 1.5574077246549022305069748074583601730873":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "tan_downward (10) == 0.6483608274590866712591249330098086768169":
++float: 1
++ifloat: 1
++Test "tan_downward (2) == -2.1850398632615189916433061023136825434320":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "tan_downward (6) == -0.2910061913847491570536995888681755428312":
++float: 1
++ifloat: 1
++Test "tan_downward (8) == -6.7997114552203786999252627596086333648814":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "tan_downward (9) == -0.4523156594418098405903708757987855343087":
++float: 1
++ifloat: 1
++
++# tan_towardzero
++Test "tan_towardzero (10) == 0.6483608274590866712591249330098086768169":
++float: 1
++ifloat: 1
++Test "tan_towardzero (3) == -0.1425465430742778052956354105339134932261":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "tan_towardzero (4) == 1.1578212823495775831373424182673239231198":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "tan_towardzero (5) == -3.3805150062465856369827058794473439087096":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "tan_towardzero (6) == -0.2910061913847491570536995888681755428312":
++ildouble: 1
++ldouble: 1
++Test "tan_towardzero (9) == -0.4523156594418098405903708757987855343087":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++# tan_upward
++Test "tan_upward (1) == 1.5574077246549022305069748074583601730873":
++float: 1
++ifloat: 1
++Test "tan_upward (10) == 0.6483608274590866712591249330098086768169":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "tan_upward (2) == -2.1850398632615189916433061023136825434320":
++ildouble: 1
++ldouble: 1
++Test "tan_upward (3) == -0.1425465430742778052956354105339134932261":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "tan_upward (4) == 1.1578212823495775831373424182673239231198":
++ildouble: 1
++ldouble: 1
++Test "tan_upward (5) == -3.3805150062465856369827058794473439087096":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "tan_upward (6) == -0.2910061913847491570536995888681755428312":
++ildouble: 1
++ldouble: 1
++Test "tan_upward (9) == -0.4523156594418098405903708757987855343087":
++ildouble: 1
++ldouble: 1
++
++# tanh
++Test "tanh (-0.75) == -0.635148952387287319214434357312496495":
++ildouble: 1
++ldouble: 1
++Test "tanh (-1.0) == -0.7615941559557648881194582826047935904":
++ildouble: 1
++ldouble: 1
++Test "tanh (0.75) == 0.635148952387287319214434357312496495":
++ildouble: 1
++ldouble: 1
++Test "tanh (1.0) == 0.7615941559557648881194582826047935904":
++ildouble: 1
++ldouble: 1
++
++# tgamma
++Test "tgamma (-0.5) == -2 sqrt (pi)":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "tgamma (0.5) == sqrt (pi)":
++float: 1
++ifloat: 1
++Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++Test "tgamma (4) == 6":
+ ildouble: 1
+ ldouble: 1
+@@ -917,17 +1307,13 @@ ifloat: 2
+ ildouble: 5
+ ldouble: 5
+ Test "yn (10, 1.0) == -121618014.278689189288130426667971145":
+-double: 1
+ float: 2
+-idouble: 1
+ ifloat: 2
+ ildouble: 1
+ ldouble: 1
+ Test "yn (10, 10.0) == -0.359814152183402722051986577343560609":
+ double: 2
+-float: 2
+ idouble: 2
+-ifloat: 2
+ ildouble: 2
+ ldouble: 2
+ Test "yn (10, 2.0) == -129184.542208039282635913145923304214":
+@@ -941,9 +1327,7 @@ Test "yn (3, 0.125) == -2612.69757350066
+ double: 1
+ idouble: 1
+ Test "yn (3, 0.75) == -12.9877176234475433186319774484809207":
+-double: 1
+ float: 1
+-idouble: 1
+ ifloat: 1
+ ildouble: 2
+ ldouble: 2
+@@ -973,17 +1357,9 @@ Function: Imaginary part of "cacos":
+ ildouble: 1
+ ldouble: 1
+-Function: Real part of "cacosh":
+-double: 1
+-float: 7
+-idouble: 1
+-ifloat: 7
+-
+ Function: Imaginary part of "cacosh":
+-double: 1
+-float: 3
+-idouble: 1
+-ifloat: 3
++float: 1
++ifloat: 1
+ ildouble: 1
+ ldouble: 1
+@@ -1013,10 +1389,6 @@ ifloat: 6
+ ildouble: 2
+ ldouble: 2
+-Function: Real part of "catan":
+-float: 4
+-ifloat: 4
+-
+ Function: Imaginary part of "catan":
+ double: 1
+ float: 1
+@@ -1032,8 +1404,6 @@ ildouble: 1
+ ldouble: 1
+ Function: Imaginary part of "catanh":
+-float: 6
+-ifloat: 6
+ ildouble: 1
+ ldouble: 1
+@@ -1089,10 +1459,6 @@ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+-Function: Imaginary part of "clog":
+-float: 3
+-ifloat: 3
+-
+ Function: Real part of "clog10":
+ float: 1
+ ifloat: 1
+@@ -1101,9 +1467,9 @@ ldouble: 1
+ Function: Imaginary part of "clog10":
+ double: 1
+-float: 5
++float: 1
+ idouble: 1
+-ifloat: 5
++ifloat: 1
+ ildouble: 1
+ ldouble: 1
+@@ -1115,6 +1481,48 @@ ifloat: 1
+ ildouble: 1
+ ldouble: 1
++Function: "cos_downward":
++float: 1
++ifloat: 1
++ildouble: 2
++ldouble: 2
++
++Function: "cos_tonearest":
++float: 1
++ifloat: 1
++
++Function: "cos_towardzero":
++float: 1
++ifloat: 1
++ildouble: 2
++ldouble: 2
++
++Function: "cos_upward":
++float: 2
++ifloat: 2
++ildouble: 1
++ldouble: 1
++
++Function: "cosh_downward":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++Function: "cosh_tonearest":
++ildouble: 1
++ldouble: 1
++
++Function: "cosh_towardzero":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++Function: "cosh_upward":
++ildouble: 1
++ldouble: 1
++
+ Function: Real part of "cpow":
+ double: 2
+ float: 4
+@@ -1162,8 +1570,6 @@ ildouble: 1
+ ldouble: 1
+ Function: Real part of "ctan":
+-double: 1
+-idouble: 1
+ ildouble: 1
+ ldouble: 1
+@@ -1211,6 +1617,24 @@ Function: "exp2":
+ ildouble: 2
+ ldouble: 2
++Function: "exp_downward":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++Function: "exp_towardzero":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++Function: "exp_upward":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
+ Function: "expm1":
+ double: 1
+ float: 1
+@@ -1228,10 +1652,10 @@ float: 1
+ ifloat: 1
+ Function: "j0":
+-double: 3
+-float: 2
+-idouble: 3
+-ifloat: 2
++double: 2
++float: 1
++idouble: 2
++ifloat: 1
+ ildouble: 2
+ ldouble: 2
+@@ -1244,10 +1668,10 @@ ildouble: 4
+ ldouble: 4
+ Function: "jn":
+-double: 4
+-float: 4
+-idouble: 4
+-ifloat: 4
++double: 3
++float: 3
++idouble: 3
++ifloat: 3
+ ildouble: 4
+ ldouble: 4
+@@ -1277,6 +1701,44 @@ Function: "log2":
+ ildouble: 1
+ ldouble: 1
++Function: "pow_downward":
++float: 1
++ifloat: 1
++
++Function: "pow_towardzero":
++float: 1
++ifloat: 1
++
++Function: "pow_upward":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++Function: "sin_downward":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++Function: "sin_tonearest":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++Function: "sin_towardzero":
++float: 1
++ifloat: 1
++ildouble: 2
++ldouble: 2
++
++Function: "sin_upward":
++float: 2
++ifloat: 2
++ildouble: 1
++ldouble: 1
++
+ Function: "sincos":
+ double: 1
+ float: 1
+@@ -1285,6 +1747,22 @@ ifloat: 1
+ ildouble: 1
+ ldouble: 1
++Function: "sinh_downward":
++float: 1
++ifloat: 1
++ildouble: 2
++ldouble: 2
++
++Function: "sinh_towardzero":
++float: 1
++ifloat: 1
++ildouble: 2
++ldouble: 2
++
++Function: "sinh_upward":
++ildouble: 1
++ldouble: 1
++
+ Function: "sqrt":
+ ildouble: 1
+ ldouble: 1
+@@ -1293,6 +1771,24 @@ Function: "tan":
+ double: 1
+ idouble: 1
++Function: "tan_downward":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++Function: "tan_towardzero":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++Function: "tan_upward":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
+ Function: "tanh":
+ ildouble: 1
+ ldouble: 1
+diff -Nrup a/sysdeps/x86_64/fpu/libm-test-ulps b/sysdeps/x86_64/fpu/libm-test-ulps
+--- a/sysdeps/x86_64/fpu/libm-test-ulps        2010-05-04 05:27:23.000000000 -0600
++++ b/sysdeps/x86_64/fpu/libm-test-ulps        2012-08-06 11:02:14.602759422 -0600
+@@ -42,26 +42,13 @@ ldouble: 1
+ # cacos
+ Test "Imaginary part of: cacos (0.75 + 1.25 i) == 1.11752014915610270578240049553777969 - 1.13239363160530819522266333696834467 i":
+-float: 1
+-ifloat: 1
+ ildouble: 2
+ ldouble: 2
+ # cacosh
+-Test "Real part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i":
+-double: 1
+-float: 7
+-idouble: 1
+-ifloat: 7
+-ildouble: 6
+-ldouble: 6
+ Test "Imaginary part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i":
+-double: 1
+-float: 3
+-idouble: 1
+-ifloat: 3
+-ildouble: 1
+-ldouble: 1
++float: 1
++ifloat: 1
+ Test "Real part of: cacosh (0.75 + 1.25 i) == 1.13239363160530819522266333696834467 + 1.11752014915610270578240049553777969 i":
+ ildouble: 1
+ ldouble: 1
+@@ -75,8 +62,6 @@ ifloat: 1
+ ildouble: 2
+ ldouble: 2
+ Test "Imaginary part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i":
+-float: 1
+-ifloat: 1
+ ildouble: 2
+ ldouble: 2
+@@ -103,21 +88,15 @@ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-ldouble: 1
+ ildouble: 1
++ldouble: 1
+ # catan
+-Test "Real part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i":
+-float: 3
+-ifloat: 3
+ Test "Imaginary part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-Test "Real part of: catan (0.75 + 1.25 i) == 1.10714871779409050301706546017853704 + 0.549306144334054845697622618461262852 i":
+-float: 4
+-ifloat: 4
+ # catanh
+ Test "Real part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i":
+@@ -125,15 +104,9 @@ double: 4
+ idouble: 4
+ ildouble: 1
+ ldouble: 1
+-Test "Imaginary part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i":
+-float: 4
+-ifloat: 4
+ Test "Real part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i":
+ double: 1
+ idouble: 1
+-Test "Imaginary part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i":
+-float: 6
+-ifloat: 6
+ # cbrt
+ Test "cbrt (-0.001) == -0.1":
+@@ -152,14 +125,9 @@ ildouble: 1
+ ldouble: 1
+ # ccos
+-Test "Real part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
+-double: 1
+-idouble: 1
+ Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
+ float: 1
+ ifloat: 1
+-ildouble: 1
+-ldouble: 1
+ Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
+ double: 1
+ float: 1
+@@ -168,19 +136,17 @@ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+ Test "Imaginary part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
+-ildouble: 1
+-ldouble: 1
+ float: 1
+ ifloat: 1
++ildouble: 1
++ldouble: 1
+ # ccosh
+ Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
+ float: 1
+ ifloat: 1
+ Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
+-double: 1
+ float: 1
+-idouble: 1
+ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+@@ -205,9 +171,6 @@ ildouble: 1
+ ldouble: 1
+ # clog
+-Test "Imaginary part of: clog (-2 - 3 i) == 1.2824746787307683680267437207826593 - 2.1587989303424641704769327722648368 i":
+-float: 3
+-ifloat: 3
+ Test "Real part of: clog (0.75 + 1.25 i) == 0.376885901188190075998919126749298416 + 1.03037682652431246378774332703115153 i":
+ float: 1
+ ifloat: 1
+@@ -227,11 +190,7 @@ idouble: 1
+ ifloat: 1
+ Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
+ double: 1
+-float: 5
+ idouble: 1
+-ifloat: 5
+-ildouble: 1
+-ldouble: 1
+ Test "Imaginary part of: clog10 (-3 + inf i) == inf + pi/2*log10(e) i":
+ double: 1
+ float: 1
+@@ -276,9 +235,7 @@ float: 1
+ idouble: 1
+ ifloat: 1
+ Test "Real part of: clog10 (0.75 + 1.25 i) == 0.163679467193165171449476605077428975 + 0.447486970040493067069984724340855636 i":
+-double: 1
+ float: 1
+-idouble: 1
+ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+@@ -306,33 +263,164 @@ ifloat: 1
+ # cos
+ Test "cos (M_PI_6l * 2.0) == 0.5":
+ double: 1
+-float: 1
+ idouble: 1
+-ifloat: 1
+ Test "cos (M_PI_6l * 4.0) == -0.5":
+ double: 2
+ float: 1
+ idouble: 2
+ ifloat: 1
++
++# cos_downward
++Test "cos_downward (1) == 0.5403023058681397174009366074429766037323":
++float: 1
++ifloat: 1
+ ildouble: 1
+ ldouble: 1
+-Test "cos (pi/2) == 0":
+-double: 1
++Test "cos_downward (2) == -0.4161468365471423869975682295007621897660":
++float: 1
++ifloat: 1
++Test "cos_downward (3) == -0.9899924966004454572715727947312613023937":
++float: 1
++ifloat: 1
++Test "cos_downward (4) == -0.6536436208636119146391681830977503814241":
+ float: 1
+-idouble: 1
+ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+-Test "cos (0.80190127184058835) == 0.69534156199418473":
+-double: 1
+-idouble: 1
++Test "cos_downward (5) == 0.2836621854632262644666391715135573083344":
++float: 1
++ifloat: 1
++Test "cos_downward (7) == 0.7539022543433046381411975217191820122183":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "cos_downward (8) == -0.1455000338086135258688413818311946826093":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "cos_downward (9) == -0.9111302618846769883682947111811653112463":
++ildouble: 1
++ldouble: 1
++
++# cos_tonearest
++Test "cos_tonearest (7) == 0.7539022543433046381411975217191820122183":
++float: 1
++ifloat: 1
++Test "cos_tonearest (8) == -0.1455000338086135258688413818311946826093":
++ildouble: 1
++ldouble: 1
++Test "cos_tonearest (9) == -0.9111302618846769883682947111811653112463":
++ildouble: 1
++ldouble: 1
++
++# cos_towardzero
++Test "cos_towardzero (1) == 0.5403023058681397174009366074429766037323":
++ildouble: 1
++ldouble: 1
++Test "cos_towardzero (10) == -0.8390715290764524522588639478240648345199":
++ildouble: 1
++ldouble: 1
++Test "cos_towardzero (2) == -0.4161468365471423869975682295007621897660":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "cos_towardzero (3) == -0.9899924966004454572715727947312613023937":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "cos_towardzero (5) == 0.2836621854632262644666391715135573083344":
++float: 1
++ifloat: 1
++Test "cos_towardzero (7) == 0.7539022543433046381411975217191820122183":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "cos_towardzero (8) == -0.1455000338086135258688413818311946826093":
++float: 1
++ifloat: 1
++
++# cos_upward
++Test "cos_upward (10) == -0.8390715290764524522588639478240648345199":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "cos_upward (2) == -0.4161468365471423869975682295007621897660":
++ildouble: 1
++ldouble: 1
++Test "cos_upward (3) == -0.9899924966004454572715727947312613023937":
++ildouble: 1
++ldouble: 1
++Test "cos_upward (5) == 0.2836621854632262644666391715135573083344":
++ildouble: 1
++ldouble: 1
++Test "cos_upward (6) == 0.9601702866503660205456522979229244054519":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "cos_upward (7) == 0.7539022543433046381411975217191820122183":
++float: 1
++ifloat: 1
++Test "cos_upward (9) == -0.9111302618846769883682947111811653112463":
++float: 2
++ifloat: 2
++
++# cosh_downward
++Test "cosh_downward (22) == 1792456423.065795780980053377632656584997":
++float: 1
++ifloat: 1
++ildouble: 2
++ldouble: 2
++Test "cosh_downward (23) == 4872401723.124451300068625740569997090344":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "cosh_downward (24) == 13244561064.92173614708845674912733665919":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++# cosh_tonearest
++Test "cosh_tonearest (22) == 1792456423.065795780980053377632656584997":
++ildouble: 1
++ldouble: 1
++
++# cosh_towardzero
++Test "cosh_towardzero (22) == 1792456423.065795780980053377632656584997":
++float: 1
++ifloat: 1
++ildouble: 2
++ldouble: 2
++Test "cosh_towardzero (23) == 4872401723.124451300068625740569997090344":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "cosh_towardzero (24) == 13244561064.92173614708845674912733665919":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++# cosh_upward
++Test "cosh_upward (23) == 4872401723.124451300068625740569997090344":
++ildouble: 1
++ldouble: 1
+ # cpow
+ Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i":
+ float: 1
+ ifloat: 1
+-ldouble: 1
+ ildouble: 1
++ldouble: 1
+ Test "Imaginary part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i":
+ float: 1
+ ifloat: 1
+@@ -363,9 +451,9 @@ ildouble: 1
+ ldouble: 1
+ Test "Real part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i":
+ double: 1
+-float: 5
++float: 4
+ idouble: 1
+-ifloat: 5
++ifloat: 4
+ Test "Imaginary part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i":
+ float: 2
+ ifloat: 2
+@@ -383,22 +471,11 @@ ldouble: 1
+ Test "Real part of: csin (0.75 + 1.25 i) == 1.28722291002649188575873510790565441 + 1.17210635989270256101081285116138863 i":
+ ildouble: 1
+ ldouble: 1
+-Test "Imaginary part of: csin (0.75 + 1.25 i) == 1.28722291002649188575873510790565441 + 1.17210635989270256101081285116138863 i":
+-float: 1
+-ifloat: 1
+-Test "Imaginary part of: csin (-2 - 3 i) == -9.15449914691142957346729954460983256 + 4.16890695996656435075481305885375484 i":
+-double: 1
+-idouble: 1
+ # csinh
+-Test "Real part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
+-double: 1
+-idouble: 1
+ Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
+ double: 1
+ idouble: 1
+-ildouble: 2
+-ldouble: 2
+ Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
+ float: 1
+ ifloat: 1
+@@ -418,37 +495,31 @@ ifloat: 1
+ # ctan
+ Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
+-double: 1
+-idouble: 1
+-ildouble: 439
+-ldouble: 439
++ildouble: 1
++ldouble: 1
+ Test "Imaginary part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
+-float: 1
+-ifloat: 1
+-ildouble: 2
+-ldouble: 2
++ildouble: 1
++ldouble: 1
+ Test "Real part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
+ ildouble: 1
+ ldouble: 1
+ Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
+ double: 1
+-float: 1
+ idouble: 1
+-ifloat: 1
+ ildouble: 3
+ ldouble: 3
+ # ctanh
+ Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
+-float: 2
+-ifloat: 2
+-ildouble: 5
+-ldouble: 5
+ double: 1
++float: 2
+ idouble: 1
++ifloat: 2
++ildouble: 3
++ldouble: 3
+ Test "Imaginary part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
+-ildouble: 25
+-ldouble: 25
++ildouble: 1
++ldouble: 1
+ Test "Imaginary part of: ctanh (0 + pi/4 i) == 0.0 + 1.0 i":
+ float: 1
+ ifloat: 1
+@@ -456,10 +527,10 @@ Test "Real part of: ctanh (0.75 + 1.25 i
+ double: 1
+ idouble: 1
+ Test "Imaginary part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i":
+-ildouble: 1
+-ldouble: 1
+ double: 1
+ idouble: 1
++ildouble: 1
++ldouble: 1
+ # erf
+ Test "erf (1.25) == 0.922900128256458230136523481197281140":
+@@ -481,26 +552,61 @@ ldouble: 1
+ # exp10
+ Test "exp10 (-1) == 0.1":
+-ildouble: 1
+-ldouble: 1
+-float: 1
+-ifloat: 1
+ double: 2
+-idouble: 2
+-Test "exp10 (0.75) == 5.62341325190349080394951039776481231":
+-ildouble: 2
+-ldouble: 2
+ float: 1
++idouble: 2
+ ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "exp10 (0.75) == 5.62341325190349080394951039776481231":
+ double: 1
++float: 1
+ idouble: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
+ Test "exp10 (3) == 1000":
+-ildouble: 8
+-ldouble: 8
+-float: 2
+-ifloat: 2
+ double: 6
++float: 2
+ idouble: 6
++ifloat: 2
++ildouble: 3
++ldouble: 3
++
++# exp_downward
++Test "exp_downward (1) == e":
++ildouble: 1
++ldouble: 1
++Test "exp_downward (2) == e^2":
++float: 1
++ifloat: 1
++ildouble: 2
++ldouble: 2
++Test "exp_downward (3) == e^3":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++# exp_towardzero
++Test "exp_towardzero (1) == e":
++ildouble: 1
++ldouble: 1
++Test "exp_towardzero (2) == e^2":
++float: 1
++ifloat: 1
++ildouble: 2
++ldouble: 2
++Test "exp_towardzero (3) == e^3":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++# exp_upward
++Test "exp_upward (1) == e":
++float: 1
++ifloat: 1
+ # expm1
+ Test "expm1 (0.75) == 1.11700001661267466854536981983709561":
+@@ -570,9 +676,7 @@ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+ Test "j0 (8.0) == 0.171650807137553906090869407851972001":
+-double: 2
+ float: 1
+-idouble: 2
+ ifloat: 1
+ # j1
+@@ -617,9 +721,7 @@ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+ Test "jn (0, 8.0) == 0.171650807137553906090869407851972001":
+-double: 2
+ float: 1
+-idouble: 2
+ ifloat: 1
+ Test "jn (1, 10.0) == 0.0434727461688614366697487680258592883":
+ float: 2
+@@ -714,12 +816,12 @@ ldouble: 1
+ # log10
+ Test "log10 (0.75) == -0.124938736608299953132449886193870744":
+-ildouble: 1
+-ldouble: 1
+-float: 2
+-ifloat: 2
+ double: 1
++float: 2
+ idouble: 1
++ifloat: 2
++ildouble: 1
++ldouble: 1
+ Test "log10 (e) == log10(e)":
+ float: 1
+ ifloat: 1
+@@ -731,37 +833,309 @@ Test "log1p (-0.25) == -0.28768207245178
+ float: 1
+ ifloat: 1
+-# sincos
+-Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res":
+-double: 1
+-float: 1
+-idouble: 1
+-ifloat: 1
+-Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res":
+-double: 1
+-float: 1
+-idouble: 1
+-ifloat: 1
++# pow_downward
++Test "pow_downward (1.0625, 1.125) == 1.070582293028761362162622578677070098674":
+ ildouble: 1
+ ldouble: 1
+-Test "sincos (pi/2, &sin_res, &cos_res) puts 0 in cos_res":
+-double: 1
++Test "pow_downward (1.5, 1.03125) == 1.519127098714743184071644334163037684948":
+ float: 1
+-idouble: 1
+ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+-Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res":
++
++# pow_towardzero
++Test "pow_towardzero (1.0625, 1.125) == 1.070582293028761362162622578677070098674":
++ildouble: 1
++ldouble: 1
++Test "pow_towardzero (1.5, 1.03125) == 1.519127098714743184071644334163037684948":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++# pow_upward
++Test "pow_upward (1.0625, 1.125) == 1.070582293028761362162622578677070098674":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "pow_upward (1.5, 1.03125) == 1.519127098714743184071644334163037684948":
++ildouble: 1
++ldouble: 1
++
++# sin_downward
++Test "sin_downward (1) == 0.8414709848078965066525023216302989996226":
++ildouble: 1
++ldouble: 1
++Test "sin_downward (10) == -0.5440211108893698134047476618513772816836":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "sin_downward (3) == 0.1411200080598672221007448028081102798469":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "sin_downward (4) == -0.7568024953079282513726390945118290941359":
++ildouble: 1
++ldouble: 1
++Test "sin_downward (5) == -0.9589242746631384688931544061559939733525":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "sin_downward (6) == -0.2794154981989258728115554466118947596280":
++float: 1
++ifloat: 1
++Test "sin_downward (7) == 0.6569865987187890903969990915936351779369":
++ildouble: 1
++ldouble: 1
++Test "sin_downward (8) == 0.9893582466233817778081235982452886721164":
++ildouble: 1
++ldouble: 1
++Test "sin_downward (9) == 0.4121184852417565697562725663524351793439":
++ildouble: 1
++ldouble: 1
++
++# sin_tonearest
++Test "sin_tonearest (1) == 0.8414709848078965066525023216302989996226":
++float: 1
++ifloat: 1
++Test "sin_tonearest (10) == -0.5440211108893698134047476618513772816836":
++ildouble: 1
++ldouble: 1
++Test "sin_tonearest (4) == -0.7568024953079282513726390945118290941359":
++ildouble: 1
++ldouble: 1
++Test "sin_tonearest (9) == 0.4121184852417565697562725663524351793439":
++ildouble: 1
++ldouble: 1
++
++# sin_towardzero
++Test "sin_towardzero (1) == 0.8414709848078965066525023216302989996226":
+ float: 1
+ ifloat: 1
+-Test "sincos (0.80190127184058835, &sin_res, &cos_res) puts 0.69534156199418473 in cos_res":
++ildouble: 1
++ldouble: 1
++Test "sin_towardzero (10) == -0.5440211108893698134047476618513772816836":
++float: 1
++ifloat: 1
++Test "sin_towardzero (3) == 0.1411200080598672221007448028081102798469":
++ildouble: 1
++ldouble: 1
++Test "sin_towardzero (4) == -0.7568024953079282513726390945118290941359":
++float: 1
++ifloat: 1
++Test "sin_towardzero (5) == -0.9589242746631384688931544061559939733525":
++float: 1
++ifloat: 1
++Test "sin_towardzero (6) == -0.2794154981989258728115554466118947596280":
++ildouble: 1
++ldouble: 1
++Test "sin_towardzero (7) == 0.6569865987187890903969990915936351779369":
++ildouble: 1
++ldouble: 1
++Test "sin_towardzero (8) == 0.9893582466233817778081235982452886721164":
++ildouble: 1
++ldouble: 1
++Test "sin_towardzero (9) == 0.4121184852417565697562725663524351793439":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++# sin_upward
++Test "sin_upward (1) == 0.8414709848078965066525023216302989996226":
++float: 1
++ifloat: 1
++Test "sin_upward (2) == 0.9092974268256816953960198659117448427023":
++float: 2
++ifloat: 2
++ildouble: 1
++ldouble: 1
++Test "sin_upward (4) == -0.7568024953079282513726390945118290941359":
++float: 1
++ifloat: 1
++Test "sin_upward (6) == -0.2794154981989258728115554466118947596280":
++ildouble: 1
++ldouble: 1
++Test "sin_upward (9) == 0.4121184852417565697562725663524351793439":
++float: 1
++ifloat: 1
++
++# sincos
++Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res":
+ double: 1
+ idouble: 1
+-
+-# tan
+-Test "tan (pi/4) == 1":
++Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res":
+ double: 1
++float: 1
+ idouble: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res":
++float: 1
++ifloat: 1
++
++# sinh_downward
++Test "sinh_downward (22) == 1792456423.065795780701106568345764104225":
++float: 1
++ifloat: 1
++ildouble: 4
++ldouble: 4
++Test "sinh_downward (23) == 4872401723.124451299966006944252978187305":
++float: 1
++ifloat: 1
++Test "sinh_downward (24) == 13244561064.92173614705070540368454568168":
++float: 1
++ifloat: 1
++ildouble: 5
++ldouble: 5
++
++# sinh_tonearest
++Test "sinh_tonearest (22) == 1792456423.065795780701106568345764104225":
++ildouble: 3
++ldouble: 3
++Test "sinh_tonearest (23) == 4872401723.124451299966006944252978187305":
++ildouble: 1
++ldouble: 1
++Test "sinh_tonearest (24) == 13244561064.92173614705070540368454568168":
++ildouble: 6
++ldouble: 6
++
++# sinh_towardzero
++Test "sinh_towardzero (22) == 1792456423.065795780701106568345764104225":
++float: 1
++ifloat: 1
++ildouble: 4
++ldouble: 4
++Test "sinh_towardzero (23) == 4872401723.124451299966006944252978187305":
++float: 1
++ifloat: 1
++Test "sinh_towardzero (24) == 13244561064.92173614705070540368454568168":
++float: 1
++ifloat: 1
++ildouble: 5
++ldouble: 5
++
++# sinh_upward
++Test "sinh_upward (22) == 1792456423.065795780701106568345764104225":
++ildouble: 16
++ldouble: 16
++Test "sinh_upward (23) == 4872401723.124451299966006944252978187305":
++ildouble: 27
++ldouble: 27
++Test "sinh_upward (24) == 13244561064.92173614705070540368454568168":
++ildouble: 7
++ldouble: 7
++
++# tan_downward
++Test "tan_downward (1) == 1.5574077246549022305069748074583601730873":
++float: 1
++ifloat: 1
++Test "tan_downward (10) == 0.6483608274590866712591249330098086768169":
++float: 1
++ifloat: 1
++Test "tan_downward (2) == -2.1850398632615189916433061023136825434320":
++float: 1
++ifloat: 1
++Test "tan_downward (4) == 1.1578212823495775831373424182673239231198":
++ildouble: 1
++ldouble: 1
++Test "tan_downward (5) == -3.3805150062465856369827058794473439087096":
++ildouble: 1
++ldouble: 1
++Test "tan_downward (6) == -0.2910061913847491570536995888681755428312":
++float: 1
++ifloat: 1
++Test "tan_downward (8) == -6.7997114552203786999252627596086333648814":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "tan_downward (9) == -0.4523156594418098405903708757987855343087":
++float: 1
++ifloat: 1
++
++# tan_tonearest
++Test "tan_tonearest (6) == -0.2910061913847491570536995888681755428312":
++ildouble: 1
++ldouble: 1
++Test "tan_tonearest (8) == -6.7997114552203786999252627596086333648814":
++ildouble: 1
++ldouble: 1
++Test "tan_tonearest (9) == -0.4523156594418098405903708757987855343087":
++ildouble: 1
++ldouble: 1
++
++# tan_towardzero
++Test "tan_towardzero (10) == 0.6483608274590866712591249330098086768169":
++float: 1
++ifloat: 1
++Test "tan_towardzero (2) == -2.1850398632615189916433061023136825434320":
++ildouble: 1
++ldouble: 1
++Test "tan_towardzero (3) == -0.1425465430742778052956354105339134932261":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "tan_towardzero (4) == 1.1578212823495775831373424182673239231198":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "tan_towardzero (5) == -3.3805150062465856369827058794473439087096":
++float: 1
++ifloat: 1
++Test "tan_towardzero (6) == -0.2910061913847491570536995888681755428312":
++ildouble: 1
++ldouble: 1
++Test "tan_towardzero (8) == -6.7997114552203786999252627596086333648814":
++ildouble: 2
++ldouble: 2
++Test "tan_towardzero (9) == -0.4523156594418098405903708757987855343087":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++# tan_upward
++Test "tan_upward (1) == 1.5574077246549022305069748074583601730873":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "tan_upward (10) == 0.6483608274590866712591249330098086768169":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "tan_upward (2) == -2.1850398632615189916433061023136825434320":
++ildouble: 1
++ldouble: 1
++Test "tan_upward (3) == -0.1425465430742778052956354105339134932261":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "tan_upward (5) == -3.3805150062465856369827058794473439087096":
++float: 1
++ifloat: 1
++Test "tan_upward (6) == -0.2910061913847491570536995888681755428312":
++ildouble: 1
++ldouble: 1
++Test "tan_upward (7) == 0.8714479827243187364564508896003135663222":
++ildouble: 1
++ldouble: 1
++Test "tan_upward (8) == -6.7997114552203786999252627596086333648814":
++ildouble: 2
++ldouble: 2
++Test "tan_upward (9) == -0.4523156594418098405903708757987855343087":
++ildouble: 1
++ldouble: 1
+ # tgamma
+ Test "tgamma (-0.5) == -2 sqrt (pi)":
+@@ -779,9 +1153,6 @@ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-Test "tgamma (4) == 6":
+-ildouble: 1
+-ldouble: 1
+ # y0
+ Test "y0 (0.125) == -1.38968062514384052915582277745018693":
+@@ -960,27 +1331,17 @@ ildouble: 1
+ ldouble: 1
+ Function: Imaginary part of "cacos":
+-float: 1
+-ifloat: 1
+ ildouble: 2
+ ldouble: 2
+ Function: Real part of "cacosh":
+-double: 1
+-float: 7
+-idouble: 1
+-ifloat: 7
+-ildouble: 6
+-ldouble: 6
+-
+-Function: Imaginary part of "cacosh":
+-double: 1
+-float: 3
+-idouble: 1
+-ifloat: 3
+ ildouble: 1
+ ldouble: 1
++Function: Imaginary part of "cacosh":
++float: 1
++ifloat: 1
++
+ Function: Real part of "casin":
+ double: 1
+ float: 1
+@@ -990,8 +1351,6 @@ ildouble: 2
+ ldouble: 2
+ Function: Imaginary part of "casin":
+-float: 1
+-ifloat: 1
+ ildouble: 2
+ ldouble: 2
+@@ -1011,10 +1370,6 @@ ifloat: 6
+ ildouble: 5
+ ldouble: 5
+-Function: Real part of "catan":
+-float: 4
+-ifloat: 4
+-
+ Function: Imaginary part of "catan":
+ double: 1
+ float: 1
+@@ -1027,10 +1382,6 @@ idouble: 4
+ ildouble: 1
+ ldouble: 1
+-Function: Imaginary part of "catanh":
+-float: 6
+-ifloat: 6
+-
+ Function: "cbrt":
+ double: 1
+ idouble: 1
+@@ -1058,9 +1409,7 @@ idouble: 1
+ ifloat: 1
+ Function: Imaginary part of "ccosh":
+-double: 1
+ float: 1
+-idouble: 1
+ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+@@ -1081,25 +1430,17 @@ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+-Function: Imaginary part of "clog":
+-float: 3
+-ifloat: 3
+-
+ Function: Real part of "clog10":
+-double: 1
+ float: 1
+-idouble: 1
+ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+ Function: Imaginary part of "clog10":
+ double: 1
+-float: 5
++float: 1
+ idouble: 1
+-ifloat: 5
+-ildouble: 1
+-ldouble: 1
++ifloat: 1
+ Function: "cos":
+ double: 2
+@@ -1109,11 +1450,55 @@ ifloat: 1
+ ildouble: 1
+ ldouble: 1
++Function: "cos_downward":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++Function: "cos_tonearest":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++Function: "cos_towardzero":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++Function: "cos_upward":
++float: 2
++ifloat: 2
++ildouble: 1
++ldouble: 1
++
++Function: "cosh_downward":
++float: 1
++ifloat: 1
++ildouble: 2
++ldouble: 2
++
++Function: "cosh_tonearest":
++ildouble: 1
++ldouble: 1
++
++Function: "cosh_towardzero":
++float: 1
++ifloat: 1
++ildouble: 2
++ldouble: 2
++
++Function: "cosh_upward":
++ildouble: 1
++ldouble: 1
++
+ Function: Real part of "cpow":
+ double: 2
+-float: 5
++float: 4
+ idouble: 2
+-ifloat: 5
++ifloat: 4
+ ildouble: 5
+ ldouble: 5
+@@ -1129,16 +1514,8 @@ Function: Real part of "csin":
+ ildouble: 1
+ ldouble: 1
+-Function: Imaginary part of "csin":
+-double: 1
+-float: 1
+-idouble: 1
+-ifloat: 1
+-
+ Function: Real part of "csinh":
+-double: 1
+ float: 1
+-idouble: 1
+ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+@@ -1148,24 +1525,18 @@ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-ildouble: 2
+-ldouble: 2
+ Function: Real part of "csqrt":
+ float: 1
+ ifloat: 1
+ Function: Real part of "ctan":
+-double: 1
+-idouble: 1
+-ildouble: 439
+-ldouble: 439
++ildouble: 1
++ldouble: 1
+ Function: Imaginary part of "ctan":
+ double: 1
+-float: 1
+ idouble: 1
+-ifloat: 1
+ ildouble: 3
+ ldouble: 3
+@@ -1174,16 +1545,16 @@ double: 1
+ float: 2
+ idouble: 1
+ ifloat: 2
+-ildouble: 5
+-ldouble: 5
++ildouble: 3
++ldouble: 3
+ Function: Imaginary part of "ctanh":
+-float: 1
+-ifloat: 1
+-ildouble: 25
+-ldouble: 25
+ double: 1
++float: 1
+ idouble: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
+ Function: "erf":
+ double: 1
+@@ -1196,12 +1567,28 @@ ildouble: 1
+ ldouble: 1
+ Function: "exp10":
+-ildouble: 8
+-ldouble: 8
+-float: 2
+-ifloat: 2
+ double: 6
++float: 2
+ idouble: 6
++ifloat: 2
++ildouble: 3
++ldouble: 3
++
++Function: "exp_downward":
++float: 1
++ifloat: 1
++ildouble: 2
++ldouble: 2
++
++Function: "exp_towardzero":
++float: 1
++ifloat: 1
++ildouble: 2
++ldouble: 2
++
++Function: "exp_upward":
++float: 1
++ifloat: 1
+ Function: "expm1":
+ double: 1
+@@ -1250,17 +1637,59 @@ ildouble: 1
+ ldouble: 1
+ Function: "log10":
++double: 1
+ float: 2
++idouble: 1
+ ifloat: 2
+ ildouble: 1
+ ldouble: 1
+-double: 1
+-idouble: 1
+ Function: "log1p":
+ float: 1
+ ifloat: 1
++Function: "pow_downward":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++Function: "pow_towardzero":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++Function: "pow_upward":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++Function: "sin_downward":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++Function: "sin_tonearest":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++Function: "sin_towardzero":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++Function: "sin_upward":
++float: 2
++ifloat: 2
++ildouble: 1
++ldouble: 1
++
+ Function: "sincos":
+ double: 1
+ float: 1
+@@ -1269,10 +1698,52 @@ ifloat: 1
+ ildouble: 1
+ ldouble: 1
++Function: "sinh_downward":
++float: 1
++ifloat: 1
++ildouble: 5
++ldouble: 5
++
++Function: "sinh_tonearest":
++ildouble: 6
++ldouble: 6
++
++Function: "sinh_towardzero":
++float: 1
++ifloat: 1
++ildouble: 5
++ldouble: 5
++
++Function: "sinh_upward":
++ildouble: 27
++ldouble: 27
++
+ Function: "tan":
+ double: 1
+ idouble: 1
++Function: "tan_downward":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
++Function: "tan_tonearest":
++ildouble: 1
++ldouble: 1
++
++Function: "tan_towardzero":
++float: 1
++ifloat: 1
++ildouble: 2
++ldouble: 2
++
++Function: "tan_upward":
++float: 1
++ifloat: 1
++ildouble: 2
++ldouble: 2
++
+ Function: "tgamma":
+ double: 1
+ float: 1
+diff -Nrup a/sysdeps/x86_64/fpu/math_private.h b/sysdeps/x86_64/fpu/math_private.h
+--- a/sysdeps/x86_64/fpu/math_private.h        2010-05-04 05:27:23.000000000 -0600
++++ b/sysdeps/x86_64/fpu/math_private.h        2012-08-06 09:54:00.893929393 -0600
+@@ -56,3 +56,82 @@ do {                                                                \
+ } while (0)
+ #endif
++
++
++/* Specialized variants of the <fenv.h> interfaces which only handle
++   either the FPU or the SSE unit.  */
++#undef libc_fegetround
++#define libc_fegetround() \
++  ({                                                                        \
++     unsigned int mxcsr;                                                    \
++     asm volatile ("stmxcsr %0" : "=m" (*&mxcsr));                          \
++     (mxcsr & 0x6000) >> 3;                                                 \
++  })
++#undef libc_fegetroundf
++#define libc_fegetroundf() libc_fegetround ()
++// #define libc_fegetroundl() fegetround ()
++
++#undef libc_fesetround
++#define libc_fesetround(r) \
++  do {                                                                              \
++     unsigned int mxcsr;                                                    \
++     asm ("stmxcsr %0" : "=m" (*&mxcsr));                                   \
++     mxcsr = (mxcsr & ~0x6000) | ((r) << 3);                                \
++     asm volatile ("ldmxcsr %0" : : "m" (*&mxcsr));                         \
++  } while (0)
++#undef libc_fesetroundf
++#define libc_fesetroundf(r) libc_fesetround (r)
++// #define libc_fesetroundl(r) (void) fesetround (r)
++
++#undef libc_feholdexcept
++#define libc_feholdexcept(e) \
++  do {                                                                              \
++     unsigned int mxcsr;                                                    \
++     asm ("stmxcsr %0" : "=m" (*&mxcsr));                                   \
++     (e)->__mxcsr = mxcsr;                                                  \
++     mxcsr = (mxcsr | 0x1f80) & ~0x3f;                                              \
++     asm volatile ("ldmxcsr %0" : : "m" (*&mxcsr));                         \
++  } while (0)
++#undef libc_feholdexceptf
++#define libc_feholdexceptf(e) libc_feholdexcept (e)
++// #define libc_feholdexceptl(e) (void) feholdexcept (e)
++
++#undef libc_feholdexcept_setround
++#define libc_feholdexcept_setround(e, r) \
++  do {                                                                              \
++     unsigned int mxcsr;                                                    \
++     asm ("stmxcsr %0" : "=m" (*&mxcsr));                                   \
++     (e)->__mxcsr = mxcsr;                                                  \
++     mxcsr = ((mxcsr | 0x1f80) & ~0x603f) | ((r) << 3);                             \
++     asm volatile ("ldmxcsr %0" : : "m" (*&mxcsr));                         \
++  } while (0)
++#undef libc_feholdexcept_setroundf
++#define libc_feholdexcept_setroundf(e, r) libc_feholdexcept_setround (e, r)
++// #define libc_feholdexcept_setroundl(e, r) ...
++
++#undef libc_fetestexcept
++#define libc_fetestexcept(e) \
++  ({ unsigned int mxcsr; asm volatile ("stmxcsr %0" : "=m" (*&mxcsr)); \
++     mxcsr & (e) & FE_ALL_EXCEPT; })
++#undef libc_fetestexceptf
++#define libc_fetestexceptf(e) libc_fetestexcept (e)
++// #define libc_fetestexceptl(e) fetestexcept (e)
++
++#undef libc_fesetenv
++#define libc_fesetenv(e) \
++  asm volatile ("ldmxcsr %0" : : "m" ((e)->__mxcsr))
++#undef libc_fesetenvf
++#define libc_fesetenvf(e) libc_fesetenv (e)
++// #define libc_fesetenvl(e) (void) fesetenv (e)
++
++#undef libc_feupdateenv
++#define libc_feupdateenv(e) \
++  do {                                                                              \
++    unsigned int mxcsr;                                                             \
++    asm volatile ("stmxcsr %0" : "=m" (*&mxcsr));                           \
++    asm volatile ("ldmxcsr %0" : : "m" ((e)->__mxcsr));                             \
++    feraiseexcept (mxcsr & FE_ALL_EXCEPT);                                  \
++  } while (0)
++#undef libc_feupdateenvf
++#define libc_feupdateenvf(e) libc_feupdateenv (e)
++// #define libc_feupdateenvl(e) (void) feupdateenv (e)
diff --git a/src/patches/glibc/glibc-rh841787.patch b/src/patches/glibc/glibc-rh841787.patch
new file mode 100644 (file)
index 0000000..3cec783
--- /dev/null
@@ -0,0 +1,42 @@
+diff -rup a/resolv/res_init.c b/resolv/res_init.c
+--- a/resolv/res_init.c        2012-07-26 15:10:45.655638776 -0600
++++ b/resolv/res_init.c        2012-07-26 15:11:27.731423002 -0600
+@@ -314,9 +314,9 @@ __res_vinit(res_state statp, int preinit
+                       cp++;
+                   if ((*cp != '\0') && (*cp != '\n')
+                       && __inet_aton(cp, &a)) {
+-                      statp->nsaddr_list[nservall].sin_addr = a;
+-                      statp->nsaddr_list[nservall].sin_family = AF_INET;
+-                      statp->nsaddr_list[nservall].sin_port =
++                      statp->nsaddr_list[nserv].sin_addr = a;
++                      statp->nsaddr_list[nserv].sin_family = AF_INET;
++                      statp->nsaddr_list[nserv].sin_port =
+                               htons(NAMESERVER_PORT);
+                       nserv++;
+ #ifdef _LIBC
+diff -rup a/resolv/res_send.c b/resolv/res_send.c
+--- a/resolv/res_send.c        2010-05-04 05:27:23.000000000 -0600
++++ b/resolv/res_send.c        2012-07-26 15:34:58.398261659 -0600
+@@ -421,10 +421,10 @@ __libc_res_nsend(res_state statp, const
+                               EXT(statp).nsmap[n] = MAXNS;
+                       }
+               }
+-              n = statp->nscount;
+-              if (statp->nscount > EXT(statp).nscount)
++              n = statp->nscount - EXT(statp).nscount6;
++              if (n > EXT(statp).nscount)
+                       for (n = EXT(statp).nscount, ns = 0;
+-                           n < statp->nscount; n++) {
++                           n < statp->nscount - EXT(statp).nscount6; n++) {
+                               while (ns < MAXNS
+                                      && EXT(statp).nsmap[ns] != MAXNS)
+                                       ns++;
+@@ -441,7 +441,7 @@ __libc_res_nsend(res_state statp, const
+                                   malloc(sizeof (struct sockaddr_in6));
+                       if (EXT(statp).nsaddrs[n] != NULL) {
+                               memset (mempcpy(EXT(statp).nsaddrs[n],
+-                                              &statp->nsaddr_list[n],
++                                              &statp->nsaddr_list[ns],
+                                               sizeof (struct sockaddr_in)),
+                                       '\0',
+                                       sizeof (struct sockaddr_in6)
diff --git a/src/patches/glibc/glibc-rh843673.patch b/src/patches/glibc/glibc-rh843673.patch
new file mode 100644 (file)
index 0000000..a2ff262
--- /dev/null
@@ -0,0 +1,31 @@
+diff -Brup a/stdlib/msort.c b/stdlib/msort.c
+--- a/stdlib/msort.c   2010-05-04 07:27:23.000000000 -0400
++++ b/stdlib/msort.c   2012-08-07 13:30:14.131765346 -0400
+@@ -25,6 +25,8 @@
+ #include <unistd.h>
+ #include <memcopy.h>
+ #include <errno.h>
++#include <atomic.h>
++
+ struct msort_param
+ {
+@@ -182,7 +184,7 @@ qsort_r (void *b, size_t n, size_t s, __
+       static long int phys_pages;
+       static int pagesize;
+-      if (phys_pages == 0)
++      if (pagesize == 0)
+       {
+         phys_pages = __sysconf (_SC_PHYS_PAGES);
+@@ -197,6 +199,9 @@ qsort_r (void *b, size_t n, size_t s, __
+            a quarter of the physical memory.  */
+         phys_pages /= 4;
++          /* Make sure phys_pages is written to memory.  */
++          atomic_write_barrier ();
++
+         pagesize = __sysconf (_SC_PAGESIZE);
+       }
diff --git a/src/patches/glibc/glibc-rh846342.patch b/src/patches/glibc/glibc-rh846342.patch
new file mode 100644 (file)
index 0000000..8cfca05
--- /dev/null
@@ -0,0 +1,48 @@
+This is a workaround for broken code which issues memcpy requests with
+overlapping arguments.  With this patch installed, if the file
+/etc/sysconfig/32bit_ssse3_memcpy_via_32bit_ssse3_memmove exists then a
+32bit memcpy call which normally would be handled by the SSSE3 memcpy
+implementation would instead be handled by the 32bit SSSE3 memmove
+implementation which is more tolerant of overlaps.
+
+diff -Nrup a/sysdeps/i386/i686/multiarch/memcpy.S b/sysdeps/i386/i686/multiarch/memcpy.S
+--- a/sysdeps/i386/i686/multiarch/memcpy.S     2010-05-04 05:27:23.000000000 -0600
++++ b/sysdeps/i386/i686/multiarch/memcpy.S     2012-11-20 14:19:52.890780415 -0700
+@@ -21,6 +21,10 @@
+ #include <sysdep.h>
+ #include <init-arch.h>
++        .section .rodata
++L(magicfile):
++      .ascii "/etc/sysconfig/32bit_ssse3_memcpy_via_32bit_ssse3_memmove"
++
+ /* Define multiple versions only for the definition in lib and for
+    DSO.  In static binaries we need memcpy before the initialization
+    happened.  */
+@@ -48,6 +52,26 @@ ENTRY(memcpy)
+ 1:    leal    __memcpy_ia32@GOTOFF(%ebx), %eax
+       testl   $bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%ebx)
+       jz      2f
++
++      /* This is an inlined access (magicfile, 0) syscall.  
++
++         Note that it clobbers %ebx, so we have to save/restore
++         it around the syscall.  */
++      mov     %ebx, %edx
++      leal    L(magicfile)@GOTOFF(%ebx), %ebx
++      xor     %ecx, %ecx
++      movl    $33, %eax
++      int     $0x80
++      mov     %edx, %ebx
++
++      /* If the file did not exist, then %eax will be -1..-4095 and we
++         do nothing special.  */
++      cmpl    $-4095, %eax
++      jae     4f
++
++      leal    __memmove_ssse3@GOTOFF(%ebx), %eax
++      jmp     2f
++4:
+       leal    __memcpy_ssse3@GOTOFF(%ebx), %eax
+       testl   $bit_Fast_Rep_String, FEATURE_OFFSET+index_Fast_Rep_String+__cpu_features@GOTOFF(%ebx)
+       jz      2f
diff --git a/src/patches/glibc/glibc-rh847932.patch b/src/patches/glibc/glibc-rh847932.patch
new file mode 100644 (file)
index 0000000..33ea851
--- /dev/null
@@ -0,0 +1,364 @@
+diff -Nrup a/stdlib/Makefile b/stdlib/Makefile
+--- a/stdlib/Makefile  2010-05-04 05:27:23.000000000 -0600
++++ b/stdlib/Makefile  2012-08-15 09:25:37.812443006 -0600
+@@ -71,7 +71,7 @@ tests                := tst-strtol tst-strtod testmb t
+                  tst-atof1 tst-atof2 tst-strtod2 tst-strtod3 tst-rand48-2 \
+                  tst-makecontext tst-strtod4 tst-strtod5 tst-qsort2       \
+                  tst-makecontext2 tst-strtod6 tst-unsetenv1               \
+-                 tst-makecontext3
++                 tst-makecontext3 tst-strtod-overflow
+ include ../Makeconfig
+diff -Nrup a/stdlib/strtod_l.c b/stdlib/strtod_l.c
+--- a/stdlib/strtod_l.c        2010-05-04 05:27:23.000000000 -0600
++++ b/stdlib/strtod_l.c        2012-08-15 09:34:29.550281346 -0600
+@@ -62,6 +62,7 @@ extern unsigned long long int ____strtou
+ #include <math.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <stdint.h>
+ /* The gmp headers need some configuration frobs.  */
+ #define HAVE_ALLOCA 1
+@@ -176,19 +177,19 @@ extern const mp_limb_t _tens_in_limb[MAX
+ /* Return a floating point number of the needed type according to the given
+    multi-precision number after possible rounding.  */
+ static FLOAT
+-round_and_return (mp_limb_t *retval, int exponent, int negative,
++round_and_return (mp_limb_t *retval, intmax_t exponent, int negative,
+                 mp_limb_t round_limb, mp_size_t round_bit, int more_bits)
+ {
+   if (exponent < MIN_EXP - 1)
+     {
+-      mp_size_t shift = MIN_EXP - 1 - exponent;
+-
+-      if (shift > MANT_DIG)
++      if (exponent < MIN_EXP - 1 - MANT_DIG)
+       {
+         __set_errno (EDOM);
+         return 0.0;
+       }
++      mp_size_t shift = MIN_EXP - 1 - exponent;
++
+       more_bits |= (round_limb & ((((mp_limb_t) 1) << round_bit) - 1)) != 0;
+       if (shift == MANT_DIG)
+       /* This is a special case to handle the very seldom case where
+@@ -235,6 +236,9 @@ round_and_return (mp_limb_t *retval, int
+       __set_errno (ERANGE);
+     }
++  if (exponent > MAX_EXP)
++    goto overflow;
++
+   if ((round_limb & (((mp_limb_t) 1) << round_bit)) != 0
+       && (more_bits || (retval[0] & 1) != 0
+         || (round_limb & ((((mp_limb_t) 1) << round_bit) - 1)) != 0))
+@@ -260,6 +264,7 @@ round_and_return (mp_limb_t *retval, int
+     }
+   if (exponent > MAX_EXP)
++  overflow:
+     return negative ? -FLOAT_HUGE_VAL : FLOAT_HUGE_VAL;
+   return MPN2FLOAT (retval, exponent, negative);
+@@ -273,7 +278,7 @@ round_and_return (mp_limb_t *retval, int
+    factor for the resulting number (see code) multiply by it.  */
+ static const STRING_TYPE *
+ str_to_mpn (const STRING_TYPE *str, int digcnt, mp_limb_t *n, mp_size_t *nsize,
+-          int *exponent
++          intmax_t *exponent
+ #ifndef USE_WIDE_CHAR
+           , const char *decimal, size_t decimal_len, const char *thousands
+ #endif
+@@ -337,7 +342,7 @@ str_to_mpn (const STRING_TYPE *str, int
+     }
+   while (--digcnt > 0);
+-  if (*exponent > 0 && cnt + *exponent <= MAX_DIG_PER_LIMB)
++  if (*exponent > 0 && *exponent <= MAX_DIG_PER_LIMB - cnt)
+     {
+       low *= _tens_in_limb[*exponent];
+       start = _tens_in_limb[cnt + *exponent];
+@@ -415,7 +420,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group
+ {
+   int negative;                       /* The sign of the number.  */
+   MPN_VAR (num);              /* MP representation of the number.  */
+-  int exponent;                       /* Exponent of the number.  */
++  intmax_t exponent;          /* Exponent of the number.  */
+   /* Numbers starting `0X' or `0x' have to be processed with base 16.  */
+   int base = 10;
+@@ -437,7 +442,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group
+   /* Points at the character following the integer and fractional digits.  */
+   const STRING_TYPE *expp;
+   /* Total number of digit and number of digits in integer part.  */
+-  int dig_no, int_no, lead_zero;
++  size_t dig_no, int_no, lead_zero;
+   /* Contains the last character read.  */
+   CHAR_TYPE c;
+@@ -769,7 +774,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group
+      are all or any is really a fractional digit will be decided
+      later.  */
+   int_no = dig_no;
+-  lead_zero = int_no == 0 ? -1 : 0;
++  lead_zero = int_no == 0 ? (size_t) -1 : 0;
+   /* Read the fractional digits.  A special case are the 'american
+      style' numbers like `16.' i.e. with decimal point but without
+@@ -791,12 +796,13 @@ ____STRTOF_INTERNAL (nptr, endptr, group
+            (base == 16 && ({ CHAR_TYPE lo = TOLOWER (c);
+                              lo >= L_('a') && lo <= L_('f'); })))
+       {
+-        if (c != L_('0') && lead_zero == -1)
++        if (c != L_('0') && lead_zero == (size_t) -1)
+           lead_zero = dig_no - int_no;
+         ++dig_no;
+         c = *++cp;
+       }
+     }
++  assert (dig_no <= (uintmax_t) INTMAX_MAX);
+   /* Remember start of exponent (if any).  */
+   expp = cp;
+@@ -819,24 +825,80 @@ ____STRTOF_INTERNAL (nptr, endptr, group
+       if (c >= L_('0') && c <= L_('9'))
+       {
+-        int exp_limit;
++        intmax_t exp_limit;
+         /* Get the exponent limit. */
+         if (base == 16)
+-          exp_limit = (exp_negative ?
+-                       -MIN_EXP + MANT_DIG + 4 * int_no :
+-                       MAX_EXP - 4 * int_no + 4 * lead_zero + 3);
++          {
++            if (exp_negative)
++              {
++                assert (int_no <= (uintmax_t) (INTMAX_MAX
++                                               + MIN_EXP - MANT_DIG) / 4);
++                exp_limit = -MIN_EXP + MANT_DIG + 4 * (intmax_t) int_no;
++              }
++            else
++              {
++                if (int_no)
++                  {
++                    assert (lead_zero == 0
++                            && int_no <= (uintmax_t) INTMAX_MAX / 4);
++                    exp_limit = MAX_EXP - 4 * (intmax_t) int_no + 3;
++                  }
++                else if (lead_zero == (size_t) -1)
++                  {
++                    /* The number is zero and this limit is
++                       arbitrary.  */
++                    exp_limit = MAX_EXP + 3;
++                  }
++                else
++                  {
++                    assert (lead_zero
++                            <= (uintmax_t) (INTMAX_MAX - MAX_EXP - 3) / 4);
++                    exp_limit = (MAX_EXP
++                                 + 4 * (intmax_t) lead_zero
++                                 + 3);
++                  }
++              }
++          }
+         else
+-          exp_limit = (exp_negative ?
+-                       -MIN_10_EXP + MANT_DIG + int_no :
+-                       MAX_10_EXP - int_no + lead_zero + 1);
++          {
++            if (exp_negative)
++              {
++                assert (int_no
++                        <= (uintmax_t) (INTMAX_MAX + MIN_10_EXP - MANT_DIG));
++                exp_limit = -MIN_10_EXP + MANT_DIG + (intmax_t) int_no;
++              }
++            else
++              {
++                if (int_no)
++                  {
++                    assert (lead_zero == 0
++                            && int_no <= (uintmax_t) INTMAX_MAX);
++                    exp_limit = MAX_10_EXP - (intmax_t) int_no + 1;
++                  }
++                else if (lead_zero == (size_t) -1)
++                  {
++                    /* The number is zero and this limit is
++                       arbitrary.  */
++                    exp_limit = MAX_10_EXP + 1;
++                  }
++                else
++                  {
++                    assert (lead_zero
++                            <= (uintmax_t) (INTMAX_MAX - MAX_10_EXP - 1));
++                    exp_limit = MAX_10_EXP + (intmax_t) lead_zero + 1;
++                  }
++              }
++          }
++
++        if (exp_limit < 0)
++          exp_limit = 0;
+         do
+           {
+-            exponent *= 10;
+-            exponent += c - L_('0');
+-
+-            if (__builtin_expect (exponent > exp_limit, 0))
++            if (__builtin_expect ((exponent > exp_limit / 10
++                                  || (exponent == exp_limit / 10
++                                      && c - L_('0') > exp_limit % 10)), 0))
+               /* The exponent is too large/small to represent a valid
+                  number.  */
+               {
+@@ -845,7 +907,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group
+                 /* We have to take care for special situation: a joker
+                    might have written "0.0e100000" which is in fact
+                    zero.  */
+-                if (lead_zero == -1)
++                if (lead_zero == (size_t) -1)
+                   result = negative ? -0.0 : 0.0;
+                 else
+                   {
+@@ -864,6 +926,9 @@ ____STRTOF_INTERNAL (nptr, endptr, group
+                 /* NOTREACHED */
+               }
++            exponent *= 10;
++            exponent += c - L_('0');
++
+             c = *++cp;
+           }
+         while (c >= L_('0') && c <= L_('9'));
+@@ -932,7 +997,14 @@ ____STRTOF_INTERNAL (nptr, endptr, group
+       }
+ #endif
+       startp += lead_zero + decimal_len;
+-      exponent -= base == 16 ? 4 * lead_zero : lead_zero;
++      assert (lead_zero <= (base == 16
++                          ? (uintmax_t) INTMAX_MAX / 4
++                          : (uintmax_t) INTMAX_MAX));
++      assert (lead_zero <= (base == 16
++                          ? ((uintmax_t) exponent
++                             - (uintmax_t) INTMAX_MIN) / 4
++                          : ((uintmax_t) exponent - (uintmax_t) INTMAX_MIN)));
++      exponent -= base == 16 ? 4 * (intmax_t) lead_zero : (intmax_t) lead_zero;
+       dig_no -= lead_zero;
+     }
+@@ -974,7 +1046,10 @@ ____STRTOF_INTERNAL (nptr, endptr, group
+       }
+       /* Adjust the exponent for the bits we are shifting in.  */
+-      exponent += bits - 1 + (int_no - 1) * 4;
++      assert (int_no <= (uintmax_t) (exponent < 0
++                                   ? (INTMAX_MAX - bits + 1) / 4
++                                   : (INTMAX_MAX - exponent - bits + 1) / 4));
++      exponent += bits - 1 + ((intmax_t) int_no - 1) * 4;
+       while (--dig_no > 0 && idx >= 0)
+       {
+@@ -1014,13 +1089,15 @@ ____STRTOF_INTERNAL (nptr, endptr, group
+      really integer digits or belong to the fractional part; i.e. we normalize
+      123e-2 to 1.23.  */
+   {
+-    register int incr = (exponent < 0 ? MAX (-int_no, exponent)
+-                       : MIN (dig_no - int_no, exponent));
++    register intmax_t incr = (exponent < 0
++                            ? MAX (-(intmax_t) int_no, exponent)
++                            : MIN ((intmax_t) dig_no - (intmax_t) int_no,
++                                   exponent));
+     int_no += incr;
+     exponent -= incr;
+   }
+-  if (__builtin_expect (int_no + exponent > MAX_10_EXP + 1, 0))
++  if (__builtin_expect (exponent > MAX_10_EXP + 1 - (intmax_t) int_no, 0))
+     {
+       __set_errno (ERANGE);
+       return negative ? -FLOAT_HUGE_VAL : FLOAT_HUGE_VAL;
+@@ -1205,7 +1282,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group
+        digits we should have enough bits for the result.  The remaining
+        decimal digits give us the information that more bits are following.
+        This can be used while rounding.  (Two added as a safety margin.)  */
+-    if (dig_no - int_no > (MANT_DIG - bits + 2) / 3 + 2)
++    if ((intmax_t) dig_no > (intmax_t) int_no + (MANT_DIG - bits + 2) / 3 + 2)
+       {
+       dig_no = int_no + (MANT_DIG - bits + 2) / 3 + 2;
+       more_bits = 1;
+@@ -1213,7 +1290,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group
+     else
+       more_bits = 0;
+-    neg_exp = dig_no - int_no - exponent;
++    neg_exp = (intmax_t) dig_no - (intmax_t) int_no - exponent;
+     /* Construct the denominator.  */
+     densize = 0;
+@@ -1491,7 +1568,9 @@ ____STRTOF_INTERNAL (nptr, endptr, group
+                         register int i;
+                         (void) __mpn_lshift (&retval[used
+                                                      / BITS_PER_MP_LIMB],
+-                                             retval, RETURN_LIMB_SIZE,
++                                             retval,
++                                             (RETURN_LIMB_SIZE
++                                              - used / BITS_PER_MP_LIMB),
+                                              used % BITS_PER_MP_LIMB);
+                         for (i = used / BITS_PER_MP_LIMB - 1; i >= 0; --i)
+                           retval[i] = 0;
+diff -Nrup a/stdlib/tst-strtod-overflow.c b/stdlib/tst-strtod-overflow.c
+--- a/stdlib/tst-strtod-overflow.c     1969-12-31 17:00:00.000000000 -0700
++++ b/stdlib/tst-strtod-overflow.c     2012-08-15 09:25:01.098592764 -0600
+@@ -0,0 +1,48 @@
++/* Test for integer/buffer overflow in strtod.
++   Copyright (C) 2012 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++
++#define EXPONENT "e-2147483649"
++#define SIZE 214748364
++
++static int
++do_test (void)
++{
++  char *p = malloc (1 + SIZE + sizeof (EXPONENT));
++  if (p == NULL)
++    {
++      puts ("malloc failed, cannot test for overflow");
++      return 0;
++    }
++  p[0] = '1';
++  memset (p + 1, '0', SIZE);
++  memcpy (p + 1 + SIZE, EXPONENT, sizeof (EXPONENT));
++  double d = strtod (p, NULL);
++  if (d != 0)
++    {
++      printf ("strtod returned wrong value: %a\n", d);
++      return 1;
++    }
++  return 0;
++}
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
diff --git a/src/patches/glibc/glibc-rh848082.patch b/src/patches/glibc/glibc-rh848082.patch
new file mode 100644 (file)
index 0000000..dfb96bf
--- /dev/null
@@ -0,0 +1,88 @@
+commit 4f031072a5055abd83717820b59efdaa463d5853
+Author: Ulrich Drepper <drepper@gmail.com>
+Date:   Sat May 28 16:59:30 2011 -0400
+
+    Handle failure of _nl_explode_name in all cases
+
+ 2011-05-28  Ulrich Drepper  <drepper@gmail.com>
+       * locale/findlocale.c (_nl_find_locale): Return right away if
+       _nl_explode_name failed.
+       * locale/programs/locarchive.c (add_locale_to_archive): Likewise.
+
+diff --git a/locale/findlocale.c b/locale/findlocale.c
+index 6b88c96..2fec9a7 100644
+--- a/locale/findlocale.c
++++ b/locale/findlocale.c
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996-2001, 2002, 2003, 2006, 2010 Free Software Foundation, Inc.
++/* Copyright (C) 1996-2003, 2006, 2010, 2011 Free Software Foundation, Inc.
+    This file is part of the GNU C Library.
+    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
+@@ -140,6 +140,9 @@ _nl_find_locale (const char *locale_path, size_t locale_path_len,
+    */
+   mask = _nl_explode_name (loc_name, &language, &modifier, &territory,
+                          &codeset, &normalized_codeset);
++  if (mask == -1)
++    /* Memory allocate problem.  */
++    return NULL;
+   /* If exactly this locale was already asked for we have an entry with
+      the complete name.  */
+diff --git a/locale/programs/locarchive.c b/locale/programs/locarchive.c
+index 85ba77d..e95bcf1 100644
+--- a/locale/programs/locarchive.c
++++ b/locale/programs/locarchive.c
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2002, 2003, 2005, 2007, 2009 Free Software Foundation, Inc.
++/* Copyright (C) 2002,2003,2005,2007,2009,2011 Free Software Foundation, Inc.
+    This file is part of the GNU C Library.
+    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
+@@ -1079,6 +1079,8 @@ add_locale_to_archive (ah, name, data, replace)
+   int mask = _nl_explode_name (strdupa (name),
+                              &language, &modifier, &territory,
+                              &codeset, &normalized_codeset);
++  if (mask == -1)
++    return -1;
+   if (mask & XPG_NORM_CODESET)
+     /* This name contains a codeset in unnormalized form.
+@@ -1128,6 +1130,7 @@ add_locale_to_archive (ah, name, data, replace)
+   /* Now read the locale.alias files looking for lines whose
+      right hand side matches our name after normalization.  */
++  int result = 0;
+   if (alias_file != NULL)
+     {
+       FILE *fp;
+@@ -1207,6 +1210,11 @@ add_locale_to_archive (ah, name, data, replace)
+                                                    &rhs_territory,
+                                                    &rhs_codeset,
+                                                    &rhs_normalized_codeset);
++                  if (rhs_mask == 1)
++                    {
++                      result = -1;
++                      goto out;
++                    }
+                   if (!strcmp (language, rhs_language)
+                       && ((rhs_mask & XPG_CODESET)
+                           /* He has a codeset, it must match normalized.  */
+@@ -1240,6 +1248,7 @@ add_locale_to_archive (ah, name, data, replace)
+           }
+       }
++    out:
+       fclose (fp);
+     }
+@@ -1248,7 +1257,7 @@ add_locale_to_archive (ah, name, data, replace)
+   if (mask & XPG_NORM_CODESET)
+     free ((char *) normalized_codeset);
+-  return 0;
++  return result;
+ }
diff --git a/src/patches/glibc/glibc-rh849203.patch b/src/patches/glibc/glibc-rh849203.patch
new file mode 100644 (file)
index 0000000..ea50593
--- /dev/null
@@ -0,0 +1,195 @@
+diff -Nrup a/intl/Makefile b/intl/Makefile
+--- a/intl/Makefile    2010-05-04 05:27:23.000000000 -0600
++++ b/intl/Makefile    2012-08-17 14:40:00.457226629 -0600
+@@ -74,6 +74,16 @@ ifneq (no,$(PERL))
+ tests: $(objpfx)mtrace-tst-gettext
+ endif
+ endif
++
++# Multiple tests use this data.  Create it once to avoid racing and
++# spurious test failures.
++codeset_mo = $(objpfx)domaindir/de_DE/LC_MESSAGES/codeset.mo
++
++$(codeset_mo):
++      $(make-target-directory)
++      msgfmt -o $@T tstcodeset.po
++      mv -f $@T $@
++
+ $(objpfx)mtrace-tst-gettext: $(objpfx)tst-gettext.out
+       $(common-objpfx)malloc/mtrace $(objpfx)tst-gettext.mtrace > $@
+ $(objpfx)tst-gettext.out: tst-gettext.sh $(objpfx)tst-gettext
+@@ -83,16 +93,14 @@ $(objpfx)tst-translit.out: tst-translit.
+       $(SHELL) -e $< $(common-objpfx) $(common-objpfx)intl/
+ $(objpfx)tst-gettext2.out: tst-gettext2.sh $(objpfx)tst-gettext2
+       $(SHELL) -e $< $(common-objpfx) $(common-objpfx)intl/
+-$(objpfx)tst-codeset.out: tst-codeset.sh $(objpfx)tst-codeset
+-      $(SHELL) -e $< $(common-objpfx) $(common-objpfx)intl/
+-$(objpfx)tst-gettext3.out: tst-gettext3.sh $(objpfx)tst-gettext3
+-      $(SHELL) -e $< $(common-objpfx) $(common-objpfx)intl/
+ $(objpfx)tst-gettext4.out: tst-gettext4.sh $(objpfx)tst-gettext4
+       $(SHELL) -e $< $(common-objpfx) '$(run-program-prefix)' $(common-objpfx)intl/
+-$(objpfx)tst-gettext5.out: tst-gettext5.sh $(objpfx)tst-gettext5
+-      $(SHELL) -e $< $(common-objpfx) '$(run-program-prefix)' $(common-objpfx)intl/
+ $(objpfx)tst-gettext6.out: tst-gettext6.sh $(objpfx)tst-gettext6
+       $(SHELL) -e $< $(common-objpfx) '$(run-program-prefix)' $(common-objpfx)intl/
++
++$(objpfx)tst-codeset.out: $(codeset_mo)
++$(objpfx)tst-gettext3.out: $(codeset_mo)
++$(objpfx)tst-gettext5.out: $(codeset_mo)
+ endif
+ endif
+@@ -109,6 +117,11 @@ CFLAGS-tst-gettext4.c = -DOBJPFX=\"$(obj
+ CFLAGS-tst-gettext5.c = -DOBJPFX=\"$(objpfx)\"
+ CFLAGS-tst-gettext6.c = -DOBJPFX=\"$(objpfx)\"
++LOCPATH-ENV = LOCPATH=$(common-objpfx)localedata
++tst-codeset-ENV = $(LOCPATH-ENV)
++tst-gettext3-ENV = $(LOCPATH-ENV)
++tst-gettext5-ENV = $(LOCPATH-ENV)
++
+ ifeq ($(have-thread-library),yes)
+ ifeq (yes,$(build-shared))
+ $(addprefix $(objpfx),$(multithread-test-srcs)): $(shared-thread-library)
+diff -Nrup a/intl/tst-codeset.sh b/intl/tst-codeset.sh
+--- a/intl/tst-codeset.sh      2010-05-04 05:27:23.000000000 -0600
++++ b/intl/tst-codeset.sh      1969-12-31 17:00:00.000000000 -0700
+@@ -1,43 +0,0 @@
+-#! /bin/sh
+-# Test of bind_textdomain_codeset.
+-# Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc.
+-# This file is part of the GNU C Library.
+-#
+-
+-# The GNU C Library is free software; you can redistribute it and/or
+-# modify it under the terms of the GNU Lesser General Public
+-# License as published by the Free Software Foundation; either
+-# version 2.1 of the License, or (at your option) any later version.
+-
+-# The GNU C Library is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY; without even the implied warranty of
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+-# Lesser General Public License for more details.
+-
+-# You should have received a copy of the GNU Lesser General Public
+-# License along with the GNU C Library; if not, write to the Free
+-# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+-# 02111-1307 USA.
+-
+-common_objpfx=$1
+-objpfx=$2
+-
+-LC_ALL=C
+-export LC_ALL
+-
+-# Generate the test data.
+-msgfmt -o ${objpfx}codeset.mo.$$ tstcodeset.po || exit
+-# Create the domain directories.
+-mkdir -p ${objpfx}domaindir/de_DE/LC_MESSAGES
+-# Populate them.
+-mv -f ${objpfx}codeset.mo.$$ ${objpfx}domaindir/de_DE/LC_MESSAGES/codeset.mo
+-
+-GCONV_PATH=${common_objpfx}iconvdata
+-export GCONV_PATH
+-LOCPATH=${common_objpfx}localedata
+-export LOCPATH
+-
+-${common_objpfx}elf/ld.so --library-path $common_objpfx \
+-${objpfx}tst-codeset > ${objpfx}tst-codeset.out
+-
+-exit $?
+diff -Nrup a/intl/tst-gettext3.sh b/intl/tst-gettext3.sh
+--- a/intl/tst-gettext3.sh     2010-05-04 05:27:23.000000000 -0600
++++ b/intl/tst-gettext3.sh     1969-12-31 17:00:00.000000000 -0700
+@@ -1,44 +0,0 @@
+-#! /bin/sh
+-# Test that the gettext() results come out in the correct encoding for
+-# locales that differ only in their encoding.
+-# Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc.
+-# This file is part of the GNU C Library.
+-#
+-
+-# The GNU C Library is free software; you can redistribute it and/or
+-# modify it under the terms of the GNU Lesser General Public
+-# License as published by the Free Software Foundation; either
+-# version 2.1 of the License, or (at your option) any later version.
+-
+-# The GNU C Library is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY; without even the implied warranty of
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+-# Lesser General Public License for more details.
+-
+-# You should have received a copy of the GNU Lesser General Public
+-# License along with the GNU C Library; if not, write to the Free
+-# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+-# 02111-1307 USA.
+-
+-common_objpfx=$1
+-objpfx=$2
+-
+-LC_ALL=C
+-export LC_ALL
+-
+-# Generate the test data.
+-msgfmt -o ${objpfx}codeset.mo.$$ tstcodeset.po || exit
+-# Create the domain directories.
+-mkdir -p ${objpfx}domaindir/de_DE/LC_MESSAGES
+-# Populate them.
+-mv -f ${objpfx}codeset.mo.$$ ${objpfx}domaindir/de_DE/LC_MESSAGES/codeset.mo
+-
+-GCONV_PATH=${common_objpfx}iconvdata
+-export GCONV_PATH
+-LOCPATH=${common_objpfx}localedata
+-export LOCPATH
+-
+-${common_objpfx}elf/ld.so --library-path $common_objpfx \
+-${objpfx}tst-gettext3 > ${objpfx}tst-gettext3.out
+-
+-exit $?
+diff -Nrup a/intl/tst-gettext5.sh b/intl/tst-gettext5.sh
+--- a/intl/tst-gettext5.sh     2010-05-04 05:27:23.000000000 -0600
++++ b/intl/tst-gettext5.sh     1969-12-31 17:00:00.000000000 -0700
+@@ -1,43 +0,0 @@
+-#! /bin/sh
+-# Test that gettext() in multithreaded applications works correctly if
+-# different threads operate in different locales referring to the same
+-# catalog file but with different encodings.
+-# Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc.
+-# This file is part of the GNU C Library.
+-#
+-
+-# The GNU C Library is free software; you can redistribute it and/or
+-# modify it under the terms of the GNU Lesser General Public
+-# License as published by the Free Software Foundation; either
+-# version 2.1 of the License, or (at your option) any later version.
+-
+-# The GNU C Library is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY; without even the implied warranty of
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+-# Lesser General Public License for more details.
+-
+-# You should have received a copy of the GNU Lesser General Public
+-# License along with the GNU C Library; if not, write to the Free
+-# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+-# 02111-1307 USA.
+-
+-common_objpfx=$1
+-run_program_prefix=$2
+-objpfx=$3
+-
+-LC_ALL=C
+-export LC_ALL
+-
+-# Create the domain directories.
+-mkdir -p ${objpfx}domaindir/de_DE/LC_MESSAGES
+-# Populate them.
+-msgfmt -o ${objpfx}domaindir/de_DE/LC_MESSAGES/codeset.mo tstcodeset.po
+-
+-GCONV_PATH=${common_objpfx}iconvdata
+-export GCONV_PATH
+-LOCPATH=${common_objpfx}localedata
+-export LOCPATH
+-
+-${run_program_prefix} ${objpfx}tst-gettext5 > ${objpfx}tst-gettext5.out
+-
+-exit $?
diff --git a/src/patches/glibc/glibc-rh849651.patch b/src/patches/glibc/glibc-rh849651.patch
new file mode 100644 (file)
index 0000000..97a5144
--- /dev/null
@@ -0,0 +1,343 @@
+diff -Nrup a/sysdeps/x86_64/fpu/e_expf.S b/sysdeps/x86_64/fpu/e_expf.S
+--- a/sysdeps/x86_64/fpu/e_expf.S      1969-12-31 17:00:00.000000000 -0700
++++ b/sysdeps/x86_64/fpu/e_expf.S      2012-08-20 09:47:15.551971545 -0600
+@@ -0,0 +1,339 @@
++/* Optimized __ieee754_expf function.
++   Copyright (C) 2012 Free Software Foundation, Inc.
++   Contributed by Intel Corporation.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++
++/* Short algorithm description:
++ *
++ *  Let K = 64 (table size).
++ *       e^x  = 2^(x/log(2)) = 2^n * T[j] * (1 + P(y))
++ *  where
++ *       x = m*log(2)/K + y,    y in [0.0..log(2)/K]
++ *       m = n*K + j,           m,n,j - signed integer, j in [0..K-1]
++ *       values of 2^(j/K) are tabulated as T[j].
++ *
++ *       P(y) is a minimax polynomial approximation of expf(x)-1
++ *       on small interval [0.0..log(2)/K].
++ *
++ *       P(y) = P3*y*y*y*y + P2*y*y*y + P1*y*y + P0*y, calculated as
++ *       z = y*y;    P(y) = (P3*z + P1)*z + (P2*z + P0)*y
++ *
++ * Special cases:
++ *  expf(NaN) = NaN
++ *  expf(+INF) = +INF
++ *  expf(-INF) = 0
++ *  expf(x) = 1 for subnormals
++ *  for finite argument, only expf(0)=1 is exact
++ *  expf(x) overflows if x>88.7228317260742190
++ *  expf(x) underflows if x<-103.972076416015620
++ */
++
++      .text
++ENTRY(__ieee754_expf)
++      /* Input: single precision x in %xmm0 */
++      cvtss2sd        %xmm0, %xmm1    /* Convert x to double precision */
++      movd    %xmm0, %ecx             /* Copy x */
++      movsd   L(DP_KLN2)(%rip), %xmm2 /* DP K/log(2) */
++      movsd   L(DP_P2)(%rip), %xmm3   /* DP P2 */
++      movl    %ecx, %eax              /* x */
++      mulsd   %xmm1, %xmm2            /* DP x*K/log(2) */
++      andl    $0x7fffffff, %ecx       /* |x| */
++      lea     L(DP_T)(%rip), %rsi     /* address of table T[j] */
++      cmpl    $0x42ad496b, %ecx       /* |x|<125*log(2) ? */
++      movsd   L(DP_P3)(%rip), %xmm4   /* DP P3 */
++      addsd   L(DP_RS)(%rip), %xmm2   /* DP x*K/log(2)+RS */
++      jae     L(special_paths)
++
++      /* Here if |x|<125*log(2) */
++      cmpl    $0x31800000, %ecx       /* |x|<2^(-28) ? */
++      jb      L(small_arg)
++
++      /* Main path: here if 2^(-28)<=|x|<125*log(2) */
++      cvtsd2ss        %xmm2, %xmm2    /* SP x*K/log(2)+RS */
++      movd    %xmm2, %eax             /* bits of n*K+j with trash */
++      subss   L(SP_RS)(%rip), %xmm2   /* SP t=round(x*K/log(2)) */
++      movl    %eax, %edx              /* n*K+j with trash */
++      cvtss2sd        %xmm2, %xmm2    /* DP t */
++      andl    $0x3f, %eax             /* bits of j */
++      mulsd   L(DP_NLN2K)(%rip), %xmm2/* DP -t*log(2)/K */
++      andl    $0xffffffc0, %edx       /* bits of n */
++#ifdef __AVX__
++      vaddsd  %xmm1, %xmm2, %xmm0     /* DP y=x-t*log(2)/K */
++      vmulsd  %xmm0, %xmm0, %xmm2     /* DP z=y*y */
++#else
++      addsd   %xmm1, %xmm2            /* DP y=x-t*log(2)/K */
++      movaps  %xmm2, %xmm0            /* DP y */
++      mulsd   %xmm2, %xmm2            /* DP z=y*y */
++#endif
++      mulsd   %xmm2, %xmm4            /* DP P3*z */
++      addl    $0x1fc0, %edx           /* bits of n + SP exponent bias */
++      mulsd   %xmm2, %xmm3            /* DP P2*z */
++      shll    $17, %edx               /* SP 2^n */
++      addsd   L(DP_P1)(%rip), %xmm4   /* DP P3*z+P1 */
++      addsd   L(DP_P0)(%rip), %xmm3   /* DP P2*z+P0 */
++      movd    %edx, %xmm1             /* SP 2^n */
++      mulsd   %xmm2, %xmm4            /* DP (P3*z+P1)*z */
++      mulsd   %xmm3, %xmm0            /* DP (P2*z+P0)*y */
++      addsd   %xmm4, %xmm0            /* DP P(y) */
++      mulsd   (%rsi,%rax,8), %xmm0    /* DP P(y)*T[j] */
++      addsd   (%rsi,%rax,8), %xmm0    /* DP T[j]*(P(y)+1) */
++      cvtsd2ss        %xmm0, %xmm0    /* SP T[j]*(P(y)+1) */
++      mulss   %xmm1, %xmm0            /* SP result=2^n*(T[j]*(P(y)+1)) */
++      ret
++
++      .p2align        4
++L(small_arg):
++      /* Here if 0<=|x|<2^(-28) */
++      addss   L(SP_ONE)(%rip), %xmm0  /* 1.0 + x */
++      /* Return 1.0 with inexact raised, except for x==0 */
++      ret
++
++      .p2align        4
++L(special_paths):
++      /* Here if 125*log(2)<=|x| */
++      shrl    $31, %eax               /* Get sign bit of x, and depending on it: */
++      lea     L(SP_RANGE)(%rip), %rdx /* load over/underflow bound */
++      cmpl    (%rdx,%rax,4), %ecx     /* |x|<under/overflow bound ? */
++      jbe     L(near_under_or_overflow)
++
++      /* Here if |x|>under/overflow bound */
++      cmpl    $0x7f800000, %ecx       /* |x| is finite ? */
++      jae     L(arg_inf_or_nan)
++
++      /* Here if |x|>under/overflow bound, and x is finite */
++      testq   %rax, %rax              /* sign of x nonzero ? */
++      je      L(res_overflow)
++
++      /* Here if -inf<x<underflow bound (x<0) */
++      movss   L(SP_SMALL)(%rip), %xmm0/* load small value 2^(-100) */
++      mulss   %xmm0, %xmm0            /* Return underflowed result (zero or subnormal) */
++      ret
++
++      .p2align        4
++L(res_overflow):
++      /* Here if overflow bound<x<inf (x>0) */
++      movss   L(SP_LARGE)(%rip), %xmm0/* load large value 2^100 */
++      mulss   %xmm0, %xmm0            /* Return overflowed result (Inf or max normal) */
++      ret
++
++      .p2align        4
++L(arg_inf_or_nan):
++      /* Here if |x| is Inf or NAN */
++      jne     L(arg_nan)      /* |x| is Inf ? */
++
++      /* Here if |x| is Inf */
++      lea     L(SP_INF_0)(%rip), %rdx /* depending on sign of x: */
++      movss   (%rdx,%rax,4), %xmm0    /* return zero or Inf */
++      ret
++
++      .p2align        4
++L(arg_nan):
++      /* Here if |x| is NaN */
++      addss   %xmm0, %xmm0            /* Return x+x (raise invalid) */
++      ret
++
++      .p2align        4
++L(near_under_or_overflow):
++      /* Here if 125*log(2)<=|x|<under/overflow bound */
++      cvtsd2ss        %xmm2, %xmm2    /* SP x*K/log(2)+RS */
++      movd    %xmm2, %eax             /* bits of n*K+j with trash */
++      subss   L(SP_RS)(%rip), %xmm2   /* SP t=round(x*K/log(2)) */
++      movl    %eax, %edx              /* n*K+j with trash */
++      cvtss2sd        %xmm2, %xmm2    /* DP t */
++      andl    $0x3f, %eax             /* bits of j */
++      mulsd   L(DP_NLN2K)(%rip), %xmm2/* DP -t*log(2)/K */
++      andl    $0xffffffc0, %edx       /* bits of n */
++#ifdef __AVX__
++      vaddsd  %xmm1, %xmm2, %xmm0     /* DP y=x-t*log(2)/K */
++      vmulsd  %xmm0, %xmm0, %xmm2     /* DP z=y*y */
++#else
++      addsd   %xmm1, %xmm2            /* DP y=x-t*log(2)/K */
++      movaps  %xmm2, %xmm0            /* DP y */
++      mulsd   %xmm2, %xmm2            /* DP z=y*y */
++#endif
++      mulsd   %xmm2, %xmm4            /* DP P3*z */
++      addl    $0xffc0, %edx           /* bits of n + DP exponent bias */
++      mulsd   %xmm2, %xmm3            /* DP P2*z */
++      shlq    $46, %rdx               /* DP 2^n */
++      addsd   L(DP_P1)(%rip), %xmm4   /* DP P3*z+P1 */
++      addsd   L(DP_P0)(%rip), %xmm3   /* DP P2*z+P0 */
++      movd    %rdx, %xmm1             /* DP 2^n */
++      mulsd   %xmm2, %xmm4            /* DP (P3*z+P1)*z */
++      mulsd   %xmm3, %xmm0            /* DP (P2*z+P0)*y */
++      addsd   %xmm4, %xmm0            /* DP P(y) */
++      mulsd   (%rsi,%rax,8), %xmm0    /* DP P(y)*T[j] */
++      addsd   (%rsi,%rax,8), %xmm0    /* DP T[j]*(P(y)+1) */
++      mulsd   %xmm1, %xmm0            /* DP result=2^n*(T[j]*(P(y)+1)) */
++      cvtsd2ss        %xmm0, %xmm0    /* convert result to single precision */
++      ret
++END(__ieee754_expf)
++
++      .section .rodata, "a"
++      .p2align 3
++L(DP_T): /* table of double precision values 2^(j/K) for j=[0..K-1] */
++      .long   0x00000000, 0x3ff00000
++      .long   0x3e778061, 0x3ff02c9a
++      .long   0xd3158574, 0x3ff059b0
++      .long   0x18759bc8, 0x3ff08745
++      .long   0x6cf9890f, 0x3ff0b558
++      .long   0x32d3d1a2, 0x3ff0e3ec
++      .long   0xd0125b51, 0x3ff11301
++      .long   0xaea92de0, 0x3ff1429a
++      .long   0x3c7d517b, 0x3ff172b8
++      .long   0xeb6fcb75, 0x3ff1a35b
++      .long   0x3168b9aa, 0x3ff1d487
++      .long   0x88628cd6, 0x3ff2063b
++      .long   0x6e756238, 0x3ff2387a
++      .long   0x65e27cdd, 0x3ff26b45
++      .long   0xf51fdee1, 0x3ff29e9d
++      .long   0xa6e4030b, 0x3ff2d285
++      .long   0x0a31b715, 0x3ff306fe
++      .long   0xb26416ff, 0x3ff33c08
++      .long   0x373aa9cb, 0x3ff371a7
++      .long   0x34e59ff7, 0x3ff3a7db
++      .long   0x4c123422, 0x3ff3dea6
++      .long   0x21f72e2a, 0x3ff4160a
++      .long   0x6061892d, 0x3ff44e08
++      .long   0xb5c13cd0, 0x3ff486a2
++      .long   0xd5362a27, 0x3ff4bfda
++      .long   0x769d2ca7, 0x3ff4f9b2
++      .long   0x569d4f82, 0x3ff5342b
++      .long   0x36b527da, 0x3ff56f47
++      .long   0xdd485429, 0x3ff5ab07
++      .long   0x15ad2148, 0x3ff5e76f
++      .long   0xb03a5585, 0x3ff6247e
++      .long   0x82552225, 0x3ff66238
++      .long   0x667f3bcd, 0x3ff6a09e
++      .long   0x3c651a2f, 0x3ff6dfb2
++      .long   0xe8ec5f74, 0x3ff71f75
++      .long   0x564267c9, 0x3ff75feb
++      .long   0x73eb0187, 0x3ff7a114
++      .long   0x36cf4e62, 0x3ff7e2f3
++      .long   0x994cce13, 0x3ff82589
++      .long   0x9b4492ed, 0x3ff868d9
++      .long   0x422aa0db, 0x3ff8ace5
++      .long   0x99157736, 0x3ff8f1ae
++      .long   0xb0cdc5e5, 0x3ff93737
++      .long   0x9fde4e50, 0x3ff97d82
++      .long   0x82a3f090, 0x3ff9c491
++      .long   0x7b5de565, 0x3ffa0c66
++      .long   0xb23e255d, 0x3ffa5503
++      .long   0x5579fdbf, 0x3ffa9e6b
++      .long   0x995ad3ad, 0x3ffae89f
++      .long   0xb84f15fb, 0x3ffb33a2
++      .long   0xf2fb5e47, 0x3ffb7f76
++      .long   0x904bc1d2, 0x3ffbcc1e
++      .long   0xdd85529c, 0x3ffc199b
++      .long   0x2e57d14b, 0x3ffc67f1
++      .long   0xdcef9069, 0x3ffcb720
++      .long   0x4a07897c, 0x3ffd072d
++      .long   0xdcfba487, 0x3ffd5818
++      .long   0x03db3285, 0x3ffda9e6
++      .long   0x337b9b5f, 0x3ffdfc97
++      .long   0xe78b3ff6, 0x3ffe502e
++      .long   0xa2a490da, 0x3ffea4af
++      .long   0xee615a27, 0x3ffefa1b
++      .long   0x5b6e4540, 0x3fff5076
++      .long   0x819e90d8, 0x3fffa7c1
++      .type L(DP_T), @object
++      ASM_SIZE_DIRECTIVE(L(DP_T))
++
++      .section .rodata.cst8,"aM",@progbits,8
++      .p2align 3
++L(DP_KLN2): /* double precision K/log(2) */
++      .long   0x652b82fe, 0x40571547
++      .type L(DP_KLN2), @object
++      ASM_SIZE_DIRECTIVE(L(DP_KLN2))
++
++      .p2align 3
++L(DP_NLN2K): /* double precision -log(2)/K */
++      .long   0xfefa39ef, 0xbf862e42
++      .type L(DP_NLN2K), @object
++      ASM_SIZE_DIRECTIVE(L(DP_NLN2K))
++
++      .p2align 3
++L(DP_RS): /* double precision 2^23+2^22 */
++      .long   0x00000000, 0x41680000
++      .type L(DP_RS), @object
++      ASM_SIZE_DIRECTIVE(L(DP_RS))
++
++      .p2align 3
++L(DP_P3): /* double precision polynomial coefficient P3 */
++      .long   0xeb78fa85, 0x3fa56420
++      .type L(DP_P3), @object
++      ASM_SIZE_DIRECTIVE(L(DP_P3))
++
++      .p2align 3
++L(DP_P1): /* double precision polynomial coefficient P1 */
++      .long   0x008d6118, 0x3fe00000
++      .type L(DP_P1), @object
++      ASM_SIZE_DIRECTIVE(L(DP_P1))
++
++      .p2align 3
++L(DP_P2): /* double precision polynomial coefficient P2 */
++      .long   0xda752d4f, 0x3fc55550
++      .type L(DP_P2), @object
++      ASM_SIZE_DIRECTIVE(L(DP_P2))
++
++      .p2align 3
++L(DP_P0): /* double precision polynomial coefficient P0 */
++      .long   0xffffe7c6, 0x3fefffff
++      .type L(DP_P0), @object
++      ASM_SIZE_DIRECTIVE(L(DP_P0))
++
++      .p2align 2
++L(SP_RANGE): /* single precision overflow/underflow bounds */
++      .long   0x42b17217      /* if x>this bound, then result overflows */
++      .long   0x42cff1b4      /* if x<this bound, then result underflows */
++      .type L(SP_RANGE), @object
++      ASM_SIZE_DIRECTIVE(L(SP_RANGE))
++
++      .p2align 2
++L(SP_INF_0):
++      .long   0x7f800000      /* single precision Inf */
++      .long   0               /* single precision zero */
++      .type L(SP_INF_0), @object
++      ASM_SIZE_DIRECTIVE(L(SP_INF_0))
++
++      .section .rodata.cst4,"aM",@progbits,4
++      .p2align 2
++L(SP_RS): /* single precision 2^23+2^22 */
++      .long   0x4b400000
++      .type L(SP_RS), @object
++      ASM_SIZE_DIRECTIVE(L(SP_RS))
++
++      .p2align 2
++L(SP_SMALL): /* single precision small value 2^(-100) */
++      .long   0x0d800000
++      .type L(SP_SMALL), @object
++      ASM_SIZE_DIRECTIVE(L(SP_SMALL))
++
++      .p2align 2
++L(SP_LARGE): /* single precision large value 2^100 */
++      .long   0x71800000
++      .type L(SP_LARGE), @object
++      ASM_SIZE_DIRECTIVE(L(SP_LARGE))
++
++      .p2align 2
++L(SP_ONE): /* single precision 1.0 */
++      .long   0x3f800000
++      .type L(SP_ONE), @object
++      ASM_SIZE_DIRECTIVE(L(SP_ONE))
++
++strong_alias (__ieee754_expf, __expf_finite)
diff --git a/src/patches/glibc/glibc-rh852445.patch b/src/patches/glibc/glibc-rh852445.patch
new file mode 100644 (file)
index 0000000..3c4e13f
--- /dev/null
@@ -0,0 +1,105 @@
+From libc-alpha-return-31329-listarch-libc-alpha=sources dot redhat dot com at sourceware dot org Wed Jul 11 11:36:39 2012
+Return-Path: <libc-alpha-return-31329-listarch-libc-alpha=sources dot redhat dot com at sourceware dot org>
+Delivered-To: listarch-libc-alpha at sources dot redhat dot com
+Received: (qmail 15677 invoked by alias); 11 Jul 2012 11:36:39 -0000
+Received: (qmail 15654 invoked by uid 22791); 11 Jul 2012 11:36:37 -0000
+X-SWARE-Spam-Status: No, hits=-4.3 required=5.0
+       tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,KHOP_RCVD_TRUST,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE
+X-Spam-Check-By: sourceware.org
+Date: Wed, 11 Jul 2012 21:06:06 +0930
+From: Alan Modra <amodra at gmail dot com>
+To: libc-alpha at sourceware dot org
+Cc: rsa at linux dot vnet dot ibm dot com
+Subject: powerpc pthread_once bug fix
+Message-ID: <20120711113606.GM3117@bubble.grove.modra.org>
+MIME-Version: 1.0
+Content-Type: text/plain; charset=us-ascii
+Content-Disposition: inline
+User-Agent: Mutt/1.5.21 (2010-09-15)
+Mailing-List: contact libc-alpha-help at sourceware dot org; run by ezmlm
+Precedence: bulk
+List-Id: <libc-alpha.sourceware.org>
+List-Subscribe: <mailto:libc-alpha-subscribe at sourceware dot org>
+List-Archive: <http://sourceware.org/ml/libc-alpha/>
+List-Post: <mailto:libc-alpha at sourceware dot org>
+List-Help: <mailto:libc-alpha-help at sourceware dot org>, <http://sourceware dot org/ml/#faqs>
+Sender: libc-alpha-owner at sourceware dot org
+Delivered-To: mailing list libc-alpha at sourceware dot org
+
+This fixes some bugs in the powerpc pthread_once code.  Ref
+gcc.gnu.org/bugzilla/show_bug.cgi?id=52839#c10
+
+Release barriers are needed to ensure any memory written by
+init_routine is seen by other threads before *once_control changes.
+In the case of clear_once_control we need to flush any partially
+written state.
+
+2012-06-28  Alan Modra  <amodra@gmail.com>
+
+       * sysdeps/unix/sysv/linux/powerpc/pthread_once.c (__pthread_once):
+       Add release barrier before setting once_control to say
+       initialisation is done.  Add hints on lwarx.  Use macro in
+       place of isync.
+       (clear_once_control): Add release barrier.
+
+[ This was slightly edited -- the constraint for operand 0 in the last asm was changed
+  from "=&r" to "=&b" as using r0 in that context results in a load immediate 1 into
+  the target rather than incrementing the target. ]
+
+diff --git a/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c b/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c
+index 4e3d7bd..bb1ebf2 100644
+--- a/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c
++++ b/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c
+@@ -28,6 +28,7 @@ clear_once_control (void *arg)
+ {
+   pthread_once_t *once_control = (pthread_once_t *) arg;
++  __asm __volatile (__lll_rel_instr);
+   *once_control = 0;
+   lll_futex_wake (once_control, INT_MAX, LLL_PRIVATE);
+ }
+@@ -47,15 +48,15 @@ __pthread_once (pthread_once_t *once_control, void (*init_routine) (void))
+        oldval = *once_control;
+        if ((oldval & 2) == 0)
+          *once_control = newval;
+-       Do this atomically.
++       Do this atomically with an acquire barrier.
+       */
+       newval = __fork_generation | 1;
+-      __asm __volatile ("1:   lwarx   %0,0,%3\n"
++      __asm __volatile ("1:   lwarx   %0,0,%3" MUTEX_HINT_ACQ "\n"
+                       "       andi.   %1,%0,2\n"
+                       "       bne     2f\n"
+                       "       stwcx.  %4,0,%3\n"
+                       "       bne     1b\n"
+-                      "2:     isync"
++                      "2:     " __lll_acq_instr
+                       : "=&r" (oldval), "=&r" (tmp), "=m" (*once_control)
+                       : "r" (once_control), "r" (newval), "m" (*once_control)
+                       : "cr0");
+@@ -87,8 +88,18 @@ __pthread_once (pthread_once_t *once_control, void (*init_routine) (void))
+   pthread_cleanup_pop (0);
+-  /* Add one to *once_control to take the bottom 2 bits from 01 to 10.  */
+-  atomic_increment (once_control);
++  /* Add one to *once_control to take the bottom 2 bits from 01 to 10.
++     A release barrier is needed to ensure memory written by init_routine
++     is seen in other threads before *once_control changes.  */
++  int tmp;
++  __asm __volatile (__lll_rel_instr "\n"
++                  "1: lwarx   %0,0,%2" MUTEX_HINT_REL "\n"
++                  "   addi    %0,%0,1\n"
++                  "   stwcx.  %0,0,%2\n"
++                  "   bne-    1b"
++                  : "=&b" (tmp), "=m" (*once_control)
++                  : "r" (once_control), "m" (*once_control)
++                  : "cr0");
+   /* Wake up all other threads.  */
+   lll_futex_wake (once_control, INT_MAX, LLL_PRIVATE);
+
+-- 
+Alan Modra
+Australia Development Lab, IBM
+
diff --git a/src/patches/glibc/glibc-rh861167.patch b/src/patches/glibc/glibc-rh861167.patch
new file mode 100644 (file)
index 0000000..d7e982f
--- /dev/null
@@ -0,0 +1,86 @@
+commit be08eda54c7cf833ccfa4b8d1f1b1d668c26af66
+Author: Andreas Jaeger <aj@suse.de>
+Date:   Wed May 23 09:27:39 2012 +0200
+
+    Update from Linux 3.4
+
+[ Partial, unrelated bits not included. ]
+
+2012-05-23  Andreas Jaeger  <aj@suse.de>
+
+       * sysdeps/unix/sysv/linux/powerpc/bits/mman.h
+       (MADV_DONTDUMP,MADV_DODUMP): New macros from Linux 3.4.
+       macro.
+       * sysdeps/unix/sysv/linux/s390/bits/mman.h
+       (MADV_DONTDUMP,MADV_DODUMP): Likewise.
+       * sysdeps/unix/sysv/linux/i386/bits/mman.h
+       (MADV_DONTDUMP,MADV_DODUMP): Likewise.
+       * sysdeps/unix/sysv/linux/x86_64/bits/mman.h
+       (MADV_DONTDUMP,MADV_DODUMP): Likewise.
+
+diff -Nrup a/sysdeps/unix/sysv/linux/i386/bits/mman.h b/sysdeps/unix/sysv/linux/i386/bits/mman.h
+--- a/sysdeps/unix/sysv/linux/i386/bits/mman.h 2010-05-04 05:27:23.000000000 -0600
++++ b/sysdeps/unix/sysv/linux/i386/bits/mman.h 2012-09-27 11:44:26.985150148 -0600
+@@ -1,5 +1,5 @@
+ /* Definitions for POSIX memory map interface.  Linux/i386 version.
+-   Copyright (C) 1997,2000,2003,2005,2006,2009 Free Software Foundation, Inc.
++   Copyright (C) 1997-2012 Free Software Foundation, Inc.
+    This file is part of the GNU C Library.
+    The GNU C Library is free software; you can redistribute it and/or
+@@ -94,6 +94,9 @@
+ # define MADV_DOFORK    11    /* Do inherit across fork.  */
+ # define MADV_MERGEABLE         12    /* KSM may merge identical pages.  */
+ # define MADV_UNMERGEABLE 13  /* KSM may not merge identical pages.  */
++# define MADV_DONTDUMP          16    /* Explicity exclude from the core dump,
++                                   overrides the coredump filter bits.  */
++# define MADV_DODUMP    17    /* Clear the MADV_DONTDUMP flag.  */
+ # define MADV_HWPOISON          100   /* Poison a page for testing.  */
+ #endif
+diff -Nrup a/sysdeps/unix/sysv/linux/powerpc/bits/mman.h b/sysdeps/unix/sysv/linux/powerpc/bits/mman.h
+--- a/sysdeps/unix/sysv/linux/powerpc/bits/mman.h      2010-05-04 05:27:23.000000000 -0600
++++ b/sysdeps/unix/sysv/linux/powerpc/bits/mman.h      2012-09-27 11:43:37.161351259 -0600
+@@ -96,6 +96,9 @@
+ # define MADV_DOFORK    11    /* Do inherit across fork.  */
+ # define MADV_MERGEABLE         12    /* KSM may merge identical pages.  */
+ # define MADV_UNMERGEABLE 13  /* KSM may not merge identical pages.  */
++# define MADV_DONTDUMP          16    /* Explicity exclude from the core dump,
++                                   overrides the coredump filter bits.  */
++# define MADV_DODUMP    17    /* Clear the MADV_DONTDUMP flag.  */
+ # define MADV_HWPOISON          100   /* Poison a page for testing.  */
+ #endif
+diff -Nrup a/sysdeps/unix/sysv/linux/s390/bits/mman.h b/sysdeps/unix/sysv/linux/s390/bits/mman.h
+--- a/sysdeps/unix/sysv/linux/s390/bits/mman.h 2010-05-04 05:27:23.000000000 -0600
++++ b/sysdeps/unix/sysv/linux/s390/bits/mman.h 2012-09-27 11:44:49.745059646 -0600
+@@ -94,6 +94,9 @@
+ # define MADV_DOFORK    11    /* Do inherit across fork.  */
+ # define MADV_MERGEABLE         12    /* KSM may merge identical pages.  */
+ # define MADV_UNMERGEABLE 13  /* KSM may not merge identical pages.  */
++# define MADV_DONTDUMP          16    /* Explicity exclude from the core dump,
++                                   overrides the coredump filter bits.  */
++# define MADV_DODUMP    17    /* Clear the MADV_DONTDUMP flag.  */
+ # define MADV_HWPOISON          100   /* Poison a page for testing.  */
+ #endif
+diff -Nrup a/sysdeps/unix/sysv/linux/x86_64/bits/mman.h b/sysdeps/unix/sysv/linux/x86_64/bits/mman.h
+--- a/sysdeps/unix/sysv/linux/x86_64/bits/mman.h       2010-05-04 05:27:23.000000000 -0600
++++ b/sysdeps/unix/sysv/linux/x86_64/bits/mman.h       2012-09-27 11:42:08.314725733 -0600
+@@ -1,5 +1,5 @@
+ /* Definitions for POSIX memory map interface.  Linux/x86_64 version.
+-   Copyright (C) 2001, 2003, 2005, 2006, 2009 Free Software Foundation, Inc.
++   Copyright (C) 2001-2012 Free Software Foundation, Inc.
+    This file is part of the GNU C Library.
+    The GNU C Library is free software; you can redistribute it and/or
+@@ -95,6 +95,9 @@
+ # define MADV_DOFORK    11    /* Do inherit across fork.  */
+ # define MADV_MERGEABLE         12    /* KSM may merge identical pages.  */
+ # define MADV_UNMERGEABLE 13  /* KSM may not merge identical pages.  */
++# define MADV_DONTDUMP          16    /* Explicity exclude from the core dump,
++                                   overrides the coredump filter bits.  */
++# define MADV_DODUMP    17    /* Clear the MADV_DONTDUMP flag.  */
+ # define MADV_HWPOISON          100   /* Poison a page for testing.  */
+ #endif
diff --git a/src/patches/glibc/glibc-rh863453.patch b/src/patches/glibc/glibc-rh863453.patch
new file mode 100644 (file)
index 0000000..96fb769
--- /dev/null
@@ -0,0 +1,81 @@
+--- glibc-2.12-2-gc4ccff1/nscd/grpcache.c.lrgrpissue   2002-03-19 01:06:04.905969517 +0530
++++ glibc-2.12-2-gc4ccff1/nscd/grpcache.c      2002-03-19 01:09:46.495970850 +0530
+@@ -207,10 +207,11 @@ cache_addgr (struct database_dyn *db, in
+        change.  Allocate memory on the cache since it is likely
+        discarded anyway.  If it turns out to be necessary to have a
+        new record we can still allocate real memory.  */
+-      bool dataset_in_stack_or_freed = false;
++      bool dataset_temporary = false;
++      bool dataset_malloced = false; 
+       dataset = NULL;
+-      if (he == NULL || ! __libc_use_alloca (alloca_used + total + n))
++      if (he == NULL)
+       dataset = (struct dataset *) mempool_alloc (db, total + n, 1);
+       if (dataset == NULL)
+@@ -218,10 +219,16 @@ cache_addgr (struct database_dyn *db, in
+         /* We cannot permanently add the result in the moment.  But
+            we can provide the result as is.  Store the data in some
+            temporary memory.  */
+-        dataset = (struct dataset *) alloca_account (total + n, alloca_used);
+-
++        if (! __libc_use_alloca (alloca_used + total + n))
++        {
++              /* XXX What to do if malloc fails?  */
++              dataset = (struct dataset *) malloc (total + n);
++              dataset_malloced = true;
++        }
++        else
++              dataset = (struct dataset *) alloca_account (total + n, alloca_used); 
+         /* We cannot add this record to the permanent database.  */
+-        dataset_in_stack_or_freed = true;
++        dataset_temporary = true; 
+       }
+       dataset->head.allocsize = total + n;
+@@ -276,13 +283,10 @@ cache_addgr (struct database_dyn *db, in
+             dh->timeout = dataset->head.timeout;
+             ++dh->nreloads;
+-            /* If the new record was not allocated on the stack, then it must
+-               be freed.  Note that it can no longer be used.  */
+-            if (! dataset_in_stack_or_freed)
+-              {
+-                free (dataset);
+-                dataset_in_stack_or_freed = true;
+-              }
++            /* If the new record was allocated via malloc, then we
++               must free it here.  */
++            if (dataset_malloced)
++                free (dataset); 
+           }
+         else
+           {
+@@ -298,7 +302,7 @@ cache_addgr (struct database_dyn *db, in
+                 key_copy = (char *) newp + (key_copy - (char *) dataset);
+                 dataset = memcpy (newp, dataset, total + n);
+-                dataset_in_stack_or_freed = false;
++                dataset_temporary = false;
+               }
+             /* Mark the old record as obsolete.  */
+@@ -313,7 +317,7 @@ cache_addgr (struct database_dyn *db, in
+         assert (fd != -1);
+ #ifdef HAVE_SENDFILE
+-        if (__builtin_expect (db->mmap_used, 1) && !dataset_in_stack_or_freed)
++        if (__builtin_expect (db->mmap_used, 1) && ! dataset_temporary) 
+           {
+             assert (db->wr_fd != -1);
+             assert ((char *) &dataset->resp > (char *) db->data);
+@@ -340,7 +344,7 @@ cache_addgr (struct database_dyn *db, in
+       /* Add the record to the database.  But only if it has not been
+        stored on the stack.  */
+-      if (! dataset_in_stack_or_freed)
++       if (! dataset_temporary) 
+       {
+         /* If necessary, we also propagate the data to disk.  */
+         if (db->persistent)
diff --git a/src/patches/glibc/glibc-rh864322.patch b/src/patches/glibc/glibc-rh864322.patch
new file mode 100644 (file)
index 0000000..565a146
--- /dev/null
@@ -0,0 +1,12 @@
+diff -rup a/sysdeps/generic/netinet/ip.h b/sysdeps/generic/netinet/ip.h
+--- a/sysdeps/generic/netinet/ip.h     2010-05-04 05:27:23.000000000 -0600
++++ b/sysdeps/generic/netinet/ip.h     2012-10-11 09:22:12.620160387 -0600
+@@ -194,7 +194,7 @@ struct ip_timestamp
+  */
+ #define       IPTOS_CLASS_MASK                0xe0
+-#define       IPTOS_CLASS(class)              ((tos) & IPTOS_CLASS_MASK)
++#define       IPTOS_CLASS(class)              ((class) & IPTOS_CLASS_MASK)
+ #define       IPTOS_CLASS_CS0                 0x00
+ #define       IPTOS_CLASS_CS1                 0x20
+ #define       IPTOS_CLASS_CS2                 0x40
diff --git a/src/patches/glibc/glibc-rh929388.patch b/src/patches/glibc/glibc-rh929388.patch
new file mode 100644 (file)
index 0000000..44ddd17
--- /dev/null
@@ -0,0 +1,21 @@
+diff -pruN glibc-2.5-20061008T1257/sysdeps/x86_64/fpu/math_private.h glibc-2.5-20061008T1257.patched/sysdeps/x86_64/fpu/math_private.h
+--- glibc-2.5-20061008T1257/sysdeps/x86_64/fpu/math_private.h  2013-02-12 07:05:08.000000000 -0500
++++ glibc-2.5-20061008T1257.patched/sysdeps/x86_64/fpu/math_private.h  2013-02-12 06:59:08.000000000 -0500
+@@ -90,10 +90,14 @@ while (0)
+ #undef libc_feupdateenv
+ #define libc_feupdateenv(e) \
+   do {                                                                              \
+-    unsigned int mxcsr;                                                             \
++    unsigned int mxcsr, new_mxcsr;                                          \
+     asm volatile ("stmxcsr %0" : "=m" (*&mxcsr));                           \
+-    asm volatile ("ldmxcsr %0" : : "m" ((e)->__mxcsr));                             \
+-    feraiseexcept (mxcsr & FE_ALL_EXCEPT);                                  \
++    /* Merge in the old exceptions.  */                                             \
++    new_mxcsr = mxcsr & FE_ALL_EXCEPT | (e)->__mxcsr;                       \
++    asm volatile ("ldmxcsr %0" : : "m" (*&new_mxcsr));                              \
++    /* Only raise exception if there are any that are not masked.  */       \
++    if (~(mxcsr >> 7) & mxcsr & FE_ALL_EXCEPT)                                      \
++      feraiseexcept (mxcsr & FE_ALL_EXCEPT);                                \
+   } while (0)
+ #undef libc_feupdateenvf
+ #define libc_feupdateenvf(e) libc_feupdateenv (e)
diff --git a/src/patches/glibc/glibc-rh970992.patch b/src/patches/glibc/glibc-rh970992.patch
new file mode 100644 (file)
index 0000000..42aa819
--- /dev/null
@@ -0,0 +1,190 @@
+#
+# Patch provided by Ulrich Drepper in BZ#919562.
+#
+# Patch has not been sent upstream.
+#
+# 2013-03-08  Ulrich Drepper  <drepper@gmail.com>
+#
+#      * elf/rtld.c (dl_main): Correctly determine when the application
+#      required DSOs with TLS and bump the generation counter in that
+#      case.  The current condition does not account for an audit
+#      module using TLS.
+#      * elf/dl-tls.c (_dl_count_modids): New function.
+#      (_dl_allocate_tls_init): Add assertion to check TLS
+#      generation.
+#      * sysdeps/generic/ldsodefs.h: Declare _dl_count_modids.
+#      * elf/Makefile: Add rules to build and run tst-audit9.
+#      * elf/tst-audit9.c: New file.
+#      * elf/tst-auditmod9a.c: New file.
+#      * elf/tst-auditmod9b.c: New file.
+#
+diff -urN glibc-2.12-2-gc4ccff1.orig/elf/dl-tls.c glibc-2.12-2-gc4ccff1/elf/dl-tls.c
+--- glibc-2.12-2-gc4ccff1.orig/elf/dl-tls.c    2013-04-24 16:06:10.410756438 -0400
++++ glibc-2.12-2-gc4ccff1/elf/dl-tls.c 2013-04-24 16:06:49.092604707 -0400
+@@ -109,6 +109,28 @@
+ }
++size_t
++internal_function
++_dl_count_modids (void)
++{
++  if (! __builtin_expect (GL(dl_tls_dtv_gaps), true))
++    return GL(dl_tls_max_dtv_idx);
++
++  size_t n = 0;
++  struct dtv_slotinfo_list *runp = GL(dl_tls_dtv_slotinfo_list);
++  while (runp != NULL)
++    {
++      for (size_t i = 0; i < runp->len; ++i)
++      if (runp->slotinfo[i].map != NULL)
++        ++n;
++
++      runp = runp->next;
++    }
++
++  return n;
++}
++
++
+ #ifdef SHARED
+ void
+ internal_function
+@@ -411,6 +433,7 @@
+         /* Keep track of the maximum generation number.  This might
+            not be the generation counter.  */
++        assert (listp->slotinfo[cnt].gen <= GL(dl_tls_generation));
+         maxgen = MAX (maxgen, listp->slotinfo[cnt].gen);
+         if (map->l_tls_offset == NO_TLS_OFFSET
+diff -urN glibc-2.12-2-gc4ccff1.orig/elf/Makefile glibc-2.12-2-gc4ccff1/elf/Makefile
+--- glibc-2.12-2-gc4ccff1.orig/elf/Makefile    2013-04-24 16:06:10.408756448 -0400
++++ glibc-2.12-2-gc4ccff1/elf/Makefile 2013-04-24 16:07:29.475457962 -0400
+@@ -97,6 +97,8 @@
+                  tst-audit6.c tst-auditmod6a.c tst-auditmod6b.c \
+                  tst-auditmod6c.c \
+                  tst-audit7.c tst-auditmod7a.c tst-auditmod7b.c \
++                 tst-audit9.c \
++                 tst-auditmod9a.c tst-auditmod9b.c \
+                  order2mod1.c order2mod2.c order2mod3.c order2mod4.c \
+                  tst-stackguard1.c tst-stackguard1-static.c \
+                  tst-array5.c tst-array5-static.c tst-array5dep.c \
+@@ -198,7 +200,7 @@
+        tst-dlmodcount tst-dlopenrpath tst-deep1 \
+        tst-dlmopen1 tst-dlmopen2 tst-dlmopen3 \
+        unload3 unload4 unload5 unload6 unload7 unload8 tst-global1 order2 \
+-       tst-audit1 tst-audit2 \
++       tst-audit1 tst-audit2 tst-audit9 \
+        tst-stackguard1 tst-addr1 tst-thrlock \
+        tst-unique1 tst-unique2
+ #      reldep9
+@@ -251,7 +253,8 @@
+               unload8mod1 unload8mod1x unload8mod2 unload8mod3 \
+               order2mod1 order2mod2 order2mod3 order2mod4 \
+               tst-unique1mod1 tst-unique1mod2 \
+-              tst-unique2mod1 tst-unique2mod2
++              tst-unique2mod1 tst-unique2mod2 \
++              tst-auditmod9a tst-auditmod9b
+ ifeq (yes,$(have-initfini-array))
+ modules-names += tst-array2dep tst-array5dep
+ endif
+@@ -574,6 +577,8 @@
+ ifuncmod1.so-no-z-defs = yes
+ ifuncmod5.so-no-z-defs = yes
+ ifuncmod6.so-no-z-defs = yes
++tst-auditmod9a.so-no-z-defs = yes
++tst-auditmod9b.so-no-z-defs = yes
+ ifeq ($(build-shared),yes)
+ # Build all the modules even when not actually running test programs.
+@@ -1015,6 +1020,10 @@
+ $(objpfx)tst-audit7.out: $(objpfx)tst-auditmod7b.so
+ tst-audit7-ENV = LD_AUDIT=$(objpfx)tst-auditmod7b.so
++$(objpfx)tst-audit9: $(libdl)
++$(objpfx)tst-audit9.out: $(objpfx)tst-auditmod9a.so $(objpfx)tst-auditmod9b.so
++tst-audit9-ENV = LD_AUDIT=$(objpfx)tst-auditmod9a.so
++
+ $(objpfx)tst-global1: $(libdl)
+ $(objpfx)tst-global1.out: $(objpfx)testobj6.so $(objpfx)testobj2.so
+diff -urN glibc-2.12-2-gc4ccff1.orig/elf/rtld.c glibc-2.12-2-gc4ccff1/elf/rtld.c
+--- glibc-2.12-2-gc4ccff1.orig/elf/rtld.c      2013-04-24 16:06:10.410756438 -0400
++++ glibc-2.12-2-gc4ccff1/elf/rtld.c   2013-04-24 16:06:49.096604693 -0400
+@@ -1637,6 +1637,10 @@
+       }
+     }
++  /* Keep track of the currently loaded modules to count how many
++     non-audit modules which use TLS are loaded.  */
++  size_t count_modids = _dl_count_modids ();
++
+   /* Set up debugging before the debugger is notified for the first time.  */
+ #ifdef ELF_MACHINE_DEBUG_SETUP
+   /* Some machines (e.g. MIPS) don't use DT_DEBUG in this way.  */
+@@ -2281,7 +2285,8 @@
+ # define NONTLS_INIT_TP do { } while (0)
+ #endif
+-  if (!was_tls_init_tp_called && GL(dl_tls_max_dtv_idx) > 0)
++  if ((!was_tls_init_tp_called && GL(dl_tls_max_dtv_idx) > 0)
++      || count_modids != _dl_count_modids ())
+     ++GL(dl_tls_generation);
+   /* Now that we have completed relocation, the initializer data
+diff -urN glibc-2.12-2-gc4ccff1.orig/elf/tst-audit9.c glibc-2.12-2-gc4ccff1/elf/tst-audit9.c
+--- glibc-2.12-2-gc4ccff1.orig/elf/tst-audit9.c        1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.12-2-gc4ccff1/elf/tst-audit9.c     2013-04-24 16:06:49.096604693 -0400
+@@ -0,0 +1,8 @@
++#include <dlfcn.h>
++
++int main(void)
++{
++  void *h = dlopen("$ORIGIN/tst-auditmod9b.so", RTLD_LAZY);
++  int (*fp)(void) = dlsym(h, "f");
++  return fp() - 1;
++}
+diff -urN glibc-2.12-2-gc4ccff1.orig/elf/tst-auditmod9a.c glibc-2.12-2-gc4ccff1/elf/tst-auditmod9a.c
+--- glibc-2.12-2-gc4ccff1.orig/elf/tst-auditmod9a.c    1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.12-2-gc4ccff1/elf/tst-auditmod9a.c 2013-04-24 16:06:49.097604689 -0400
+@@ -0,0 +1,16 @@
++#include <stdint.h>
++
++__thread int var;
++
++unsigned int
++la_version (unsigned int v)
++{
++  return v;
++}
++
++void
++la_activity (uintptr_t *cookie, unsigned int flag)
++{
++  ++var;
++}
++
+diff -urN glibc-2.12-2-gc4ccff1.orig/elf/tst-auditmod9b.c glibc-2.12-2-gc4ccff1/elf/tst-auditmod9b.c
+--- glibc-2.12-2-gc4ccff1.orig/elf/tst-auditmod9b.c    1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.12-2-gc4ccff1/elf/tst-auditmod9b.c 2013-04-24 16:06:49.097604689 -0400
+@@ -0,0 +1,6 @@
++__thread int a;
++
++int f(void)
++{
++  return ++a;
++}
+diff -urN glibc-2.12-2-gc4ccff1.orig/sysdeps/generic/ldsodefs.h glibc-2.12-2-gc4ccff1/sysdeps/generic/ldsodefs.h
+--- glibc-2.12-2-gc4ccff1.orig/sysdeps/generic/ldsodefs.h      2013-04-24 16:06:10.545755798 -0400
++++ glibc-2.12-2-gc4ccff1/sysdeps/generic/ldsodefs.h   2013-04-24 16:06:49.098604686 -0400
+@@ -1031,6 +1031,9 @@
+ /* Determine next available module ID.  */
+ extern size_t _dl_next_tls_modid (void) internal_function attribute_hidden;
++/* Count the modules with TLS segments.  */
++extern size_t _dl_count_modids (void) internal_function attribute_hidden;
++
+ /* Calculate offset of the TLS blocks in the static TLS block.  */
+ extern void _dl_determine_tlsoffset (void) internal_function attribute_hidden;
diff --git a/src/patches/glibc/glibc-rh989558-2.patch b/src/patches/glibc/glibc-rh989558-2.patch
new file mode 100644 (file)
index 0000000..ad895c7
--- /dev/null
@@ -0,0 +1,107 @@
+2013-05-03  Carlos O'Donell  <carlos at redhat.com>
+
+        * intl/dcigettext.c (DCIGETTEXT): Skip translating if _nl_find_msg returns -1.
+        (_nl_find_msg): Return -1 if recursive call returned -1. If newmem is null
+        return -1.
+        * intl/loadmsgcat.c (_nl_load_domain): If _nl_find_msg returns -1 abort
+        loading the domain.
+
+diff -Nrup a/intl/dcigettext.c b/intl/dcigettext.c
+--- a/intl/dcigettext.c        2010-05-04 07:27:23.000000000 -0400
++++ b/intl/dcigettext.c        2013-08-01 00:11:54.616363264 -0400
+@@ -640,6 +640,11 @@ DCIGETTEXT (domainname, msgid1, msgid2, 
+                 retval = _nl_find_msg (domain->successor[cnt], binding,
+                                        msgid1, 1, &retlen);
++                /* Resource problems are not fatal, instead we return no
++                  translation.  */
++                if (__builtin_expect (retval == (char *) -1, 0))
++                  goto no_translation;
++
+                 if (retval != NULL)
+                   {
+                     domain = domain->successor[cnt];
+@@ -943,6 +948,11 @@ _nl_find_msg (domain_file, domainbinding
+           nullentry =
+             _nl_find_msg (domain_file, domainbinding, "", 0, &nullentrylen);
++          /* Resource problems are fatal.  If we continue onwards we will
++             only attempt to calloc a new conv_tab and fail later.  */
++          if (__builtin_expect (nullentry == (char *) -1, 0))
++             return (char *) -1;
++
+           if (nullentry != NULL)
+             {
+               const char *charsetstr;
+@@ -1156,7 +1166,7 @@ _nl_find_msg (domain_file, domainbinding
+                                                            freemem_size);
+ # ifdef _LIBC
+                     if (newmem != NULL)
+-                      transmem_list = transmem_list->next;
++                      transmem_list = newmem;
+                     else
+                       {
+                         struct transmem_list *old = transmem_list;
+@@ -1171,6 +1181,16 @@ _nl_find_msg (domain_file, domainbinding
+                     malloc_count = 1;
+                     freemem_size = INITIAL_BLOCK_SIZE;
+                     newmem = (transmem_block_t *) malloc (freemem_size);
++# ifdef _LIBC
++                    if (newmem != NULL)
++                      {
++                        /* Add the block to the list of blocks we have to free
++                           at some point.  */
++                        newmem->next = transmem_list;
++                        transmem_list = newmem;
++                      }
++                    /* Fall through and return -1.  */
++# endif
+                   }
+                 if (__builtin_expect (newmem == NULL, 0))
+                   {
+@@ -1181,11 +1201,6 @@ _nl_find_msg (domain_file, domainbinding
+                   }
+ # ifdef _LIBC
+-                /* Add the block to the list of blocks we have to free
+-                   at some point.  */
+-                newmem->next = transmem_list;
+-                transmem_list = newmem;
+-
+                 freemem = (unsigned char *) newmem->data;
+                 freemem_size -= offsetof (struct transmem_list, data);
+ # else
+@@ -1402,7 +1417,7 @@ get_output_charset (domainbinding)
+         return _NL_CURRENT (LC_CTYPE, CODESET);
+ # else
+ #  if HAVE_ICONV
+-        extern const char *locale_charset PARAMS ((void);
++        extern const char *locale_charset PARAMS ((void));
+         return locale_charset ();
+ #  endif
+ # endif
+diff -Nrup a/intl/loadmsgcat.c b/intl/loadmsgcat.c
+--- a/intl/loadmsgcat.c        2010-05-04 07:27:23.000000000 -0400
++++ b/intl/loadmsgcat.c        2013-08-01 00:12:48.448237849 -0400
+@@ -1235,7 +1235,7 @@ _nl_load_domain (domain_file, domainbind
+     default:
+       /* This is an invalid revision.  */
+     invalid:
+-      /* This is an invalid .mo file.  */
++      /* This is an invalid .mo file or we ran out of resources.  */
+       free (domain->malloced);
+ #ifdef HAVE_MMAP
+       if (use_mmap)
+@@ -1255,6 +1255,12 @@ _nl_load_domain (domain_file, domainbind
+   /* Get the header entry and look for a plural specification.  */
+   nullentry = _nl_find_msg (domain_file, domainbinding, "", 0, &nullentrylen);
++  if (__builtin_expect (nullentry == (char *) -1, 0))
++    {
++      __libc_rwlock_fini (domain->conversions_lock);
++      goto invalid;
++    }
++
+   EXTRACT_PLURAL_EXPRESSION (nullentry, &domain->plural, &domain->nplurals);
+  out:
diff --git a/src/patches/glibc/glibc-rh989558.patch b/src/patches/glibc/glibc-rh989558.patch
new file mode 100644 (file)
index 0000000..61ddbe8
--- /dev/null
@@ -0,0 +1,181 @@
+#
+# Red Hat BZ:
+# https://bugzilla.redhat.com/show_bug.cgi?id=816647
+#
+# ChangeLog
+#
+#2013-04-30  Patsy Franklin  <pfrankli@redhat.com>
+#
+#      * iconv/gconv_cache.c (find_module): Demangle init_fct before 
+#      checking for NULL. Mangle __btowc_fct if init_fct is non-NULL.
+#      * iconv/gconv_db.c (free_derivation): Check that __shlib_handle 
+#      is non-NULL before demangling the end_fct.  Check for NULL
+#      end_fct after demangling.
+#      (__gconv_release_step): Demangle the end_fct before checking 
+#      it for NULL.   Remove assert on __shlibc_handle != NULL.
+#      (gen_steps): Don't check btowc_fct for NULL before mangling.  
+#      Demangle init_fct before checking for NULL.
+#      (increment_counter): Likewise
+#      * gconv_dl.c (__gconv_find_shlib): Don't check init_fct or
+#      end_fct for NULL before mangling.
+#      * wcsmbs/btowc.c (__btowc): Demangle btowc_fct before checking
+#      for NULL.
+#
+diff -Nrup a/iconv/gconv_cache.c b/iconv/gconv_cache.c
+--- a/iconv/gconv_cache.c      2012-12-24 22:02:13.000000000 -0500
++++ b/iconv/gconv_cache.c      2013-04-30 11:34:20.112389987 -0400
+@@ -207,17 +207,16 @@ find_module (const char *directory, cons
+       result->__data = NULL;
+       /* Call the init function.  */
+-      if (result->__init_fct != NULL)
+-      {
+-        __gconv_init_fct init_fct = result->__init_fct;
++      __gconv_init_fct init_fct = result->__init_fct;
+ #ifdef PTR_DEMANGLE
+-        PTR_DEMANGLE (init_fct);
++      PTR_DEMANGLE (init_fct);
+ #endif
++      if (init_fct != NULL)
++      {
+         status = DL_CALL_FCT (init_fct, (result));
+ #ifdef PTR_MANGLE
+-        if (result->__btowc_fct != NULL)
+-          PTR_MANGLE (result->__btowc_fct);
++        PTR_MANGLE (result->__btowc_fct);
+ #endif
+       }
+     }
+diff -Nrup a/iconv/gconv_db.c b/iconv/gconv_db.c
+--- a/iconv/gconv_db.c 2012-12-24 22:02:13.000000000 -0500
++++ b/iconv/gconv_db.c 2013-04-30 11:32:42.700592914 -0400
+@@ -179,16 +179,15 @@ free_derivation (void *p)
+   size_t cnt;
+   for (cnt = 0; cnt < deriv->nsteps; ++cnt)
+-    if (deriv->steps[cnt].__counter > 0
+-      && deriv->steps[cnt].__end_fct != NULL)
++    if ((deriv->steps[cnt].__counter > 0)
++      && (deriv->steps[cnt].__shlib_handle != NULL))
+       {
+-      assert (deriv->steps[cnt].__shlib_handle != NULL);
+-
+       __gconv_end_fct end_fct = deriv->steps[cnt].__end_fct;
+ #ifdef PTR_DEMANGLE
+       PTR_DEMANGLE (end_fct);
+ #endif
+-      DL_CALL_FCT (end_fct, (&deriv->steps[cnt]));
++      if (end_fct != NULL)
++        DL_CALL_FCT (end_fct, (&deriv->steps[cnt]));
+       }
+   /* Free the name strings.  */
+@@ -212,16 +211,12 @@ __gconv_release_step (struct __gconv_ste
+   if (step->__shlib_handle != NULL && --step->__counter == 0)
+     {
+       /* Call the destructor.  */
+-      if (step->__end_fct != NULL)
+-      {
+-        assert (step->__shlib_handle != NULL);
+-
+-        __gconv_end_fct end_fct = step->__end_fct;
++      __gconv_end_fct end_fct = step->__end_fct;
+ #ifdef PTR_DEMANGLE
+-        PTR_DEMANGLE (end_fct);
++      PTR_DEMANGLE (end_fct);
+ #endif
+-        DL_CALL_FCT (end_fct, (step));
+-      }
++      if (end_fct != NULL)
++      DL_CALL_FCT (end_fct, (step));
+ #ifndef STATIC_GCONV
+       /* Release the loaded module.  */
+@@ -293,13 +288,11 @@ gen_steps (struct derivation_step *best,
+             /* Call the init function.  */
+             __gconv_init_fct init_fct = result[step_cnt].__init_fct;
+-            if (init_fct != NULL)
+-              {
+-                assert (result[step_cnt].__shlib_handle != NULL);
+-
+ # ifdef PTR_DEMANGLE
+-                PTR_DEMANGLE (init_fct);
++            PTR_DEMANGLE (init_fct);
+ # endif
++            if (init_fct != NULL)
++              {
+                 status = DL_CALL_FCT (init_fct, (&result[step_cnt]));
+                 if (__builtin_expect (status, __GCONV_OK) != __GCONV_OK)
+@@ -312,8 +305,7 @@ gen_steps (struct derivation_step *best,
+                   }
+ # ifdef PTR_MANGLE
+-                if (result[step_cnt].__btowc_fct != NULL)
+-                  PTR_MANGLE (result[step_cnt].__btowc_fct);
++                PTR_MANGLE (result[step_cnt].__btowc_fct);
+ # endif
+               }
+           }
+@@ -393,16 +385,15 @@ increment_counter (struct __gconv_step *
+         /* Call the init function.  */
+         __gconv_init_fct init_fct = step->__init_fct;
+-        if (init_fct != NULL)
+-          {
+ #ifdef PTR_DEMANGLE
+-            PTR_DEMANGLE (init_fct);
++        PTR_DEMANGLE (init_fct);
+ #endif
++        if (init_fct != NULL)
++          {
+             DL_CALL_FCT (init_fct, (step));
+ #ifdef PTR_MANGLE
+-            if (step->__btowc_fct != NULL)
+-              PTR_MANGLE (step->__btowc_fct);
++            PTR_MANGLE (step->__btowc_fct);
+ #endif
+           }
+       }
+diff -Nrup a/iconv/gconv_dl.c b/iconv/gconv_dl.c
+--- a/iconv/gconv_dl.c 2012-12-24 22:02:13.000000000 -0500
++++ b/iconv/gconv_dl.c 2013-04-30 11:32:42.701592922 -0400
+@@ -132,10 +132,8 @@ __gconv_find_shlib (const char *name)
+ #ifdef PTR_MANGLE
+                 PTR_MANGLE (found->fct);
+-                if (found->init_fct != NULL)
+-                  PTR_MANGLE (found->init_fct);
+-                if (found->end_fct !=  NULL)
+-                  PTR_MANGLE (found->end_fct);
++                PTR_MANGLE (found->init_fct);
++                PTR_MANGLE (found->end_fct);
+ #endif
+                 /* We have succeeded in loading the shared object.  */
+diff -Nrup a/wcsmbs/btowc.c b/wcsmbs/btowc.c
+--- a/wcsmbs/btowc.c   2012-12-24 22:02:13.000000000 -0500
++++ b/wcsmbs/btowc.c   2013-04-30 11:32:42.701592922 -0400
+@@ -47,15 +47,15 @@ __btowc (c)
+   /* Get the conversion functions.  */
+   fcts = get_gconv_fcts (_NL_CURRENT_DATA (LC_CTYPE));
+   __gconv_btowc_fct btowc_fct = fcts->towc->__btowc_fct;
++#ifdef PTR_DEMANGLE
++  if (fcts->towc->__shlib_handle != NULL)
++    PTR_DEMANGLE (btowc_fct);
++#endif
+   if (__builtin_expect (fcts->towc_nsteps == 1, 1)
+       && __builtin_expect (btowc_fct != NULL, 1))
+     {
+       /* Use the shortcut function.  */
+-#ifdef PTR_DEMANGLE
+-      if (fcts->towc->__shlib_handle != NULL)
+-      PTR_DEMANGLE (btowc_fct);
+-#endif
+       return DL_CALL_FCT (btowc_fct, (fcts->towc, (unsigned char) c));
+     }
+   else
diff --git a/src/patches/imq_kernel3.10.patch b/src/patches/imq_kernel3.10.patch
new file mode 100644 (file)
index 0000000..e98bdc5
--- /dev/null
@@ -0,0 +1,1568 @@
+diff -uNr linux-3.9.1/drivers/net/imq.c linux-3.9.1-imqmq/drivers/net/imq.c
+--- linux-3.9.1/drivers/net/imq.c      1970-01-01 02:00:00.000000000 +0200
++++ linux-3.9.1-imqmq/drivers/net/imq.c        2013-05-08 17:30:41.715552053 +0300
+@@ -0,0 +1,861 @@
++/*
++ *             Pseudo-driver for the intermediate queue device.
++ *
++ *             This program is free software; you can redistribute it and/or
++ *             modify it under the terms of the GNU General Public License
++ *             as published by the Free Software Foundation; either version
++ *             2 of the License, or (at your option) any later version.
++ *
++ * Authors:    Patrick McHardy, <kaber@trash.net>
++ *
++ *            The first version was written by Martin Devera, <devik@cdi.cz>
++ *
++ * Credits:    Jan Rafaj <imq2t@cedric.vabo.cz>
++ *              - Update patch to 2.4.21
++ *             Sebastian Strollo <sstrollo@nortelnetworks.com>
++ *              - Fix "Dead-loop on netdevice imq"-issue
++ *             Marcel Sebek <sebek64@post.cz>
++ *              - Update to 2.6.2-rc1
++ *
++ *           After some time of inactivity there is a group taking care
++ *           of IMQ again: http://www.linuximq.net
++ *
++ *
++ *           2004/06/30 - New version of IMQ patch to kernels <=2.6.7
++ *             including the following changes:
++ *
++ *           - Correction of ipv6 support "+"s issue (Hasso Tepper)
++ *           - Correction of imq_init_devs() issue that resulted in
++ *           kernel OOPS unloading IMQ as module (Norbert Buchmuller)
++ *           - Addition of functionality to choose number of IMQ devices
++ *           during kernel config (Andre Correa)
++ *           - Addition of functionality to choose how IMQ hooks on
++ *           PRE and POSTROUTING (after or before NAT) (Andre Correa)
++ *           - Cosmetic corrections (Norbert Buchmuller) (Andre Correa)
++ *
++ *
++ *             2005/12/16 - IMQ versions between 2.6.7 and 2.6.13 were
++ *             released with almost no problems. 2.6.14-x was released
++ *             with some important changes: nfcache was removed; After
++ *             some weeks of trouble we figured out that some IMQ fields
++ *             in skb were missing in skbuff.c - skb_clone and copy_skb_header.
++ *             These functions are correctly patched by this new patch version.
++ *
++ *             Thanks for all who helped to figure out all the problems with
++ *             2.6.14.x: Patrick McHardy, Rune Kock, VeNoMouS, Max CtRiX,
++ *             Kevin Shanahan, Richard Lucassen, Valery Dachev (hopefully
++ *             I didn't forget anybody). I apologize again for my lack of time.
++ *
++ *
++ *             2008/06/17 - 2.6.25 - Changed imq.c to use qdisc_run() instead
++ *             of qdisc_restart() and moved qdisc_run() to tasklet to avoid
++ *             recursive locking. New initialization routines to fix 'rmmod' not
++ *             working anymore. Used code from ifb.c. (Jussi Kivilinna)
++ *
++ *             2008/08/06 - 2.6.26 - (JK)
++ *              - Replaced tasklet with 'netif_schedule()'.
++ *              - Cleaned up and added comments for imq_nf_queue().
++ *
++ *             2009/04/12
++ *              - Add skb_save_cb/skb_restore_cb helper functions for backuping
++ *                control buffer. This is needed because qdisc-layer on kernels
++ *                2.6.27 and newer overwrite control buffer. (Jussi Kivilinna)
++ *              - Add better locking for IMQ device. Hopefully this will solve
++ *                SMP issues. (Jussi Kivilinna)
++ *              - Port to 2.6.27
++ *              - Port to 2.6.28
++ *              - Port to 2.6.29 + fix rmmod not working
++ *
++ *             2009/04/20 - (Jussi Kivilinna)
++ *              - Use netdevice feature flags to avoid extra packet handling
++ *                by core networking layer and possibly increase performance.
++ *
++ *             2009/09/26 - (Jussi Kivilinna)
++ *              - Add imq_nf_reinject_lockless to fix deadlock with
++ *                imq_nf_queue/imq_nf_reinject.
++ *
++ *             2009/12/08 - (Jussi Kivilinna)
++ *              - Port to 2.6.32
++ *              - Add check for skb->nf_queue_entry==NULL in imq_dev_xmit()
++ *              - Also add better error checking for skb->nf_queue_entry usage
++ *
++ *             2010/02/25 - (Jussi Kivilinna)
++ *              - Port to 2.6.33
++ *
++ *             2010/08/15 - (Jussi Kivilinna)
++ *              - Port to 2.6.35
++ *              - Simplify hook registration by using nf_register_hooks.
++ *              - nf_reinject doesn't need spinlock around it, therefore remove
++ *                imq_nf_reinject function. Other nf_reinject users protect
++ *                their own data with spinlock. With IMQ however all data is
++ *                needed is stored per skbuff, so no locking is needed.
++ *              - Changed IMQ to use 'separate' NF_IMQ_QUEUE instead of
++ *                NF_QUEUE, this allows working coexistance of IMQ and other
++ *                NF_QUEUE users.
++ *              - Make IMQ multi-queue. Number of IMQ device queues can be
++ *                increased with 'numqueues' module parameters. Default number
++ *                of queues is 1, in other words by default IMQ works as
++ *                single-queue device. Multi-queue selection is based on
++ *                IFB multi-queue patch by Changli Gao <xiaosuo@gmail.com>.
++ *
++ *             2011/03/18 - (Jussi Kivilinna)
++ *              - Port to 2.6.38
++ *
++ *             2011/07/12 - (syoder89@gmail.com)
++ *              - Crash fix that happens when the receiving interface has more
++ *                than one queue (add missing skb_set_queue_mapping in
++ *                imq_select_queue).
++ *
++ *             2011/07/26 - (Jussi Kivilinna)
++ *              - Add queue mapping checks for packets exiting IMQ.
++ *              - Port to 3.0
++ *
++ *             2011/08/16 - (Jussi Kivilinna)
++ *              - Clear IFF_TX_SKB_SHARING flag that was added for linux 3.0.2
++ *
++ *             2011/11/03 - Germano Michel <germanomichel@gmail.com>
++ *              - Fix IMQ for net namespaces
++ *
++ *             2011/11/04 - Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
++ *              - Port to 3.1
++ *              - Clean-up, move 'get imq device pointer by imqX name' to
++ *                separate function from imq_nf_queue().
++ *
++ *             2012/01/05 - Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
++ *              - Port to 3.2
++ *
++ *             2012/03/19 - Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
++ *              - Port to 3.3
++ *
++ *             2012/12/12 - Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
++ *              - Port to 3.7
++ *              - Fix checkpatch.pl warnings
++ *
++ *           Also, many thanks to pablo Sebastian Greco for making the initial
++ *           patch and to those who helped the testing.
++ *
++ *             More info at: http://www.linuximq.net/ (Andre Correa)
++ */
++
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/moduleparam.h>
++#include <linux/list.h>
++#include <linux/skbuff.h>
++#include <linux/netdevice.h>
++#include <linux/etherdevice.h>
++#include <linux/rtnetlink.h>
++#include <linux/if_arp.h>
++#include <linux/netfilter.h>
++#include <linux/netfilter_ipv4.h>
++#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
++      #include <linux/netfilter_ipv6.h>
++#endif
++#include <linux/imq.h>
++#include <net/pkt_sched.h>
++#include <net/netfilter/nf_queue.h>
++#include <net/sock.h>
++#include <linux/ip.h>
++#include <linux/ipv6.h>
++#include <linux/if_vlan.h>
++#include <linux/if_pppox.h>
++#include <net/ip.h>
++#include <net/ipv6.h>
++
++static int imq_nf_queue(struct nf_queue_entry *entry, unsigned int queue_num);
++
++static nf_hookfn imq_nf_hook;
++
++static struct nf_hook_ops imq_ops[] = {
++      {
++      /* imq_ingress_ipv4 */
++              .hook           = imq_nf_hook,
++              .owner          = THIS_MODULE,
++              .pf             = PF_INET,
++              .hooknum        = NF_INET_PRE_ROUTING,
++#if defined(CONFIG_IMQ_BEHAVIOR_BA) || defined(CONFIG_IMQ_BEHAVIOR_BB)
++              .priority       = NF_IP_PRI_MANGLE + 1,
++#else
++              .priority       = NF_IP_PRI_NAT_DST + 1,
++#endif
++      },
++      {
++      /* imq_egress_ipv4 */
++              .hook           = imq_nf_hook,
++              .owner          = THIS_MODULE,
++              .pf             = PF_INET,
++              .hooknum        = NF_INET_POST_ROUTING,
++#if defined(CONFIG_IMQ_BEHAVIOR_AA) || defined(CONFIG_IMQ_BEHAVIOR_BA)
++              .priority       = NF_IP_PRI_LAST,
++#else
++              .priority       = NF_IP_PRI_NAT_SRC - 1,
++#endif
++      },
++#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
++      {
++      /* imq_ingress_ipv6 */
++              .hook           = imq_nf_hook,
++              .owner          = THIS_MODULE,
++              .pf             = PF_INET6,
++              .hooknum        = NF_INET_PRE_ROUTING,
++#if defined(CONFIG_IMQ_BEHAVIOR_BA) || defined(CONFIG_IMQ_BEHAVIOR_BB)
++              .priority       = NF_IP6_PRI_MANGLE + 1,
++#else
++              .priority       = NF_IP6_PRI_NAT_DST + 1,
++#endif
++      },
++      {
++      /* imq_egress_ipv6 */
++              .hook           = imq_nf_hook,
++              .owner          = THIS_MODULE,
++              .pf             = PF_INET6,
++              .hooknum        = NF_INET_POST_ROUTING,
++#if defined(CONFIG_IMQ_BEHAVIOR_AA) || defined(CONFIG_IMQ_BEHAVIOR_BA)
++              .priority       = NF_IP6_PRI_LAST,
++#else
++              .priority       = NF_IP6_PRI_NAT_SRC - 1,
++#endif
++      },
++#endif
++};
++
++#if defined(CONFIG_IMQ_NUM_DEVS)
++static int numdevs = CONFIG_IMQ_NUM_DEVS;
++#else
++static int numdevs = IMQ_MAX_DEVS;
++#endif
++
++static struct net_device *imq_devs_cache[IMQ_MAX_DEVS];
++
++#define IMQ_MAX_QUEUES 32
++static int numqueues = 1;
++static u32 imq_hashrnd;
++
++static inline __be16 pppoe_proto(const struct sk_buff *skb)
++{
++      return *((__be16 *)(skb_mac_header(skb) + ETH_HLEN +
++                      sizeof(struct pppoe_hdr)));
++}
++
++static u16 imq_hash(struct net_device *dev, struct sk_buff *skb)
++{
++      unsigned int pull_len;
++      u16 protocol = skb->protocol;
++      u32 addr1, addr2;
++      u32 hash, ihl = 0;
++      union {
++              u16 in16[2];
++              u32 in32;
++      } ports;
++      u8 ip_proto;
++
++      pull_len = 0;
++
++recheck:
++      switch (protocol) {
++      case htons(ETH_P_8021Q): {
++              if (unlikely(skb_pull(skb, VLAN_HLEN) == NULL))
++                      goto other;
++
++              pull_len += VLAN_HLEN;
++              skb->network_header += VLAN_HLEN;
++
++              protocol = vlan_eth_hdr(skb)->h_vlan_encapsulated_proto;
++              goto recheck;
++      }
++
++      case htons(ETH_P_PPP_SES): {
++              if (unlikely(skb_pull(skb, PPPOE_SES_HLEN) == NULL))
++                      goto other;
++
++              pull_len += PPPOE_SES_HLEN;
++              skb->network_header += PPPOE_SES_HLEN;
++
++              protocol = pppoe_proto(skb);
++              goto recheck;
++      }
++
++      case htons(ETH_P_IP): {
++              const struct iphdr *iph = ip_hdr(skb);
++
++              if (unlikely(!pskb_may_pull(skb, sizeof(struct iphdr))))
++                      goto other;
++
++              addr1 = iph->daddr;
++              addr2 = iph->saddr;
++
++              ip_proto = !(ip_hdr(skb)->frag_off & htons(IP_MF | IP_OFFSET)) ?
++                               iph->protocol : 0;
++              ihl = ip_hdrlen(skb);
++
++              break;
++      }
++#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
++      case htons(ETH_P_IPV6): {
++              const struct ipv6hdr *iph = ipv6_hdr(skb);
++              __be16 fo = 0;
++
++              if (unlikely(!pskb_may_pull(skb, sizeof(struct ipv6hdr))))
++                      goto other;
++
++              addr1 = iph->daddr.s6_addr32[3];
++              addr2 = iph->saddr.s6_addr32[3];
++              ihl = ipv6_skip_exthdr(skb, sizeof(struct ipv6hdr), &ip_proto,
++                                     &fo);
++              if (unlikely(ihl < 0))
++                      goto other;
++
++              break;
++      }
++#endif
++      default:
++other:
++              if (pull_len != 0) {
++                      skb_push(skb, pull_len);
++                      skb->network_header -= pull_len;
++              }
++
++              return (u16)(ntohs(protocol) % dev->real_num_tx_queues);
++      }
++
++      if (addr1 > addr2)
++              swap(addr1, addr2);
++
++      switch (ip_proto) {
++      case IPPROTO_TCP:
++      case IPPROTO_UDP:
++      case IPPROTO_DCCP:
++      case IPPROTO_ESP:
++      case IPPROTO_AH:
++      case IPPROTO_SCTP:
++      case IPPROTO_UDPLITE: {
++              if (likely(skb_copy_bits(skb, ihl, &ports.in32, 4) >= 0)) {
++                      if (ports.in16[0] > ports.in16[1])
++                              swap(ports.in16[0], ports.in16[1]);
++                      break;
++              }
++              /* fall-through */
++      }
++      default:
++              ports.in32 = 0;
++              break;
++      }
++
++      if (pull_len != 0) {
++              skb_push(skb, pull_len);
++              skb->network_header -= pull_len;
++      }
++
++      hash = jhash_3words(addr1, addr2, ports.in32, imq_hashrnd ^ ip_proto);
++
++      return (u16)(((u64)hash * dev->real_num_tx_queues) >> 32);
++}
++
++static inline bool sk_tx_queue_recorded(struct sock *sk)
++{
++      return (sk_tx_queue_get(sk) >= 0);
++}
++
++static struct netdev_queue *imq_select_queue(struct net_device *dev,
++                                              struct sk_buff *skb)
++{
++      u16 queue_index = 0;
++      u32 hash;
++
++      if (likely(dev->real_num_tx_queues == 1))
++              goto out;
++
++      /* IMQ can be receiving ingress or engress packets. */
++
++      /* Check first for if rx_queue is set */
++      if (skb_rx_queue_recorded(skb)) {
++              queue_index = skb_get_rx_queue(skb);
++              goto out;
++      }
++
++      /* Check if socket has tx_queue set */
++      if (sk_tx_queue_recorded(skb->sk)) {
++              queue_index = sk_tx_queue_get(skb->sk);
++              goto out;
++      }
++
++      /* Try use socket hash */
++      if (skb->sk && skb->sk->sk_hash) {
++              hash = skb->sk->sk_hash;
++              queue_index =
++                      (u16)(((u64)hash * dev->real_num_tx_queues) >> 32);
++              goto out;
++      }
++
++      /* Generate hash from packet data */
++      queue_index = imq_hash(dev, skb);
++
++out:
++      if (unlikely(queue_index >= dev->real_num_tx_queues))
++              queue_index = (u16)((u32)queue_index % dev->real_num_tx_queues);
++
++      skb_set_queue_mapping(skb, queue_index);
++      return netdev_get_tx_queue(dev, queue_index);
++}
++
++static struct net_device_stats *imq_get_stats(struct net_device *dev)
++{
++      return &dev->stats;
++}
++
++/* called for packets kfree'd in qdiscs at places other than enqueue */
++static void imq_skb_destructor(struct sk_buff *skb)
++{
++      struct nf_queue_entry *entry = skb->nf_queue_entry;
++
++      skb->nf_queue_entry = NULL;
++
++      if (entry) {
++              nf_queue_entry_release_refs(entry);
++              kfree(entry);
++      }
++
++      skb_restore_cb(skb); /* kfree backup */
++}
++
++static void imq_done_check_queue_mapping(struct sk_buff *skb,
++                                       struct net_device *dev)
++{
++      unsigned int queue_index;
++
++      /* Don't let queue_mapping be left too large after exiting IMQ */
++      if (likely(skb->dev != dev && skb->dev != NULL)) {
++              queue_index = skb_get_queue_mapping(skb);
++              if (unlikely(queue_index >= skb->dev->real_num_tx_queues)) {
++                      queue_index = (u16)((u32)queue_index %
++                                              skb->dev->real_num_tx_queues);
++                      skb_set_queue_mapping(skb, queue_index);
++              }
++      } else {
++              /* skb->dev was IMQ device itself or NULL, be on safe side and
++               * just clear queue mapping.
++               */
++              skb_set_queue_mapping(skb, 0);
++      }
++}
++
++static netdev_tx_t imq_dev_xmit(struct sk_buff *skb, struct net_device *dev)
++{
++      struct nf_queue_entry *entry = skb->nf_queue_entry;
++
++      skb->nf_queue_entry = NULL;
++      dev->trans_start = jiffies;
++
++      dev->stats.tx_bytes += skb->len;
++      dev->stats.tx_packets++;
++
++      if (unlikely(entry == NULL)) {
++              /* We don't know what is going on here.. packet is queued for
++               * imq device, but (probably) not by us.
++               *
++               * If this packet was not send here by imq_nf_queue(), then
++               * skb_save_cb() was not used and skb_free() should not show:
++               *   WARNING: IMQ: kfree_skb: skb->cb_next:..
++               * and/or
++               *   WARNING: IMQ: kfree_skb: skb->nf_queue_entry...
++               *
++               * However if this message is shown, then IMQ is somehow broken
++               * and you should report this to linuximq.net.
++               */
++
++              /* imq_dev_xmit is black hole that eats all packets, report that
++               * we eat this packet happily and increase dropped counters.
++               */
++
++              dev->stats.tx_dropped++;
++              dev_kfree_skb(skb);
++
++              return NETDEV_TX_OK;
++      }
++
++      skb_restore_cb(skb); /* restore skb->cb */
++
++      skb->imq_flags = 0;
++      skb->destructor = NULL;
++
++      imq_done_check_queue_mapping(skb, dev);
++
++      nf_reinject(entry, NF_ACCEPT);
++
++      return NETDEV_TX_OK;
++}
++
++static struct net_device *get_imq_device_by_index(int index)
++{
++      struct net_device *dev = NULL;
++      struct net *net;
++      char buf[8];
++
++      /* get device by name and cache result */
++      snprintf(buf, sizeof(buf), "imq%d", index);
++
++      /* Search device from all namespaces. */
++      for_each_net(net) {
++              dev = dev_get_by_name(net, buf);
++              if (dev)
++                      break;
++      }
++
++      if (WARN_ON_ONCE(dev == NULL)) {
++              /* IMQ device not found. Exotic config? */
++              return ERR_PTR(-ENODEV);
++      }
++
++      imq_devs_cache[index] = dev;
++      dev_put(dev);
++
++      return dev;
++}
++
++static int imq_nf_queue(struct nf_queue_entry *entry, unsigned int queue_num)
++{
++      struct net_device *dev;
++      struct sk_buff *skb_orig, *skb, *skb_shared;
++      struct Qdisc *q;
++      struct netdev_queue *txq;
++      spinlock_t *root_lock;
++      int users, index;
++      int retval = -EINVAL;
++      unsigned int orig_queue_index;
++
++      index = entry->skb->imq_flags & IMQ_F_IFMASK;
++      if (unlikely(index > numdevs - 1)) {
++              if (net_ratelimit())
++                      pr_warn("IMQ: invalid device specified, highest is %u\n",
++                              numdevs - 1);
++              retval = -EINVAL;
++              goto out;
++      }
++
++      /* check for imq device by index from cache */
++      dev = imq_devs_cache[index];
++      if (unlikely(!dev)) {
++              dev = get_imq_device_by_index(index);
++              if (IS_ERR(dev)) {
++                      retval = PTR_ERR(dev);
++                      goto out;
++              }
++      }
++
++      if (unlikely(!(dev->flags & IFF_UP))) {
++              entry->skb->imq_flags = 0;
++              nf_reinject(entry, NF_ACCEPT);
++              retval = 0;
++              goto out;
++      }
++      dev->last_rx = jiffies;
++
++      skb = entry->skb;
++      skb_orig = NULL;
++
++      /* skb has owner? => make clone */
++      if (unlikely(skb->destructor)) {
++              skb_orig = skb;
++              skb = skb_clone(skb, GFP_ATOMIC);
++              if (unlikely(!skb)) {
++                      retval = -ENOMEM;
++                      goto out;
++              }
++              entry->skb = skb;
++      }
++
++      skb->nf_queue_entry = entry;
++
++      dev->stats.rx_bytes += skb->len;
++      dev->stats.rx_packets++;
++
++      if (!skb->dev) {
++              /* skb->dev == NULL causes problems, try the find cause. */
++              if (net_ratelimit()) {
++                      dev_warn(&dev->dev,
++                               "received packet with skb->dev == NULL\n");
++                      dump_stack();
++              }
++
++              skb->dev = dev;
++      }
++
++      /* Disables softirqs for lock below */
++      rcu_read_lock_bh();
++
++      /* Multi-queue selection */
++      orig_queue_index = skb_get_queue_mapping(skb);
++      txq = imq_select_queue(dev, skb);
++
++      q = rcu_dereference(txq->qdisc);
++      if (unlikely(!q->enqueue))
++              goto packet_not_eaten_by_imq_dev;
++
++      root_lock = qdisc_lock(q);
++      spin_lock(root_lock);
++
++      users = atomic_read(&skb->users);
++
++      skb_shared = skb_get(skb); /* increase reference count by one */
++
++      /* backup skb->cb, as qdisc layer will overwrite it */
++      skb_save_cb(skb_shared);
++      qdisc_enqueue_root(skb_shared, q); /* might kfree_skb */
++
++      if (likely(atomic_read(&skb_shared->users) == users + 1)) {
++              kfree_skb(skb_shared); /* decrease reference count by one */
++
++              skb->destructor = &imq_skb_destructor;
++
++              /* cloned? */
++              if (unlikely(skb_orig))
++                      kfree_skb(skb_orig); /* free original */
++
++              spin_unlock(root_lock);
++              rcu_read_unlock_bh();
++
++              /* schedule qdisc dequeue */
++              __netif_schedule(q);
++
++              retval = 0;
++              goto out;
++      } else {
++              skb_restore_cb(skb_shared); /* restore skb->cb */
++              skb->nf_queue_entry = NULL;
++              /*
++               * qdisc dropped packet and decreased skb reference count of
++               * skb, so we don't really want to and try refree as that would
++               * actually destroy the skb.
++               */
++              spin_unlock(root_lock);
++              goto packet_not_eaten_by_imq_dev;
++      }
++
++packet_not_eaten_by_imq_dev:
++      skb_set_queue_mapping(skb, orig_queue_index);
++      rcu_read_unlock_bh();
++
++      /* cloned? restore original */
++      if (unlikely(skb_orig)) {
++              kfree_skb(skb);
++              entry->skb = skb_orig;
++      }
++      retval = -1;
++out:
++      return retval;
++}
++
++static unsigned int imq_nf_hook(unsigned int hook, struct sk_buff *pskb,
++                              const struct net_device *indev,
++                              const struct net_device *outdev,
++                              int (*okfn)(struct sk_buff *))
++{
++      return (pskb->imq_flags & IMQ_F_ENQUEUE) ? NF_IMQ_QUEUE : NF_ACCEPT;
++}
++
++static int imq_close(struct net_device *dev)
++{
++      netif_stop_queue(dev);
++      return 0;
++}
++
++static int imq_open(struct net_device *dev)
++{
++      netif_start_queue(dev);
++      return 0;
++}
++
++static const struct net_device_ops imq_netdev_ops = {
++      .ndo_open               = imq_open,
++      .ndo_stop               = imq_close,
++      .ndo_start_xmit         = imq_dev_xmit,
++      .ndo_get_stats          = imq_get_stats,
++};
++
++static void imq_setup(struct net_device *dev)
++{
++      dev->netdev_ops         = &imq_netdev_ops;
++      dev->type               = ARPHRD_VOID;
++      dev->mtu                = 16000; /* too small? */
++      dev->tx_queue_len       = 11000; /* too big? */
++      dev->flags              = IFF_NOARP;
++      dev->features           = NETIF_F_SG | NETIF_F_FRAGLIST |
++                                NETIF_F_GSO | NETIF_F_HW_CSUM |
++                                NETIF_F_HIGHDMA;
++      dev->priv_flags         &= ~(IFF_XMIT_DST_RELEASE |
++                                   IFF_TX_SKB_SHARING);
++}
++
++static int imq_validate(struct nlattr *tb[], struct nlattr *data[])
++{
++      int ret = 0;
++
++      if (tb[IFLA_ADDRESS]) {
++              if (nla_len(tb[IFLA_ADDRESS]) != ETH_ALEN) {
++                      ret = -EINVAL;
++                      goto end;
++              }
++              if (!is_valid_ether_addr(nla_data(tb[IFLA_ADDRESS]))) {
++                      ret = -EADDRNOTAVAIL;
++                      goto end;
++              }
++      }
++      return 0;
++end:
++      pr_warn("IMQ: imq_validate failed (%d)\n", ret);
++      return ret;
++}
++
++static struct rtnl_link_ops imq_link_ops __read_mostly = {
++      .kind           = "imq",
++      .priv_size      = 0,
++      .setup          = imq_setup,
++      .validate       = imq_validate,
++};
++
++static const struct nf_queue_handler imq_nfqh = {
++      .outfn = imq_nf_queue,
++};
++
++static int __init imq_init_hooks(void)
++{
++      int ret;
++
++      nf_register_queue_imq_handler(&imq_nfqh);
++
++      ret = nf_register_hooks(imq_ops, ARRAY_SIZE(imq_ops));
++      if (ret < 0)
++              nf_unregister_queue_imq_handler();
++
++      return ret;
++}
++
++static int __init imq_init_one(int index)
++{
++      struct net_device *dev;
++      int ret;
++
++      dev = alloc_netdev_mq(0, "imq%d", imq_setup, numqueues);
++      if (!dev)
++              return -ENOMEM;
++
++      ret = dev_alloc_name(dev, dev->name);
++      if (ret < 0)
++              goto fail;
++
++      dev->rtnl_link_ops = &imq_link_ops;
++      ret = register_netdevice(dev);
++      if (ret < 0)
++              goto fail;
++
++      return 0;
++fail:
++      free_netdev(dev);
++      return ret;
++}
++
++static int __init imq_init_devs(void)
++{
++      int err, i;
++
++      if (numdevs < 1 || numdevs > IMQ_MAX_DEVS) {
++              pr_err("IMQ: numdevs has to be betweed 1 and %u\n",
++                     IMQ_MAX_DEVS);
++              return -EINVAL;
++      }
++
++      if (numqueues < 1 || numqueues > IMQ_MAX_QUEUES) {
++              pr_err("IMQ: numqueues has to be betweed 1 and %u\n",
++                     IMQ_MAX_QUEUES);
++              return -EINVAL;
++      }
++
++      get_random_bytes(&imq_hashrnd, sizeof(imq_hashrnd));
++
++      rtnl_lock();
++      err = __rtnl_link_register(&imq_link_ops);
++
++      for (i = 0; i < numdevs && !err; i++)
++              err = imq_init_one(i);
++
++      if (err) {
++              __rtnl_link_unregister(&imq_link_ops);
++              memset(imq_devs_cache, 0, sizeof(imq_devs_cache));
++      }
++      rtnl_unlock();
++
++      return err;
++}
++
++static int __init imq_init_module(void)
++{
++      int err;
++
++#if defined(CONFIG_IMQ_NUM_DEVS)
++      BUILD_BUG_ON(CONFIG_IMQ_NUM_DEVS > 16);
++      BUILD_BUG_ON(CONFIG_IMQ_NUM_DEVS < 2);
++      BUILD_BUG_ON(CONFIG_IMQ_NUM_DEVS - 1 > IMQ_F_IFMASK);
++#endif
++
++      err = imq_init_devs();
++      if (err) {
++              pr_err("IMQ: Error trying imq_init_devs(net)\n");
++              return err;
++      }
++
++      err = imq_init_hooks();
++      if (err) {
++              pr_err(KERN_ERR "IMQ: Error trying imq_init_hooks()\n");
++              rtnl_link_unregister(&imq_link_ops);
++              memset(imq_devs_cache, 0, sizeof(imq_devs_cache));
++              return err;
++      }
++
++      pr_info("IMQ driver loaded successfully. (numdevs = %d, numqueues = %d)\n",
++              numdevs, numqueues);
++
++#if defined(CONFIG_IMQ_BEHAVIOR_BA) || defined(CONFIG_IMQ_BEHAVIOR_BB)
++      pr_info("\tHooking IMQ before NAT on PREROUTING.\n");
++#else
++      pr_info("\tHooking IMQ after NAT on PREROUTING.\n");
++#endif
++#if defined(CONFIG_IMQ_BEHAVIOR_AB) || defined(CONFIG_IMQ_BEHAVIOR_BB)
++      pr_info("\tHooking IMQ before NAT on POSTROUTING.\n");
++#else
++      pr_info("\tHooking IMQ after NAT on POSTROUTING.\n");
++#endif
++
++      return 0;
++}
++
++static void __exit imq_unhook(void)
++{
++      nf_unregister_hooks(imq_ops, ARRAY_SIZE(imq_ops));
++      nf_unregister_queue_imq_handler();
++}
++
++static void __exit imq_cleanup_devs(void)
++{
++      rtnl_link_unregister(&imq_link_ops);
++      memset(imq_devs_cache, 0, sizeof(imq_devs_cache));
++}
++
++static void __exit imq_exit_module(void)
++{
++      imq_unhook();
++      imq_cleanup_devs();
++      pr_info("IMQ driver unloaded successfully.\n");
++}
++
++module_init(imq_init_module);
++module_exit(imq_exit_module);
++
++module_param(numdevs, int, 0);
++module_param(numqueues, int, 0);
++MODULE_PARM_DESC(numdevs, "number of IMQ devices (how many imq* devices will be created)");
++MODULE_PARM_DESC(numqueues, "number of queues per IMQ device");
++MODULE_AUTHOR("http://www.linuximq.net");
++MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See http://www.linuximq.net/ for more information.");
++MODULE_LICENSE("GPL");
++MODULE_ALIAS_RTNL_LINK("imq");
++
+diff -uNr linux-3.9.1/drivers/net/Kconfig linux-3.9.1-imqmq/drivers/net/Kconfig
+--- linux-3.9.1/drivers/net/Kconfig    2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/drivers/net/Kconfig      2013-05-08 17:30:29.011952562 +0300
+@@ -206,6 +206,125 @@
+       depends on RIONET
+       default "128"
++config IMQ
++      tristate "IMQ (intermediate queueing device) support"
++      depends on NETDEVICES && NETFILTER
++      ---help---
++        The IMQ device(s) is used as placeholder for QoS queueing
++        disciplines. Every packet entering/leaving the IP stack can be
++        directed through the IMQ device where it's enqueued/dequeued to the
++        attached qdisc. This allows you to treat network devices as classes
++        and distribute bandwidth among them. Iptables is used to specify
++        through which IMQ device, if any, packets travel.
++
++        More information at: http://www.linuximq.net/
++
++        To compile this driver as a module, choose M here: the module
++        will be called imq.  If unsure, say N.
++
++choice
++      prompt "IMQ behavior (PRE/POSTROUTING)"
++      depends on IMQ
++      default IMQ_BEHAVIOR_AB
++      help
++        This setting defines how IMQ behaves in respect to its
++        hooking in PREROUTING and POSTROUTING.
++
++        IMQ can work in any of the following ways:
++
++            PREROUTING   |      POSTROUTING
++        -----------------|-------------------
++        #1  After NAT    |      After NAT
++        #2  After NAT    |      Before NAT
++        #3  Before NAT   |      After NAT
++        #4  Before NAT   |      Before NAT
++
++        The default behavior is to hook before NAT on PREROUTING
++        and after NAT on POSTROUTING (#3).
++
++        This settings are specially usefull when trying to use IMQ
++        to shape NATed clients.
++
++        More information can be found at: www.linuximq.net
++
++        If not sure leave the default settings alone.
++
++config IMQ_BEHAVIOR_AA
++      bool "IMQ AA"
++      help
++        This setting defines how IMQ behaves in respect to its
++        hooking in PREROUTING and POSTROUTING.
++
++        Choosing this option will make IMQ hook like this:
++
++        PREROUTING:   After NAT
++        POSTROUTING:  After NAT
++
++        More information can be found at: www.linuximq.net
++
++        If not sure leave the default settings alone.
++
++config IMQ_BEHAVIOR_AB
++      bool "IMQ AB"
++      help
++        This setting defines how IMQ behaves in respect to its
++        hooking in PREROUTING and POSTROUTING.
++
++        Choosing this option will make IMQ hook like this:
++
++        PREROUTING:   After NAT
++        POSTROUTING:  Before NAT
++
++        More information can be found at: www.linuximq.net
++
++        If not sure leave the default settings alone.
++
++config IMQ_BEHAVIOR_BA
++      bool "IMQ BA"
++      help
++        This setting defines how IMQ behaves in respect to its
++        hooking in PREROUTING and POSTROUTING.
++
++        Choosing this option will make IMQ hook like this:
++
++        PREROUTING:   Before NAT
++        POSTROUTING:  After NAT
++
++        More information can be found at: www.linuximq.net
++
++        If not sure leave the default settings alone.
++
++config IMQ_BEHAVIOR_BB
++      bool "IMQ BB"
++      help
++        This setting defines how IMQ behaves in respect to its
++        hooking in PREROUTING and POSTROUTING.
++
++        Choosing this option will make IMQ hook like this:
++
++        PREROUTING:   Before NAT
++        POSTROUTING:  Before NAT
++
++        More information can be found at: www.linuximq.net
++
++        If not sure leave the default settings alone.
++
++endchoice
++
++config IMQ_NUM_DEVS
++      int "Number of IMQ devices"
++      range 2 16
++      depends on IMQ
++      default "16"
++      help
++        This setting defines how many IMQ devices will be created.
++
++        The default value is 16.
++
++        More information can be found at: www.linuximq.net
++
++        If not sure leave the default settings alone.
++
+ config TUN
+       tristate "Universal TUN/TAP device driver support"
+       select CRC32
+diff -uNr linux-3.9.1/drivers/net/Makefile linux-3.9.1-imqmq/drivers/net/Makefile
+--- linux-3.9.1/drivers/net/Makefile   2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/drivers/net/Makefile     2013-05-08 17:30:29.011952562 +0300
+@@ -9,6 +9,7 @@
+ obj-$(CONFIG_DUMMY) += dummy.o
+ obj-$(CONFIG_EQUALIZER) += eql.o
+ obj-$(CONFIG_IFB) += ifb.o
++obj-$(CONFIG_IMQ) += imq.o
+ obj-$(CONFIG_MACVLAN) += macvlan.o
+ obj-$(CONFIG_MACVTAP) += macvtap.o
+ obj-$(CONFIG_MII) += mii.o
+diff -uNr linux-3.9.1/include/linux/imq.h linux-3.9.1-imqmq/include/linux/imq.h
+--- linux-3.9.1/include/linux/imq.h    1970-01-01 02:00:00.000000000 +0200
++++ linux-3.9.1-imqmq/include/linux/imq.h      2013-05-08 17:30:29.011952562 +0300
+@@ -0,0 +1,13 @@
++#ifndef _IMQ_H
++#define _IMQ_H
++
++/* IFMASK (16 device indexes, 0 to 15) and flag(s) fit in 5 bits */
++#define IMQ_F_BITS    5
++
++#define IMQ_F_IFMASK  0x0f
++#define IMQ_F_ENQUEUE 0x10
++
++#define IMQ_MAX_DEVS  (IMQ_F_IFMASK + 1)
++
++#endif /* _IMQ_H */
++
+diff -uNr linux-3.9.1/include/linux/netfilter/xt_IMQ.h linux-3.9.1-imqmq/include/linux/netfilter/xt_IMQ.h
+--- linux-3.9.1/include/linux/netfilter/xt_IMQ.h       1970-01-01 02:00:00.000000000 +0200
++++ linux-3.9.1-imqmq/include/linux/netfilter/xt_IMQ.h 2013-05-08 17:30:29.011952562 +0300
+@@ -0,0 +1,9 @@
++#ifndef _XT_IMQ_H
++#define _XT_IMQ_H
++
++struct xt_imq_info {
++      unsigned int todev;     /* target imq device */
++};
++
++#endif /* _XT_IMQ_H */
++
+diff -uNr linux-3.9.1/include/linux/netfilter_ipv4/ipt_IMQ.h linux-3.9.1-imqmq/include/linux/netfilter_ipv4/ipt_IMQ.h
+--- linux-3.9.1/include/linux/netfilter_ipv4/ipt_IMQ.h 1970-01-01 02:00:00.000000000 +0200
++++ linux-3.9.1-imqmq/include/linux/netfilter_ipv4/ipt_IMQ.h   2013-05-08 17:30:29.011952562 +0300
+@@ -0,0 +1,10 @@
++#ifndef _IPT_IMQ_H
++#define _IPT_IMQ_H
++
++/* Backwards compatibility for old userspace */
++#include <linux/netfilter/xt_IMQ.h>
++
++#define ipt_imq_info xt_imq_info
++
++#endif /* _IPT_IMQ_H */
++
+diff -uNr linux-3.9.1/include/linux/netfilter_ipv6/ip6t_IMQ.h linux-3.9.1-imqmq/include/linux/netfilter_ipv6/ip6t_IMQ.h
+--- linux-3.9.1/include/linux/netfilter_ipv6/ip6t_IMQ.h        1970-01-01 02:00:00.000000000 +0200
++++ linux-3.9.1-imqmq/include/linux/netfilter_ipv6/ip6t_IMQ.h  2013-05-08 17:30:29.011952562 +0300
+@@ -0,0 +1,10 @@
++#ifndef _IP6T_IMQ_H
++#define _IP6T_IMQ_H
++
++/* Backwards compatibility for old userspace */
++#include <linux/netfilter/xt_IMQ.h>
++
++#define ip6t_imq_info xt_imq_info
++
++#endif /* _IP6T_IMQ_H */
++
+diff -uNr linux-3.9.1/include/linux/skbuff.h linux-3.9.1-imqmq/include/linux/skbuff.h
+--- linux-3.9.1/include/linux/skbuff.h 2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/include/linux/skbuff.h   2013-05-08 17:30:29.015285965 +0300
+@@ -32,6 +32,9 @@
+ #include <linux/dma-mapping.h>
+ #include <linux/netdev_features.h>
+ #include <net/flow_keys.h>
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++#include <linux/imq.h>
++#endif
+ /* Don't change this without changing skb_csum_unnecessary! */
+ #define CHECKSUM_NONE 0
+@@ -415,6 +418,9 @@
+        * first. This is owned by whoever has the skb queued ATM.
+        */
+       char                    cb[48] __aligned(8);
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++      void                    *cb_next;
++#endif
+       unsigned long           _skb_refdst;
+ #ifdef CONFIG_XFRM
+@@ -453,6 +459,9 @@
+ #ifdef NET_SKBUFF_NF_DEFRAG_NEEDED
+       struct sk_buff          *nfct_reasm;
+ #endif
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++      struct nf_queue_entry   *nf_queue_entry;
++#endif
+ #ifdef CONFIG_BRIDGE_NETFILTER
+       struct nf_bridge_info   *nf_bridge;
+ #endif
+@@ -491,6 +500,10 @@
+       /* 7/9 bit hole (depending on ndisc_nodetype presence) */
+       kmemcheck_bitfield_end(flags2);
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++      __u8                    imq_flags:IMQ_F_BITS;
++#endif
++
+ #ifdef CONFIG_NET_DMA
+       dma_cookie_t            dma_cookie;
+ #endif
+@@ -586,6 +599,12 @@
+       return (struct rtable *)skb_dst(skb);
+ }
++
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++extern int skb_save_cb(struct sk_buff *skb);
++extern int skb_restore_cb(struct sk_buff *skb);
++#endif
++
+ extern void kfree_skb(struct sk_buff *skb);
+ extern void skb_tx_error(struct sk_buff *skb);
+ extern void consume_skb(struct sk_buff *skb);
+@@ -2662,6 +2681,10 @@
+       dst->nfct_reasm = src->nfct_reasm;
+       nf_conntrack_get_reasm(src->nfct_reasm);
+ #endif
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++      dst->imq_flags = src->imq_flags;
++      dst->nf_queue_entry = src->nf_queue_entry;
++#endif
+ #ifdef CONFIG_BRIDGE_NETFILTER
+       dst->nf_bridge  = src->nf_bridge;
+       nf_bridge_get(src->nf_bridge);
+diff -uNr linux-3.9.1/include/net/netfilter/nf_queue.h linux-3.9.1-imqmq/include/net/netfilter/nf_queue.h
+--- linux-3.9.1/include/net/netfilter/nf_queue.h       2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/include/net/netfilter/nf_queue.h 2013-05-08 17:30:29.015285965 +0300
+@@ -26,5 +26,11 @@
+ void nf_register_queue_handler(const struct nf_queue_handler *qh);
+ void nf_unregister_queue_handler(void);
+ extern void nf_reinject(struct nf_queue_entry *entry, unsigned int verdict);
++extern void nf_queue_entry_release_refs(struct nf_queue_entry *entry);
++
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++extern void nf_register_queue_imq_handler(const struct nf_queue_handler *qh);
++extern void nf_unregister_queue_imq_handler(void);
++#endif
+ #endif /* _NF_QUEUE_H */
+diff -uNr linux-3.9.1/include/uapi/linux/netfilter.h linux-3.9.1-imqmq/include/uapi/linux/netfilter.h
+--- linux-3.9.1/include/uapi/linux/netfilter.h 2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/include/uapi/linux/netfilter.h   2013-05-08 17:30:29.015285965 +0300
+@@ -13,7 +13,8 @@
+ #define NF_QUEUE 3
+ #define NF_REPEAT 4
+ #define NF_STOP 5
+-#define NF_MAX_VERDICT NF_STOP
++#define NF_IMQ_QUEUE 6
++#define NF_MAX_VERDICT NF_IMQ_QUEUE
+ /* we overload the higher bits for encoding auxiliary data such as the queue
+  * number or errno values. Not nice, but better than additional function
+diff -uNr linux-3.9.1/net/core/dev.c linux-3.9.1-imqmq/net/core/dev.c
+--- linux-3.9.1/net/core/dev.c 2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/net/core/dev.c   2013-05-08 17:30:29.018619368 +0300
+@@ -129,6 +129,9 @@
+ #include <linux/inetdevice.h>
+ #include <linux/cpu_rmap.h>
+ #include <linux/static_key.h>
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++#include <linux/imq.h>
++#endif
+ #include "net-sysfs.h"
+@@ -2529,7 +2532,12 @@
+                       }
+               }
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++              if (!list_empty(&ptype_all) &&
++                                      !(skb->imq_flags & IMQ_F_ENQUEUE))
++#else
+               if (!list_empty(&ptype_all))
++#endif
+                       dev_queue_xmit_nit(skb, dev);
+               skb_len = skb->len;
+diff -uNr linux-3.9.1/net/core/skbuff.c linux-3.9.1-imqmq/net/core/skbuff.c
+--- linux-3.9.1/net/core/skbuff.c      2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/net/core/skbuff.c        2013-05-08 17:30:29.021952772 +0300
+@@ -73,6 +73,9 @@
+ struct kmem_cache *skbuff_head_cache __read_mostly;
+ static struct kmem_cache *skbuff_fclone_cache __read_mostly;
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++static struct kmem_cache *skbuff_cb_store_cache __read_mostly;
++#endif
+ static void sock_pipe_buf_release(struct pipe_inode_info *pipe,
+                                 struct pipe_buffer *buf)
+@@ -92,6 +95,82 @@
+       return 1;
+ }
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++/* Control buffer save/restore for IMQ devices */
++struct skb_cb_table {
++      char                    cb[48] __aligned(8);
++      void                    *cb_next;
++      atomic_t                refcnt;
++};
++
++static DEFINE_SPINLOCK(skb_cb_store_lock);
++
++int skb_save_cb(struct sk_buff *skb)
++{
++      struct skb_cb_table *next;
++
++      next = kmem_cache_alloc(skbuff_cb_store_cache, GFP_ATOMIC);
++      if (!next)
++              return -ENOMEM;
++
++      BUILD_BUG_ON(sizeof(skb->cb) != sizeof(next->cb));
++
++      memcpy(next->cb, skb->cb, sizeof(skb->cb));
++      next->cb_next = skb->cb_next;
++
++      atomic_set(&next->refcnt, 1);
++
++      skb->cb_next = next;
++      return 0;
++}
++EXPORT_SYMBOL(skb_save_cb);
++
++int skb_restore_cb(struct sk_buff *skb)
++{
++      struct skb_cb_table *next;
++
++      if (!skb->cb_next)
++              return 0;
++
++      next = skb->cb_next;
++
++      BUILD_BUG_ON(sizeof(skb->cb) != sizeof(next->cb));
++
++      memcpy(skb->cb, next->cb, sizeof(skb->cb));
++      skb->cb_next = next->cb_next;
++
++      spin_lock(&skb_cb_store_lock);
++
++      if (atomic_dec_and_test(&next->refcnt))
++              kmem_cache_free(skbuff_cb_store_cache, next);
++
++      spin_unlock(&skb_cb_store_lock);
++
++      return 0;
++}
++EXPORT_SYMBOL(skb_restore_cb);
++
++static void skb_copy_stored_cb(struct sk_buff *new, const struct sk_buff *__old)
++{
++      struct skb_cb_table *next;
++      struct sk_buff *old;
++
++      if (!__old->cb_next) {
++              new->cb_next = NULL;
++              return;
++      }
++
++      spin_lock(&skb_cb_store_lock);
++
++      old = (struct sk_buff *)__old;
++
++      next = old->cb_next;
++      atomic_inc(&next->refcnt);
++      new->cb_next = next;
++
++      spin_unlock(&skb_cb_store_lock);
++}
++#endif
+ /* Pipe buffer operations for a socket. */
+ static const struct pipe_buf_operations sock_pipe_buf_ops = {
+@@ -562,6 +641,28 @@
+               WARN_ON(in_irq());
+               skb->destructor(skb);
+       }
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++      /*
++       * This should not happen. When it does, avoid memleak by restoring
++       * the chain of cb-backups.
++       */
++      while (skb->cb_next != NULL) {
++              if (net_ratelimit())
++                      pr_warn("IMQ: kfree_skb: skb->cb_next: %08x\n",
++                              (unsigned int)skb->cb_next);
++
++              skb_restore_cb(skb);
++      }
++      /*
++       * This should not happen either, nf_queue_entry is nullified in
++       * imq_dev_xmit(). If we have non-NULL nf_queue_entry then we are
++       * leaking entry pointers, maybe memory. We don't know if this is
++       * pointer to already freed memory, or should this be freed.
++       * If this happens we need to add refcounting, etc for nf_queue_entry.
++       */
++      if (skb->nf_queue_entry && net_ratelimit())
++              pr_warn("%s\n", "IMQ: kfree_skb: skb->nf_queue_entry != NULL");
++#endif
+ #if IS_ENABLED(CONFIG_NF_CONNTRACK)
+       nf_conntrack_put(skb->nfct);
+ #endif
+@@ -683,6 +784,9 @@
+       new->sp                 = secpath_get(old->sp);
+ #endif
+       memcpy(new->cb, old->cb, sizeof(old->cb));
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++      skb_copy_stored_cb(new, old);
++#endif
+       new->csum               = old->csum;
+       new->local_df           = old->local_df;
+       new->pkt_type           = old->pkt_type;
+@@ -3053,6 +3157,13 @@
+                                               0,
+                                               SLAB_HWCACHE_ALIGN|SLAB_PANIC,
+                                               NULL);
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++      skbuff_cb_store_cache = kmem_cache_create("skbuff_cb_store_cache",
++                                                sizeof(struct skb_cb_table),
++                                                0,
++                                                SLAB_HWCACHE_ALIGN|SLAB_PANIC,
++                                                NULL);
++#endif
+ }
+ /**
+diff -uNr linux-3.9.1/net/ipv6/ip6_output.c linux-3.9.1-imqmq/net/ipv6/ip6_output.c
+--- linux-3.9.1/net/ipv6/ip6_output.c  2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/net/ipv6/ip6_output.c    2013-05-08 17:30:29.021952772 +0300
+@@ -89,9 +89,6 @@
+       struct in6_addr *nexthop;
+       int ret;
+-      skb->protocol = htons(ETH_P_IPV6);
+-      skb->dev = dev;
+-
+       if (ipv6_addr_is_multicast(&ipv6_hdr(skb)->daddr)) {
+               struct inet6_dev *idev = ip6_dst_idev(skb_dst(skb));
+@@ -167,6 +164,13 @@
+               return 0;
+       }
++      /*
++       * IMQ-patch: moved setting skb->dev and skb->protocol from
++       * ip6_finish_output2 to fix crashing at netif_skb_features().
++       */
++      skb->protocol = htons(ETH_P_IPV6);
++      skb->dev = dev;
++
+       return NF_HOOK_COND(NFPROTO_IPV6, NF_INET_POST_ROUTING, skb, NULL, dev,
+                           ip6_finish_output,
+                           !(IP6CB(skb)->flags & IP6SKB_REROUTED));
+diff -uNr linux-3.9.1/net/netfilter/core.c linux-3.9.1-imqmq/net/netfilter/core.c
+--- linux-3.9.1/net/netfilter/core.c   2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/net/netfilter/core.c     2013-05-08 17:30:29.025286174 +0300
+@@ -188,9 +188,11 @@
+               ret = NF_DROP_GETERR(verdict);
+               if (ret == 0)
+                       ret = -EPERM;
+-      } else if ((verdict & NF_VERDICT_MASK) == NF_QUEUE) {
++      } else if ((verdict & NF_VERDICT_MASK) == NF_QUEUE ||
++                 (verdict & NF_VERDICT_MASK) == NF_IMQ_QUEUE) {
+               int err = nf_queue(skb, elem, pf, hook, indev, outdev, okfn,
+-                                              verdict >> NF_VERDICT_QBITS);
++                                              verdict >> NF_VERDICT_QBITS,
++                                              verdict & NF_VERDICT_MASK);
+               if (err < 0) {
+                       if (err == -ECANCELED)
+                               goto next_hook;
+diff -uNr linux-3.9.1/net/netfilter/Kconfig linux-3.9.1-imqmq/net/netfilter/Kconfig
+--- linux-3.9.1/net/netfilter/Kconfig  2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/net/netfilter/Kconfig    2013-05-08 17:30:29.025286174 +0300
+@@ -641,6 +641,18 @@
+         To compile it as a module, choose M here.  If unsure, say N.
++config NETFILTER_XT_TARGET_IMQ
++        tristate '"IMQ" target support'
++      depends on NETFILTER_XTABLES
++      depends on IP_NF_MANGLE || IP6_NF_MANGLE
++      select IMQ
++      default m if NETFILTER_ADVANCED=n
++        help
++          This option adds a `IMQ' target which is used to specify if and
++          to which imq device packets should get enqueued/dequeued.
++
++          To compile it as a module, choose M here.  If unsure, say N.
++
+ config NETFILTER_XT_TARGET_MARK
+       tristate '"MARK" target support'
+       depends on NETFILTER_ADVANCED
+diff -uNr linux-3.9.1/net/netfilter/Makefile linux-3.9.1-imqmq/net/netfilter/Makefile
+--- linux-3.9.1/net/netfilter/Makefile 2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/net/netfilter/Makefile   2013-05-08 17:30:29.025286174 +0300
+@@ -82,6 +82,7 @@
+ obj-$(CONFIG_NETFILTER_XT_TARGET_DSCP) += xt_DSCP.o
+ obj-$(CONFIG_NETFILTER_XT_TARGET_HL) += xt_HL.o
+ obj-$(CONFIG_NETFILTER_XT_TARGET_HMARK) += xt_HMARK.o
++obj-$(CONFIG_NETFILTER_XT_TARGET_IMQ) += xt_IMQ.o
+ obj-$(CONFIG_NETFILTER_XT_TARGET_LED) += xt_LED.o
+ obj-$(CONFIG_NETFILTER_XT_TARGET_LOG) += xt_LOG.o
+ obj-$(CONFIG_NETFILTER_XT_TARGET_NETMAP) += xt_NETMAP.o
+diff -uNr linux-3.9.1/net/netfilter/nf_internals.h linux-3.9.1-imqmq/net/netfilter/nf_internals.h
+--- linux-3.9.1/net/netfilter/nf_internals.h   2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/net/netfilter/nf_internals.h     2013-05-08 17:30:29.025286174 +0300
+@@ -29,7 +29,7 @@
+                   struct net_device *indev,
+                   struct net_device *outdev,
+                   int (*okfn)(struct sk_buff *),
+-                  unsigned int queuenum);
++                  unsigned int queuenum, unsigned int queuetype);
+ extern int __init netfilter_queue_init(void);
+ /* nf_log.c */
+diff -uNr linux-3.9.1/net/netfilter/nf_queue.c linux-3.9.1-imqmq/net/netfilter/nf_queue.c
+--- linux-3.9.1/net/netfilter/nf_queue.c       2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/net/netfilter/nf_queue.c 2013-05-08 17:30:29.025286174 +0300
+@@ -22,6 +22,23 @@
+  */
+ static const struct nf_queue_handler __rcu *queue_handler __read_mostly;
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++static const struct nf_queue_handler __rcu *queue_imq_handler __read_mostly;
++
++void nf_register_queue_imq_handler(const struct nf_queue_handler *qh)
++{
++      rcu_assign_pointer(queue_imq_handler, qh);
++}
++EXPORT_SYMBOL_GPL(nf_register_queue_imq_handler);
++
++void nf_unregister_queue_imq_handler(void)
++{
++      RCU_INIT_POINTER(queue_imq_handler, NULL);
++      synchronize_rcu();
++}
++EXPORT_SYMBOL_GPL(nf_unregister_queue_imq_handler);
++#endif
++
+ /* return EBUSY when somebody else is registered, return EEXIST if the
+  * same handler is registered, return 0 in case of success. */
+ void nf_register_queue_handler(const struct nf_queue_handler *qh)
+@@ -71,7 +89,8 @@
+                     struct net_device *indev,
+                     struct net_device *outdev,
+                     int (*okfn)(struct sk_buff *),
+-                    unsigned int queuenum)
++                    unsigned int queuenum,
++                    unsigned int queuetype)
+ {
+       int status = -ENOENT;
+       struct nf_queue_entry *entry = NULL;
+@@ -85,7 +104,17 @@
+       /* QUEUE == DROP if no one is waiting, to be safe. */
+       rcu_read_lock();
+-      qh = rcu_dereference(queue_handler);
++      if (queuetype == NF_IMQ_QUEUE) {
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++              qh = rcu_dereference(queue_imq_handler);
++#else
++              BUG();
++              goto err_unlock;
++#endif
++      } else {
++              qh = rcu_dereference(queue_handler);
++      }
++
+       if (!qh) {
+               status = -ESRCH;
+               goto err_unlock;
+@@ -233,9 +261,11 @@
+               local_bh_enable();
+               break;
+       case NF_QUEUE:
++      case NF_IMQ_QUEUE:
+               err = nf_queue(skb, elem, entry->pf, entry->hook,
+                               entry->indev, entry->outdev, entry->okfn,
+-                              verdict >> NF_VERDICT_QBITS);
++                              verdict >> NF_VERDICT_QBITS,
++                              verdict & NF_VERDICT_MASK);
+               if (err < 0) {
+                       if (err == -ECANCELED)
+                               goto next_hook;
+diff -uNr linux-3.9.1/net/netfilter/xt_IMQ.c linux-3.9.1-imqmq/net/netfilter/xt_IMQ.c
+--- linux-3.9.1/net/netfilter/xt_IMQ.c 1970-01-01 02:00:00.000000000 +0200
++++ linux-3.9.1-imqmq/net/netfilter/xt_IMQ.c   2013-05-08 17:30:29.025286174 +0300
+@@ -0,0 +1,72 @@
++/*
++ * This target marks packets to be enqueued to an imq device
++ */
++#include <linux/module.h>
++#include <linux/skbuff.h>
++#include <linux/netfilter/x_tables.h>
++#include <linux/netfilter/xt_IMQ.h>
++#include <linux/imq.h>
++
++static unsigned int imq_target(struct sk_buff *pskb,
++                              const struct xt_action_param *par)
++{
++      const struct xt_imq_info *mr = par->targinfo;
++
++      pskb->imq_flags = (mr->todev & IMQ_F_IFMASK) | IMQ_F_ENQUEUE;
++
++      return XT_CONTINUE;
++}
++
++static int imq_checkentry(const struct xt_tgchk_param *par)
++{
++      struct xt_imq_info *mr = par->targinfo;
++
++      if (mr->todev > IMQ_MAX_DEVS - 1) {
++              pr_warn("IMQ: invalid device specified, highest is %u\n",
++                      IMQ_MAX_DEVS - 1);
++              return -EINVAL;
++      }
++
++      return 0;
++}
++
++static struct xt_target xt_imq_reg[] __read_mostly = {
++      {
++              .name           = "IMQ",
++              .family         = AF_INET,
++              .checkentry     = imq_checkentry,
++              .target         = imq_target,
++              .targetsize     = sizeof(struct xt_imq_info),
++              .table          = "mangle",
++              .me             = THIS_MODULE
++      },
++      {
++              .name           = "IMQ",
++              .family         = AF_INET6,
++              .checkentry     = imq_checkentry,
++              .target         = imq_target,
++              .targetsize     = sizeof(struct xt_imq_info),
++              .table          = "mangle",
++              .me             = THIS_MODULE
++      },
++};
++
++static int __init imq_init(void)
++{
++      return xt_register_targets(xt_imq_reg, ARRAY_SIZE(xt_imq_reg));
++}
++
++static void __exit imq_fini(void)
++{
++      xt_unregister_targets(xt_imq_reg, ARRAY_SIZE(xt_imq_reg));
++}
++
++module_init(imq_init);
++module_exit(imq_fini);
++
++MODULE_AUTHOR("http://www.linuximq.net");
++MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See http://www.linuximq.net/ for more information.");
++MODULE_LICENSE("GPL");
++MODULE_ALIAS("ipt_IMQ");
++MODULE_ALIAS("ip6t_IMQ");
++
diff --git a/src/patches/linux-2.6-silence-acpi-blacklist.patch b/src/patches/linux-2.6-silence-acpi-blacklist.patch
new file mode 100644 (file)
index 0000000..c5997bb
--- /dev/null
@@ -0,0 +1,25 @@
+diff -up linux-2.6.26.noarch/drivers/acpi/blacklist.c.jx linux-2.6.26.noarch/drivers/acpi/blacklist.c
+--- linux-2.6.26.noarch/drivers/acpi/blacklist.c.jx    2008-07-13 17:51:29.000000000 -0400
++++ linux-2.6.26.noarch/drivers/acpi/blacklist.c       2008-08-12 14:21:39.000000000 -0400
+@@ -81,18 +81,18 @@ static int __init blacklist_by_year(void
+       /* Doesn't exist? Likely an old system */
+       if (!dmi_get_date(DMI_BIOS_DATE, &year, NULL, NULL)) {
+-              printk(KERN_ERR PREFIX "no DMI BIOS year, "
++              printk(KERN_INFO PREFIX "no DMI BIOS year, "
+                       "acpi=force is required to enable ACPI\n" );
+               return 1;
+       }
+       /* 0? Likely a buggy new BIOS */
+       if (year == 0) {
+-              printk(KERN_ERR PREFIX "DMI BIOS year==0, "
++              printk(KERN_INFO PREFIX "DMI BIOS year==0, "
+                       "assuming ACPI-capable machine\n" );
+               return 0;
+       }
+       if (year < CONFIG_ACPI_BLACKLIST_YEAR) {
+-              printk(KERN_ERR PREFIX "BIOS age (%d) fails cutoff (%d), "
++              printk(KERN_INFO PREFIX "BIOS age (%d) fails cutoff (%d), "
+                      "acpi=force is required to enable ACPI\n",
+                      year, CONFIG_ACPI_BLACKLIST_YEAR);
+               return 1;
diff --git a/src/patches/linux-2.6.30-no-pcspkr-modalias.patch b/src/patches/linux-2.6.30-no-pcspkr-modalias.patch
new file mode 100644 (file)
index 0000000..439269c
--- /dev/null
@@ -0,0 +1,12 @@
+diff --git a/drivers/input/misc/pcspkr.c b/drivers/input/misc/pcspkr.c
+index 34f4d2e..3e40c70 100644
+--- a/drivers/input/misc/pcspkr.c
++++ b/drivers/input/misc/pcspkr.c
+@@ -24,7 +24,6 @@
+ MODULE_AUTHOR("Vojtech Pavlik <vojtech@ucw.cz>");
+ MODULE_DESCRIPTION("PC Speaker beeper driver");
+ MODULE_LICENSE("GPL");
+-MODULE_ALIAS("platform:pcspkr");
+ static int pcspkr_event(struct input_dev *dev, unsigned int type, unsigned int code, int value)
+ {
diff --git a/src/patches/linux-3.10-ipp2p-0.8.2-ipfire.patch b/src/patches/linux-3.10-ipp2p-0.8.2-ipfire.patch
new file mode 100644 (file)
index 0000000..7393760
--- /dev/null
@@ -0,0 +1,1039 @@
+diff -Naur linux-3.10.9.org/include/linux/netfilter_ipv4/ipt_ipp2p.h linux-3.10.9/include/linux/netfilter_ipv4/ipt_ipp2p.h
+--- linux-3.10.9.org/include/linux/netfilter_ipv4/ipt_ipp2p.h  1970-01-01 01:00:00.000000000 +0100
++++ linux-3.10.9/include/linux/netfilter_ipv4/ipt_ipp2p.h      2013-08-25 16:00:53.398088168 +0200
+@@ -0,0 +1,31 @@
++#ifndef __IPT_IPP2P_H
++#define __IPT_IPP2P_H
++#define IPP2P_VERSION "0.8.2-ipfire"
++
++struct ipt_p2p_info {
++    int cmd;
++    int debug;
++};
++
++#endif //__IPT_IPP2P_H
++
++#define SHORT_HAND_IPP2P      1 /* --ipp2p switch*/
++//#define SHORT_HAND_DATA             4 /* --ipp2p-data switch*/
++#define SHORT_HAND_NONE               5 /* no short hand*/
++
++#define IPP2P_EDK             (1 << 1)
++#define IPP2P_DATA_KAZAA      (1 << 2)
++#define IPP2P_DATA_EDK                (1 << 3)
++#define IPP2P_DATA_DC         (1 << 4)
++#define IPP2P_DC              (1 << 5)
++#define IPP2P_DATA_GNU                (1 << 6)
++#define IPP2P_GNU             (1 << 7)
++#define IPP2P_KAZAA           (1 << 8)
++#define IPP2P_BIT             (1 << 9)
++#define IPP2P_APPLE           (1 << 10)
++#define IPP2P_SOUL            (1 << 11)
++#define IPP2P_WINMX           (1 << 12)
++#define IPP2P_ARES            (1 << 13)
++#define IPP2P_MUTE            (1 << 14)
++#define IPP2P_WASTE           (1 << 15)
++#define IPP2P_XDCC            (1 << 16)
+diff -Naur linux-3.10.9.org/net/ipv4/netfilter/ipt_ipp2p.c linux-3.10.9/net/ipv4/netfilter/ipt_ipp2p.c
+--- linux-3.10.9.org/net/ipv4/netfilter/ipt_ipp2p.c    1970-01-01 01:00:00.000000000 +0100
++++ linux-3.10.9/net/ipv4/netfilter/ipt_ipp2p.c        2013-08-25 16:00:53.398088168 +0200
+@@ -0,0 +1,970 @@
++#if defined(MODVERSIONS)
++#include <linux/modversions.h>
++#endif
++#include <linux/module.h>
++#include <linux/version.h>
++#include <linux/netfilter_ipv4/ip_tables.h>
++#include <linux/netfilter_ipv4/ipt_ipp2p.h>
++#include <net/tcp.h>
++#include <net/udp.h>
++
++#define get_u8(X,O)  (*(__u8 *)(X + O))
++#define get_u16(X,O)  (*(__u16 *)(X + O))
++#define get_u32(X,O)  (*(__u32 *)(X + O))
++
++MODULE_AUTHOR("Eicke Friedrich/Klaus Degner <ipp2p@ipp2p.org>");
++MODULE_DESCRIPTION("An extension to iptables to identify P2P traffic.");
++MODULE_LICENSE("GPL");
++
++
++/*Search for UDP eDonkey/eMule/Kad commands*/
++int
++udp_search_edk (unsigned char *haystack, int packet_len)
++{
++    unsigned char *t = haystack;
++    t += 8;
++
++      switch (t[0]) {
++              case 0xe3: 
++              {       /*edonkey*/
++                      switch (t[1]) 
++                      {
++                              /* client -> server status request */
++                              case 0x96: 
++                                      if (packet_len == 14) return ((IPP2P_EDK * 100) + 50);
++                                      break;
++                              /* server -> client status request */
++                              case 0x97: if (packet_len == 42) return ((IPP2P_EDK * 100) + 51);
++                                      break;
++                                              /* server description request */
++                                              /* e3 2a ff f0 .. | size == 6 */
++                              case 0xa2: if ( (packet_len == 14) && ( get_u16(t,2) == __constant_htons(0xfff0) ) ) return ((IPP2P_EDK * 100) + 52);
++                                      break;
++                                              /* server description response */
++                                              /* e3 a3 ff f0 ..  | size > 40 && size < 200 */
++                              //case 0xa3: return ((IPP2P_EDK * 100) + 53);
++                              //      break;
++                              case 0x9a: if (packet_len==26) return ((IPP2P_EDK * 100) + 54);
++                                      break;
++
++                              case 0x92: if (packet_len==18) return ((IPP2P_EDK * 100) + 55);
++                                      break;
++                      }
++                      break;
++              }
++              case 0xe4: 
++              {
++                      switch (t[1]) 
++                      {
++                                              /* e4 20 .. | size == 43 */
++                              case 0x20: if ((packet_len == 43) && (t[2] != 0x00) && (t[34] != 0x00)) return ((IPP2P_EDK * 100) + 60);
++                                      break;
++                                              /* e4 00 .. 00 | size == 35 ? */
++                              case 0x00: if ((packet_len == 35) && (t[26] == 0x00)) return ((IPP2P_EDK * 100) + 61);
++                                      break;
++                                              /* e4 10 .. 00 | size == 35 ? */
++                              case 0x10: if ((packet_len == 35) && (t[26] == 0x00)) return ((IPP2P_EDK * 100) + 62);
++                                      break;
++                                              /* e4 18 .. 00 | size == 35 ? */
++                              case 0x18: if ((packet_len == 35) && (t[26] == 0x00)) return ((IPP2P_EDK * 100) + 63);
++                                      break;
++                                              /* e4 52 .. | size = 44 */
++                              case 0x52: if (packet_len == 44 ) return ((IPP2P_EDK * 100) + 64);
++                                      break;
++                                              /* e4 58 .. | size == 6 */
++                              case 0x58: if (packet_len == 14 ) return ((IPP2P_EDK * 100) + 65);
++                                      break;
++                                              /* e4 59 .. | size == 2 */
++                              case 0x59: if (packet_len == 10 )return ((IPP2P_EDK * 100) + 66);
++                                      break;
++                                      /* e4 28 .. | packet_len == 52,77,102,127... */
++                              case 0x28: if (((packet_len-52) % 25) == 0) return ((IPP2P_EDK * 100) + 67);
++                                      break;
++                                      /* e4 50 xx xx | size == 4 */
++                              case 0x50: if (packet_len == 12) return ((IPP2P_EDK * 100) + 68);
++                                      break;
++                                      /* e4 40 xx xx | size == 48 */
++                              case 0x40: if (packet_len == 56) return ((IPP2P_EDK * 100) + 69);
++                                      break;
++                      }
++                      break;
++              }
++      } /* end of switch (t[0]) */
++    return 0;
++}/*udp_search_edk*/
++
++
++/*Search for UDP Gnutella commands*/
++int
++udp_search_gnu (unsigned char *haystack, int packet_len)
++{
++    unsigned char *t = haystack;
++    t += 8;
++    
++    if (memcmp(t, "GND", 3) == 0) return ((IPP2P_GNU * 100) + 51);
++    if (memcmp(t, "GNUTELLA ", 9) == 0) return ((IPP2P_GNU * 100) + 52);
++    return 0;
++}/*udp_search_gnu*/
++
++
++/*Search for UDP KaZaA commands*/
++int
++udp_search_kazaa (unsigned char *haystack, int packet_len)
++{
++    unsigned char *t = haystack;
++    
++    if (t[packet_len-1] == 0x00){
++      t += (packet_len - 6);
++      if (memcmp(t, "KaZaA", 5) == 0) return (IPP2P_KAZAA * 100 +50);
++    }
++    
++    return 0;
++}/*udp_search_kazaa*/
++
++/*Search for UDP DirectConnect commands*/
++int
++udp_search_directconnect (unsigned char *haystack, int packet_len)
++{
++    unsigned char *t = haystack;
++    if ((*(t + 8) == 0x24) && (*(t + packet_len - 1) == 0x7c)) {
++      t+=8;
++      if (memcmp(t, "SR ", 3) == 0)                   return ((IPP2P_DC * 100) + 60);
++      if (memcmp(t, "Ping ", 5) == 0)                 return ((IPP2P_DC * 100) + 61);
++    }
++    return 0;
++}/*udp_search_directconnect*/
++
++
++
++/*Search for UDP BitTorrent commands*/
++int
++udp_search_bit (unsigned char *haystack, int packet_len)
++{
++      switch(packet_len)
++      {
++              case 24:
++                      /* ^ 00 00 04 17 27 10 19 80 */
++                      if ((ntohl(get_u32(haystack, 8)) == 0x00000417) && (ntohl(get_u32(haystack, 12)) == 0x27101980)) 
++                              return (IPP2P_BIT * 100 + 50);
++                      break;
++              case 44:
++                      if (get_u32(haystack, 16) == __constant_htonl(0x00000400) && get_u32(haystack, 36) == __constant_htonl(0x00000104)) 
++                              return (IPP2P_BIT * 100 + 51);
++                      if (get_u32(haystack, 16) == __constant_htonl(0x00000400))
++                              return (IPP2P_BIT * 100 + 61);
++                      break;
++              case 65:
++                      if (get_u32(haystack, 16) == __constant_htonl(0x00000404) && get_u32(haystack, 36) == __constant_htonl(0x00000104)) 
++                              return (IPP2P_BIT * 100 + 52);
++                      if (get_u32(haystack, 16) == __constant_htonl(0x00000404))
++                              return (IPP2P_BIT * 100 + 62);
++                      break;
++              case 67:
++                      if (get_u32(haystack, 16) == __constant_htonl(0x00000406) && get_u32(haystack, 36) == __constant_htonl(0x00000104)) 
++                              return (IPP2P_BIT * 100 + 53);
++                      if (get_u32(haystack, 16) == __constant_htonl(0x00000406))
++                              return (IPP2P_BIT * 100 + 63);
++                      break;
++              case 211:
++                      if (get_u32(haystack, 8) == __constant_htonl(0x00000405)) 
++                              return (IPP2P_BIT * 100 + 54);
++                      break;
++              case 29:
++                      if ((get_u32(haystack, 8) == __constant_htonl(0x00000401))) 
++                              return (IPP2P_BIT * 100 + 55);
++                      break;
++              case 52:
++                      if (get_u32(haystack,8)  == __constant_htonl(0x00000827) &&
++                      get_u32(haystack,12) == __constant_htonl(0x37502950))
++                              return (IPP2P_BIT * 100 + 80);
++                      break;
++              default:
++                      /* this packet does not have a constant size */
++                      if (packet_len >= 40 && get_u32(haystack, 16) == __constant_htonl(0x00000402) && get_u32(haystack, 36) == __constant_htonl(0x00000104)) 
++                              return (IPP2P_BIT * 100 + 56);
++                      break;
++      }
++    
++      /* some extra-bitcomet rules:
++      * "d1:" [a|r] "d2:id20:"
++      */
++      if (packet_len > 30 && get_u8(haystack, 8) == 'd' && get_u8(haystack, 9) == '1' && get_u8(haystack, 10) == ':' )
++      {
++              if (get_u8(haystack, 11) == 'a' || get_u8(haystack, 11) == 'r')
++              {
++                      if (memcmp(haystack+12,"d2:id20:",8)==0)
++                              return (IPP2P_BIT * 100 + 57);
++              }
++      }
++    
++#if 0
++      /* bitlord rules */
++      /* packetlen must be bigger than 40 */
++      /* first 4 bytes are zero */
++      if (packet_len > 40 && get_u32(haystack, 8) == 0x00000000)
++      {
++              /* first rule: 00 00 00 00 01 00 00 xx xx xx xx 00 00 00 00*/
++              if (get_u32(haystack, 12) == 0x00000000 && 
++                  get_u32(haystack, 16) == 0x00010000 &&
++                  get_u32(haystack, 24) == 0x00000000 )
++                      return (IPP2P_BIT * 100 + 71);
++                      
++              /* 00 01 00 00 0d 00 00 xx xx xx xx 00 00 00 00*/
++              if (get_u32(haystack, 12) == 0x00000001 && 
++                  get_u32(haystack, 16) == 0x000d0000 &&
++                  get_u32(haystack, 24) == 0x00000000 )
++                      return (IPP2P_BIT * 100 + 71);
++              
++                  
++      }
++#endif
++
++    return 0;
++}/*udp_search_bit*/
++
++
++
++/*Search for Ares commands*/
++//#define IPP2P_DEBUG_ARES
++int
++search_ares (const unsigned char *payload, const u16 plen)
++//int search_ares (unsigned char *haystack, int packet_len, int head_len)
++{
++//    const unsigned char *t = haystack + head_len;
++      
++      /* all ares packets start with  */
++      if (payload[1] == 0 && (plen - payload[0]) == 3)
++      {
++              switch (payload[2])
++              {
++                      case 0x5a:
++                              /* ares connect */
++                              if ( plen == 6 && payload[5] == 0x05 ) return ((IPP2P_ARES * 100) + 1);
++                              break;
++                      case 0x09:
++                              /* ares search, min 3 chars --> 14 bytes
++                               * lets define a search can be up to 30 chars --> max 34 bytes
++                               */
++                              if ( plen >= 14 && plen <= 34 ) return ((IPP2P_ARES * 100) + 1);
++                              break;
++#ifdef IPP2P_DEBUG_ARES
++                      default:
++                      printk(KERN_DEBUG "Unknown Ares command %x recognized, len: %u \n", (unsigned int) payload[2],plen);
++#endif /* IPP2P_DEBUG_ARES */
++              }
++      }
++
++#if 0         
++      /* found connect packet: 03 00 5a 04 03 05 */
++      /* new version ares 1.8: 03 00 5a xx xx 05 */
++    if ((plen) == 6){ /* possible connect command*/
++      if ((payload[0] == 0x03) && (payload[1] == 0x00) && (payload[2] == 0x5a) && (payload[5] == 0x05))
++          return ((IPP2P_ARES * 100) + 1);
++    }
++    if ((plen) == 60){        /* possible download command*/
++      if ((payload[59] == 0x0a) && (payload[58] == 0x0a)){
++          if (memcmp(t, "PUSH SHA1:", 10) == 0) /* found download command */
++              return ((IPP2P_ARES * 100) + 2);
++      }
++    }
++#endif
++
++    return 0;
++} /*search_ares*/
++
++/*Search for SoulSeek commands*/
++int
++search_soul (const unsigned char *payload, const u16 plen)
++{
++//#define IPP2P_DEBUG_SOUL
++    /* match: xx xx xx xx | xx = sizeof(payload) - 4 */
++    if (get_u32(payload, 0) == (plen - 4)){
++      const __u32 m=get_u32(payload, 4);
++      /* match 00 yy yy 00, yy can be everything */
++        if ( get_u8(payload, 4) == 0x00 && get_u8(payload, 7) == 0x00 )
++      {
++#ifdef IPP2P_DEBUG_SOUL
++      printk(KERN_DEBUG "0: Soulseek command 0x%x recognized\n",get_u32(payload, 4));
++#endif /* IPP2P_DEBUG_SOUL */
++              return ((IPP2P_SOUL * 100) + 1);
++      }
++      
++        /* next match: 01 yy 00 00 | yy can be everything */
++        if ( get_u8(payload, 4) == 0x01 && get_u16(payload, 6) == 0x0000 )
++      {
++#ifdef IPP2P_DEBUG_SOUL
++      printk(KERN_DEBUG "1: Soulseek command 0x%x recognized\n",get_u16(payload, 4));
++#endif /* IPP2P_DEBUG_SOUL */
++              return ((IPP2P_SOUL * 100) + 2);
++      }
++      
++      /* other soulseek commandos are: 1-5,7,9,13-18,22,23,26,28,35-37,40-46,50,51,60,62-69,91,92,1001 */
++      /* try to do this in an intelligent way */
++      /* get all small commandos */
++      switch(m)
++      {
++              case 7:
++              case 9:
++              case 22:
++              case 23:
++              case 26:
++              case 28:
++              case 50:
++              case 51:
++              case 60:
++              case 91:
++              case 92:
++              case 1001:
++#ifdef IPP2P_DEBUG_SOUL
++              printk(KERN_DEBUG "2: Soulseek command 0x%x recognized\n",get_u16(payload, 4));
++#endif /* IPP2P_DEBUG_SOUL */
++              return ((IPP2P_SOUL * 100) + 3);
++      }
++      
++      if (m > 0 && m < 6 ) 
++      {
++#ifdef IPP2P_DEBUG_SOUL
++              printk(KERN_DEBUG "3: Soulseek command 0x%x recognized\n",get_u16(payload, 4));
++#endif /* IPP2P_DEBUG_SOUL */
++              return ((IPP2P_SOUL * 100) + 4);
++      }
++      if (m > 12 && m < 19 )
++      {
++#ifdef IPP2P_DEBUG_SOUL
++              printk(KERN_DEBUG "4: Soulseek command 0x%x recognized\n",get_u16(payload, 4));
++#endif /* IPP2P_DEBUG_SOUL */
++              return ((IPP2P_SOUL * 100) + 5);
++      }
++
++      if (m > 34 && m < 38 )
++      {
++#ifdef IPP2P_DEBUG_SOUL
++              printk(KERN_DEBUG "5: Soulseek command 0x%x recognized\n",get_u16(payload, 4));
++#endif /* IPP2P_DEBUG_SOUL */
++              return ((IPP2P_SOUL * 100) + 6);
++      }
++
++      if (m > 39 && m < 47 )
++      {
++#ifdef IPP2P_DEBUG_SOUL
++              printk(KERN_DEBUG "6: Soulseek command 0x%x recognized\n",get_u16(payload, 4));
++#endif /* IPP2P_DEBUG_SOUL */
++              return ((IPP2P_SOUL * 100) + 7);
++      }
++
++      if (m > 61 && m < 70 ) 
++      {
++#ifdef IPP2P_DEBUG_SOUL
++              printk(KERN_DEBUG "7: Soulseek command 0x%x recognized\n",get_u16(payload, 4));
++#endif /* IPP2P_DEBUG_SOUL */
++              return ((IPP2P_SOUL * 100) + 8);
++      }
++
++#ifdef IPP2P_DEBUG_SOUL
++      printk(KERN_DEBUG "unknown SOULSEEK command: 0x%x, first 16 bit: 0x%x, first 8 bit: 0x%x ,soulseek ???\n",get_u32(payload, 4),get_u16(payload, 4) >> 16,get_u8(payload, 4) >> 24);
++#endif /* IPP2P_DEBUG_SOUL */
++    }
++      
++      /* match 14 00 00 00 01 yy 00 00 00 STRING(YY) 01 00 00 00 00 46|50 00 00 00 00 */
++      /* without size at the beginning !!! */
++      if ( get_u32(payload, 0) == 0x14 && get_u8(payload, 4) == 0x01 )
++      {
++              __u32 y=get_u32(payload, 5);
++              /* we need 19 chars + string */
++              if ( (y + 19) <= (plen) )
++              {
++                      const unsigned char *w=payload+9+y;
++                      if (get_u32(w, 0) == 0x01 && ( get_u16(w, 4) == 0x4600 || get_u16(w, 4) == 0x5000) && get_u32(w, 6) == 0x00);
++#ifdef IPP2P_DEBUG_SOUL
++                      printk(KERN_DEBUG "Soulssek special client command recognized\n");
++#endif /* IPP2P_DEBUG_SOUL */
++                      return ((IPP2P_SOUL * 100) + 9);
++              }
++      }
++    return 0;
++}
++
++
++/*Search for WinMX commands*/
++int
++search_winmx (const unsigned char *payload, const u16 plen)
++{
++//#define IPP2P_DEBUG_WINMX
++    if (((plen) == 4) && (memcmp(payload, "SEND", 4) == 0))  return ((IPP2P_WINMX * 100) + 1);
++    if (((plen) == 3) && (memcmp(payload, "GET", 3) == 0))  return ((IPP2P_WINMX * 100) + 2);
++    //if (packet_len < (head_len + 10)) return 0;
++    if (plen < 10) return 0;
++    
++    if ((memcmp(payload, "SEND", 4) == 0) || (memcmp(payload, "GET", 3) == 0)){
++        u16 c=4;
++        const u16 end=plen-2;
++        u8 count=0;
++        while (c < end)
++        {
++              if (payload[c]== 0x20 && payload[c+1] == 0x22)
++              {
++                      c++;
++                      count++;
++                      if (count>=2) return ((IPP2P_WINMX * 100) + 3);
++              }
++              c++;
++        }
++    }
++    
++    if ( plen == 149 && payload[0] == '8' )
++    {
++#ifdef IPP2P_DEBUG_WINMX
++      printk(KERN_INFO "maybe WinMX\n");
++#endif
++      if (get_u32(payload,17) == 0 && get_u32(payload,21) == 0 && get_u32(payload,25) == 0 &&
++//                get_u32(payload,33) == __constant_htonl(0x71182b1a) && get_u32(payload,37) == __constant_htonl(0x05050000) &&
++//                get_u32(payload,133) == __constant_htonl(0x31097edf) && get_u32(payload,145) == __constant_htonl(0xdcb8f792))
++          get_u16(payload,39) == 0 && get_u16(payload,135) == __constant_htons(0x7edf) && get_u16(payload,147) == __constant_htons(0xf792))
++          
++      {
++#ifdef IPP2P_DEBUG_WINMX
++              printk(KERN_INFO "got WinMX\n");
++#endif
++              return ((IPP2P_WINMX * 100) + 4);
++      }
++    }
++    return 0;
++} /*search_winmx*/
++
++
++/*Search for appleJuice commands*/
++int
++search_apple (const unsigned char *payload, const u16 plen)
++{
++    if ( (plen > 7) && (payload[6] == 0x0d) && (payload[7] == 0x0a) && (memcmp(payload, "ajprot", 6) == 0))  return (IPP2P_APPLE * 100);
++    
++    return 0;
++}
++
++
++/*Search for BitTorrent commands*/
++int
++search_bittorrent (const unsigned char *payload, const u16 plen)
++{
++    if (plen > 20)
++    {
++      /* test for match 0x13+"BitTorrent protocol" */
++      if (payload[0] == 0x13) 
++      {
++              if (memcmp(payload+1, "BitTorrent protocol", 19) == 0) return (IPP2P_BIT * 100);
++      }
++      
++      /* get tracker commandos, all starts with GET /
++      * then it can follow: scrape| announce
++      * and then ?hash_info=
++      */
++      if (memcmp(payload,"GET /",5) == 0)
++      {
++              /* message scrape */
++              if ( memcmp(payload+5,"scrape?info_hash=",17)==0 ) return (IPP2P_BIT * 100 + 1);
++              /* message announce */
++              if ( memcmp(payload+5,"announce?info_hash=",19)==0 ) return (IPP2P_BIT * 100 + 2);
++      }
++    } 
++    else 
++    {
++      /* bitcomet encryptes the first packet, so we have to detect another 
++       * one later in the flow */
++       /* first try failed, too many missdetections */
++      //if ( size == 5 && get_u32(t,0) == __constant_htonl(1) && t[4] < 3) return (IPP2P_BIT * 100 + 3);
++      
++      /* second try: block request packets */
++      if ( plen == 17 && get_u32(payload,0) == __constant_htonl(0x0d) && payload[4] == 0x06 && get_u32(payload,13) == __constant_htonl(0x4000) ) return (IPP2P_BIT * 100 + 3);
++    }
++
++    return 0;
++}
++
++
++
++/*check for Kazaa get command*/
++int
++search_kazaa (const unsigned char *payload, const u16 plen)
++
++{
++    if ((payload[plen-2] == 0x0d) && (payload[plen-1] == 0x0a) && memcmp(payload, "GET /.hash=", 11) == 0)
++      return (IPP2P_DATA_KAZAA * 100);
++
++    return 0;
++}
++
++
++/*check for gnutella get command*/
++int
++search_gnu (const unsigned char *payload, const u16 plen)
++{
++    if ((payload[plen-2] == 0x0d) && (payload[plen-1] == 0x0a))
++    {
++      if (memcmp(payload, "GET /get/", 9) == 0)       return ((IPP2P_DATA_GNU * 100) + 1);
++      if (memcmp(payload, "GET /uri-res/", 13) == 0) return ((IPP2P_DATA_GNU * 100) + 2); 
++    }
++    return 0;
++}
++
++
++/*check for gnutella get commands and other typical data*/
++int
++search_all_gnu (const unsigned char *payload, const u16 plen)
++{
++    
++    if ((payload[plen-2] == 0x0d) && (payload[plen-1] == 0x0a))
++    {
++      
++      if (memcmp(payload, "GNUTELLA CONNECT/", 17) == 0) return ((IPP2P_GNU * 100) + 1);
++      if (memcmp(payload, "GNUTELLA/", 9) == 0) return ((IPP2P_GNU * 100) + 2);    
++    
++    
++      if ((memcmp(payload, "GET /get/", 9) == 0) || (memcmp(payload, "GET /uri-res/", 13) == 0))
++      {        
++              u16 c=8;
++              const u16 end=plen-22;
++              while (c < end) {
++                      if ( payload[c] == 0x0a && payload[c+1] == 0x0d && ((memcmp(&payload[c+2], "X-Gnutella-", 11) == 0) || (memcmp(&payload[c+2], "X-Queue:", 8) == 0))) 
++                              return ((IPP2P_GNU * 100) + 3);
++                      c++;
++              }
++      }
++    }
++    return 0;
++}
++
++
++/*check for KaZaA download commands and other typical data*/
++int
++search_all_kazaa (const unsigned char *payload, const u16 plen)
++{
++    if ((payload[plen-2] == 0x0d) && (payload[plen-1] == 0x0a))
++    {
++
++      if (memcmp(payload, "GIVE ", 5) == 0) return ((IPP2P_KAZAA * 100) + 1);
++    
++      if (memcmp(payload, "GET /", 5) == 0) {
++              u16 c = 8;
++              const u16 end=plen-22;
++              while (c < end) {
++                      if ( payload[c] == 0x0a && payload[c+1] == 0x0d && ((memcmp(&payload[c+2], "X-Kazaa-Username: ", 18) == 0) || (memcmp(&payload[c+2], "User-Agent: PeerEnabler/", 24) == 0)))
++                              return ((IPP2P_KAZAA * 100) + 2);
++                      c++;
++              }
++      }
++    }
++    return 0;
++}
++
++/*fast check for edonkey file segment transfer command*/
++int
++search_edk (const unsigned char *payload, const u16 plen)
++{
++    if (payload[0] != 0xe3) 
++      return 0;
++    else {
++      if (payload[5] == 0x47) 
++          return (IPP2P_DATA_EDK * 100);
++      else    
++          return 0;
++    }
++}
++
++
++
++/*intensive but slower search for some edonkey packets including size-check*/
++int
++search_all_edk (const unsigned char *payload, const u16 plen)
++{
++    if (payload[0] != 0xe3) 
++      return 0;
++    else {
++      //t += head_len;        
++      const u16 cmd = get_u16(payload, 1);
++      if (cmd == (plen - 5)) {
++          switch (payload[5]) {
++              case 0x01: return ((IPP2P_EDK * 100) + 1);      /*Client: hello or Server:hello*/
++              case 0x4c: return ((IPP2P_EDK * 100) + 9);      /*Client: Hello-Answer*/
++          }
++      }
++      return 0;
++     }
++}
++
++
++/*fast check for Direct Connect send command*/
++int
++search_dc (const unsigned char *payload, const u16 plen)
++{
++
++    if (payload[0] != 0x24 ) 
++      return 0;
++    else {
++      if (memcmp(&payload[1], "Send|", 5) == 0)
++          return (IPP2P_DATA_DC * 100);
++      else
++          return 0;
++    } 
++
++}
++
++
++/*intensive but slower check for all direct connect packets*/
++int
++search_all_dc (const unsigned char *payload, const u16 plen)
++{
++//    unsigned char *t = haystack;
++
++    if (payload[0] == 0x24 && payload[plen-1] == 0x7c) 
++    {
++      const unsigned char *t=&payload[1];
++              /* Client-Hub-Protocol */
++      if (memcmp(t, "Lock ", 5) == 0)                 return ((IPP2P_DC * 100) + 1);
++      /* Client-Client-Protocol, some are already recognized by client-hub (like lock) */
++      if (memcmp(t, "MyNick ", 7) == 0)               return ((IPP2P_DC * 100) + 38); 
++    }
++    return 0;
++}
++
++/*check for mute*/
++int
++search_mute (const unsigned char *payload, const u16 plen)
++{
++      if ( plen == 209 || plen == 345 || plen == 473 || plen == 609 || plen == 1121 )
++      {
++              //printk(KERN_DEBUG "size hit: %u",size);
++              if (memcmp(payload,"PublicKey: ",11) == 0 )
++              { 
++                      return ((IPP2P_MUTE * 100) + 0);
++                      
++/*                    if (memcmp(t+size-14,"\x0aEndPublicKey\x0a",14) == 0)
++                      {
++                              printk(KERN_DEBUG "end pubic key hit: %u",size);
++                              
++                      }*/
++              }
++      }
++      return 0;
++}
++
++
++/* check for xdcc */
++int
++search_xdcc (const unsigned char *payload, const u16 plen)
++{
++      /* search in small packets only */
++      if (plen > 20 && plen < 200 && payload[plen-1] == 0x0a && payload[plen-2] == 0x0d && memcmp(payload,"PRIVMSG ",8) == 0)
++      {
++              
++              u16 x=10;
++              const u16 end=plen - 13;
++              
++              /* is seems to be a irc private massage, chedck for xdcc command */
++              while (x < end)
++              {
++                      if (payload[x] == ':')
++                      {
++                              if ( memcmp(&payload[x+1],"xdcc send #",11) == 0 )
++                                      return ((IPP2P_XDCC * 100) + 0);
++                      }
++                      x++;
++              }
++      }
++      return 0;
++}
++
++/* search for waste */
++int search_waste(const unsigned char *payload, const u16 plen)
++{
++      if ( plen >= 8 && memcmp(payload,"GET.sha1:",9) == 0)
++              return ((IPP2P_WASTE * 100) + 0);
++
++      return 0;
++}
++
++
++static struct {
++    int command;
++    __u8 short_hand;                  /*for fucntions included in short hands*/
++    int packet_len;
++    int (*function_name) (const unsigned char *, const u16);
++} matchlist[] = {
++    {IPP2P_EDK,SHORT_HAND_IPP2P,20, &search_all_edk},
++//    {IPP2P_DATA_KAZAA,SHORT_HAND_DATA,200, &search_kazaa},
++//    {IPP2P_DATA_EDK,SHORT_HAND_DATA,60, &search_edk},
++//    {IPP2P_DATA_DC,SHORT_HAND_DATA,26, &search_dc},
++    {IPP2P_DC,SHORT_HAND_IPP2P,5, search_all_dc},
++//    {IPP2P_DATA_GNU,SHORT_HAND_DATA,40, &search_gnu},
++    {IPP2P_GNU,SHORT_HAND_IPP2P,5, &search_all_gnu},
++    {IPP2P_KAZAA,SHORT_HAND_IPP2P,5, &search_all_kazaa},
++    {IPP2P_BIT,SHORT_HAND_IPP2P,20, &search_bittorrent},
++    {IPP2P_APPLE,SHORT_HAND_IPP2P,5, &search_apple},
++    {IPP2P_SOUL,SHORT_HAND_IPP2P,5, &search_soul},
++    {IPP2P_WINMX,SHORT_HAND_IPP2P,2, &search_winmx},
++    {IPP2P_ARES,SHORT_HAND_IPP2P,5, &search_ares},
++    {IPP2P_MUTE,SHORT_HAND_NONE,200, &search_mute},
++    {IPP2P_WASTE,SHORT_HAND_NONE,5, &search_waste},
++    {IPP2P_XDCC,SHORT_HAND_NONE,5, &search_xdcc},
++    {0,0,0,NULL}
++};
++
++
++static struct {
++    int command;
++    __u8 short_hand;                  /*for fucntions included in short hands*/
++    int packet_len;
++    int (*function_name) (unsigned char *, int);
++} udp_list[] = {
++    { IPP2P_KAZAA, SHORT_HAND_IPP2P, 14, &udp_search_kazaa},
++    { IPP2P_BIT,   SHORT_HAND_IPP2P, 23, &udp_search_bit},
++    { IPP2P_GNU,   SHORT_HAND_IPP2P, 11, &udp_search_gnu},
++    { IPP2P_EDK,   SHORT_HAND_IPP2P,  9, &udp_search_edk},
++    { IPP2P_DC,    SHORT_HAND_IPP2P, 12, &udp_search_directconnect},    
++    { 0, 0, 0, NULL }
++};
++
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
++static int
++match(const struct sk_buff *skb,
++      const struct net_device *in,
++      const struct net_device *out,
++      const void *matchinfo,
++      int offset,
++      const void *hdr,
++      u_int16_t datalen,
++      int *hotdrop) 
++#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,16)
++static int
++match(const struct sk_buff *skb,
++      const struct net_device *in,
++      const struct net_device *out,
++      const void *matchinfo,
++      int offset,
++      int *hotdrop) 
++#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,17)
++static int
++match(const struct sk_buff *skb,
++      const struct net_device *in,
++      const struct net_device *out,
++      const void *matchinfo,
++      int offset,
++      unsigned int protoff,
++      int *hotdrop)
++#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)
++static int
++match(const struct sk_buff *skb,
++      const struct net_device *in,
++      const struct net_device *out,
++      const struct xt_match *match,
++      const void *matchinfo,
++      int offset,
++      unsigned int protoff,
++      int *hotdrop)
++#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28)
++static bool
++match(const struct sk_buff *skb,
++      const struct net_device *in,
++      const struct net_device *out,
++      const struct xt_match *match,
++      const void *matchinfo,
++      int offset, 
++      unsigned int protoff, 
++      bool *hotdrop)
++#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35)
++static bool
++match(const struct sk_buff *skb,
++      const struct xt_match_param *par)
++#else /* LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35) */
++static int
++match(const struct sk_buff *skb,
++      struct xt_action_param *par)
++#endif
++{
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28)
++      const struct ipt_p2p_info *info = matchinfo;
++#else
++      const struct ipt_p2p_info *info = par->matchinfo;
++      const int offset = par->fragoff;
++#endif
++    unsigned char  *haystack;
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
++    struct iphdr *ip = ip_hdr(skb);
++#else
++    struct iphdr *ip = skb->nh.iph;
++#endif
++    int p2p_result = 0, i = 0;
++//    int head_len;
++    int hlen = ntohs(ip->tot_len)-(ip->ihl*4);        /*hlen = packet-data length*/
++
++    /*must not be a fragment*/
++    if (offset) {
++      if (info->debug) printk("IPP2P.match: offset found %i \n",offset);
++      return 0;
++    }
++    
++    /*make sure that skb is linear*/
++    if(skb_is_nonlinear(skb)){
++      if (info->debug) printk("IPP2P.match: nonlinear skb found\n");
++      return 0;
++    }
++
++
++    haystack=(char *)ip+(ip->ihl*4);          /*haystack = packet data*/
++
++    switch (ip->protocol){
++      case IPPROTO_TCP:               /*what to do with a TCP packet*/
++      {
++          struct tcphdr *tcph = (void *) ip + ip->ihl * 4;
++          
++          if (tcph->fin) return 0;  /*if FIN bit is set bail out*/
++          if (tcph->syn) return 0;  /*if SYN bit is set bail out*/
++          if (tcph->rst) return 0;  /*if RST bit is set bail out*/
++          
++          haystack += tcph->doff * 4; /*get TCP-Header-Size*/
++          hlen -= tcph->doff * 4;
++          while (matchlist[i].command) {
++              if ((((info->cmd & matchlist[i].command) == matchlist[i].command) ||
++                  ((info->cmd & matchlist[i].short_hand) == matchlist[i].short_hand)) &&
++                  (hlen > matchlist[i].packet_len)) {
++                          p2p_result = matchlist[i].function_name(haystack, hlen);
++                          if (p2p_result) 
++                          {
++                              if (info->debug) printk("IPP2P.debug:TCP-match: %i from: %pl4:%i to: %pl4:%i Length: %i\n", 
++                                  p2p_result, &ip->saddr,ntohs(tcph->source), &ip->daddr,ntohs(tcph->dest),hlen);
++                              return p2p_result;
++                          }
++              }
++          i++;
++          }
++          return p2p_result;
++      }
++      
++      case IPPROTO_UDP:               /*what to do with an UDP packet*/
++      {
++          struct udphdr *udph = (void *) ip + ip->ihl * 4;
++          
++          while (udp_list[i].command){
++              if ((((info->cmd & udp_list[i].command) == udp_list[i].command) ||
++                  ((info->cmd & udp_list[i].short_hand) == udp_list[i].short_hand)) &&
++                  (hlen > udp_list[i].packet_len)) {
++                          p2p_result = udp_list[i].function_name(haystack, hlen);
++                          if (p2p_result){
++                              if (info->debug) printk("IPP2P.debug:UDP-match: %i from: %pl4:%i to: %pl4:%i Length: %i\n", 
++                                  p2p_result, &ip->saddr,ntohs(udph->source), &ip->daddr,ntohs(udph->dest),hlen);
++                              return p2p_result;
++                          }
++              }
++          i++;
++          }                   
++          return p2p_result;
++      }
++    
++      default: return 0;
++    }
++}
++
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,16)
++static int
++checkentry(const char *tablename,
++         const struct ipt_ip *ip,
++         void *matchinfo,
++         unsigned int matchsize,
++         unsigned int hook_mask)
++#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,17)
++static int
++checkentry(const char *tablename,
++         const void *inf,
++         void *matchinfo,
++         unsigned int matchsize,
++         unsigned int hook_mask)
++#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
++static int
++checkentry(const char *tablename,
++         const void *inf,
++         const struct xt_match *match,
++         void *matchinfo,
++         unsigned int matchsize,
++         unsigned int hook_mask)
++#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)
++static int
++checkentry(const char *tablename,
++         const void *inf,
++         const struct xt_match *match,
++         void *matchinfo,
++         unsigned int hook_mask)
++#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28)
++static bool
++checkentry(const char *tablename,
++         const void *inf,
++         const struct xt_match *match,
++         void *matchinfo,
++         unsigned int hook_mask)
++#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35)
++static bool
++checkentry(const struct xt_mtchk_param *par)
++#else /* LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35) */
++static int
++checkentry(const struct xt_mtchk_param *par)
++#endif
++{
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35)
++    return 1;
++#else
++    return 0;
++#endif
++}
++
++
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
++static struct xt_match ipp2p_match = {
++#else
++static struct ipt_match ipp2p_match = { 
++#endif
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
++      { NULL, NULL }, 
++      "ipp2p", 
++      &ipp2p_match, 
++      &ipp2p_checkentry, 
++      NULL, 
++      THIS_MODULE
++#endif
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
++      .name           = "ipp2p",
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
++      .family         = AF_INET,
++#endif
++      .match          = &match,
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,17)
++      .matchsize      = sizeof(struct ipt_p2p_info),
++#endif
++      .checkentry     = &checkentry,
++      .me             = THIS_MODULE,
++#endif
++};
++
++
++static int __init init(void)
++{
++    printk(KERN_INFO "IPP2P v%s loading\n", IPP2P_VERSION);
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
++    return xt_register_match(&ipp2p_match);
++#else
++    return ipt_register_match(&ipp2p_match);
++#endif
++}
++      
++static void __exit fini(void)
++{
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
++    xt_unregister_match(&ipp2p_match);
++#else
++    ipt_unregister_match(&ipp2p_match);
++#endif
++    printk(KERN_INFO "IPP2P v%s unloaded\n", IPP2P_VERSION);    
++}
++      
++module_init(init);
++module_exit(fini);
++
++
+diff -Naur linux-3.10.9.org/net/ipv4/netfilter/Kconfig linux-3.10.9/net/ipv4/netfilter/Kconfig
+--- linux-3.10.9.org/net/ipv4/netfilter/Kconfig        2013-08-21 00:40:47.000000000 +0200
++++ linux-3.10.9/net/ipv4/netfilter/Kconfig    2013-08-25 16:00:53.398088168 +0200
+@@ -320,5 +320,15 @@
+ endif # IP_NF_ARPTABLES
++config IP_NF_MATCH_IPP2P
++      tristate  'IPP2P match support'
++      depends on IP_NF_IPTABLES
++      help
++        This option makes possible to match some P2P packets
++        therefore helps controlling such traffic.
++      
++        If you want to compile it as a module, say M here and read
++        <file:Documentation/modules.txt>.  If unsure, say `N'.
++
+ endmenu
+diff -Naur linux-3.10.9.org/net/ipv4/netfilter/Makefile linux-3.10.9/net/ipv4/netfilter/Makefile
+--- linux-3.10.9.org/net/ipv4/netfilter/Makefile       2013-08-21 00:40:47.000000000 +0200
++++ linux-3.10.9/net/ipv4/netfilter/Makefile   2013-08-25 16:03:21.634750053 +0200
+@@ -40,6 +40,7 @@
+ # matches
+ obj-$(CONFIG_IP_NF_MATCH_AH) += ipt_ah.o
+ obj-$(CONFIG_IP_NF_MATCH_RPFILTER) += ipt_rpfilter.o
++obj-$(CONFIG_IP_NF_MATCH_IPP2P) += ipt_ipp2p.o
+ # targets
+ obj-$(CONFIG_IP_NF_TARGET_CLUSTERIP) += ipt_CLUSTERIP.o
diff --git a/src/patches/linux-3.10-smsc95xx-add_mac_addr_param.patch b/src/patches/linux-3.10-smsc95xx-add_mac_addr_param.patch
new file mode 100644 (file)
index 0000000..6a4b3c5
--- /dev/null
@@ -0,0 +1,82 @@
+diff -Naur linux-3.10.10/drivers/net/usb/smsc95xx.c linux-c1af7c6db316763b9dce7137495cb9ada8fa17b4/drivers/net/usb/smsc95xx.c
+--- linux-3.10.10/drivers/net/usb/smsc95xx.c   2013-08-29 18:47:51.000000000 +0200
++++ linux-c1af7c6db316763b9dce7137495cb9ada8fa17b4/drivers/net/usb/smsc95xx.c  2013-08-30 20:12:54.000000000 +0200
+@@ -61,6 +61,7 @@
+ #define SUSPEND_SUSPEND3              (0x08)
+ #define SUSPEND_ALLMODES              (SUSPEND_SUSPEND0 | SUSPEND_SUSPEND1 | \
+                                        SUSPEND_SUSPEND2 | SUSPEND_SUSPEND3)
++#define MAC_ADDR_LEN                    (6)
+ struct smsc95xx_priv {
+       u32 mac_cr;
+@@ -76,6 +77,10 @@
+ module_param(turbo_mode, bool, 0644);
+ MODULE_PARM_DESC(turbo_mode, "Enable multiple frames per Rx transaction");
++static char *macaddr = ":";
++module_param(macaddr, charp, 0);
++MODULE_PARM_DESC(macaddr, "MAC address");
++
+ static int __must_check __smsc95xx_read_reg(struct usbnet *dev, u32 index,
+                                           u32 *data, int in_pm)
+ {
+@@ -765,8 +770,59 @@
+       return generic_mii_ioctl(&dev->mii, if_mii(rq), cmd, NULL);
+ }
++/* Check the macaddr module parameter for a MAC address */
++static int smsc95xx_is_macaddr_param(struct usbnet *dev, u8 *dev_mac)
++{
++       int i, j, got_num, num;
++       u8 mtbl[MAC_ADDR_LEN];
++
++       if (macaddr[0] == ':')
++               return 0;
++
++       i = 0;
++       j = 0;
++       num = 0;
++       got_num = 0;
++       while (j < MAC_ADDR_LEN) {
++               if (macaddr[i] && macaddr[i] != ':') {
++                       got_num++;
++                       if ('0' <= macaddr[i] && macaddr[i] <= '9')
++                               num = num * 16 + macaddr[i] - '0';
++                       else if ('A' <= macaddr[i] && macaddr[i] <= 'F')
++                               num = num * 16 + 10 + macaddr[i] - 'A';
++                       else if ('a' <= macaddr[i] && macaddr[i] <= 'f')
++                               num = num * 16 + 10 + macaddr[i] - 'a';
++                       else
++                               break;
++                       i++;
++               } else if (got_num == 2) {
++                       mtbl[j++] = (u8) num;
++                       num = 0;
++                       got_num = 0;
++                       i++;
++               } else {
++                       break;
++               }
++       }
++
++       if (j == MAC_ADDR_LEN) {
++               netif_dbg(dev, ifup, dev->net, "Overriding MAC address with: "
++               "%02x:%02x:%02x:%02x:%02x:%02x\n", mtbl[0], mtbl[1], mtbl[2],
++                                               mtbl[3], mtbl[4], mtbl[5]);
++               for (i = 0; i < MAC_ADDR_LEN; i++)
++                       dev_mac[i] = mtbl[i];
++               return 1;
++       } else {
++               return 0;
++       }
++}
++
+ static void smsc95xx_init_mac_address(struct usbnet *dev)
+ {
++       /* Check module parameters */
++       if (smsc95xx_is_macaddr_param(dev, dev->net->dev_addr))
++               return;
++
+       /* try reading mac address from EEPROM */
+       if (smsc95xx_read_eeprom(dev, EEPROM_MAC_OFFSET, ETH_ALEN,
+                       dev->net->dev_addr) == 0) {
diff --git a/src/patches/linux-3.10.10-arm_kirkwood_setups.patch b/src/patches/linux-3.10.10-arm_kirkwood_setups.patch
new file mode 100644 (file)
index 0000000..3564465
--- /dev/null
@@ -0,0 +1,704 @@
+diff -Naur linux-3.10.10.org/arch/arm/Kconfig linux-3.10.10/arch/arm/Kconfig
+--- linux-3.10.10.org/arch/arm/Kconfig 2013-08-29 18:47:51.000000000 +0200
++++ linux-3.10.10/arch/arm/Kconfig     2013-09-02 19:37:01.000000000 +0200
+@@ -217,7 +217,7 @@
+ config ARM_PATCH_PHYS_VIRT
+       bool "Patch physical to virtual translations at runtime" if EMBEDDED
+-      default y
++      default n
+       depends on !XIP_KERNEL && MMU
+       depends on !ARCH_REALVIEW || !SPARSEMEM
+       help
+diff -Naur linux-3.10.10.org/arch/arm/mach-kirkwood/dreamplug-setup.c linux-3.10.10/arch/arm/mach-kirkwood/dreamplug-setup.c
+--- linux-3.10.10.org/arch/arm/mach-kirkwood/dreamplug-setup.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.10.10/arch/arm/mach-kirkwood/dreamplug-setup.c     2013-09-02 21:29:28.000000000 +0200
+@@ -0,0 +1,151 @@
++/*
++ * arch/arm/mach-kirkwood/dreamplug-setup.c
++ *
++ * Marvell DreamPlug Reference Board Setup
++ *
++ * This file is licensed under the terms of the GNU General Public
++ * License version 2.  This program is licensed "as is" without any
++ * warranty of any kind, whether express or implied.
++ */
++
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/mtd/mtd.h>
++#include <linux/mtd/partitions.h>
++#include <linux/ata_platform.h>
++#include <linux/mv643xx_eth.h>
++#include <linux/gpio.h>
++#include <linux/leds.h>
++#include <linux/spi/flash.h>
++#include <linux/spi/spi.h>
++#include <asm/mach-types.h>
++#include <asm/mach/arch.h>
++#include <mach/kirkwood.h>
++#include <linux/platform_data/mmc-mvsdio.h>
++#include "common.h"
++#include "mpp.h"
++
++static const struct flash_platform_data dreamplug_spi_slave_data = {
++      .type           = "mx25l1606e",
++};
++
++static struct spi_board_info __initdata dreamplug_spi_slave_info[] = {
++      {
++              .modalias       = "m25p80",
++              .platform_data  = &dreamplug_spi_slave_data,
++              .irq            = -1,
++              .max_speed_hz   = 50000000,
++              .bus_num        = 0,
++              .chip_select    = 0,
++      },
++};
++
++static struct mv643xx_eth_platform_data dreamplug_ge00_data = {
++      .phy_addr       = MV643XX_ETH_PHY_ADDR(0),
++};
++
++static struct mv643xx_eth_platform_data dreamplug_ge01_data = {
++      .phy_addr       = MV643XX_ETH_PHY_ADDR(1),
++};
++
++static struct mv_sata_platform_data dreamplug_sata_data = {
++      .n_ports        = 1,
++};
++
++static struct mvsdio_platform_data dreamplug_mvsdio_data = {
++      /* unfortunately the CD signal has not been connected */
++};
++
++static struct gpio_led dreamplug_led_pins[] = {
++      {
++              .name                   = "dreamplug:blue:bluetooth",
++              .gpio                   = 47,
++              .active_low             = 1,
++      },
++      {
++              .name                   = "dreamplug:green:wlan",
++              .gpio                   = 48,
++              .active_low             = 1,
++      },
++      {
++              .name                   = "dreamplug:blue:wlanap",
++              .gpio                   = 49,
++              .active_low             = 1,
++      },
++};
++
++static struct gpio_led_platform_data dreamplug_led_data = {
++      .leds           = dreamplug_led_pins,
++      .num_leds       = ARRAY_SIZE(dreamplug_led_pins),
++};
++
++static struct platform_device dreamplug_leds = {
++      .name   = "leds-gpio",
++      .id     = -1,
++      .dev    = {
++              .platform_data  = &dreamplug_led_data,
++      }
++};
++
++static unsigned int dreamplug_mpp_config[] __initdata = {
++      MPP0_SPI_SCn,
++      MPP1_SPI_MOSI,
++      MPP2_SPI_SCK,
++      MPP3_SPI_MISO,
++      MPP4_GPIO,
++      MPP5_GPO,
++      MPP7_GPO,
++      MPP18_GPO,
++      MPP19_GPO,
++      MPP47_GPIO,     /* B_BLED */
++      MPP48_GPIO,     /* W_GLED */
++      MPP49_GPIO,     /* W_BLED */
++      0
++};
++
++static void __init dreamplug_legacy_init(void)
++{
++      /*
++       * Basic setup. Needs to be called early.
++       */
++      kirkwood_init();
++      kirkwood_mpp_conf(dreamplug_mpp_config);
++
++      kirkwood_uart0_init();
++
++      spi_register_board_info(dreamplug_spi_slave_info,
++                              ARRAY_SIZE(dreamplug_spi_slave_info));
++
++      kirkwood_spi_init();
++      kirkwood_ehci_init();
++
++      kirkwood_ge00_init(&dreamplug_ge00_data);
++      kirkwood_ge01_init(&dreamplug_ge01_data);
++      kirkwood_sata_init(&dreamplug_sata_data);
++      kirkwood_sdio_init(&dreamplug_mvsdio_data);
++
++      platform_device_register(&dreamplug_leds);
++}
++
++MACHINE_START(DREAMPLUG, "Marvell DreamPlug Reference Board")
++      /* Maintainer: Siddarth Gore <gores <at> marvell.com> */
++      .atag_offset    = 0x100,
++      .init_machine   = dreamplug_legacy_init,
++      .map_io         = kirkwood_map_io,
++      .init_early     = kirkwood_init_early,
++      .init_irq       = kirkwood_init_irq,
++      .init_time      = kirkwood_timer_init,
++      .restart        = kirkwood_restart,
++MACHINE_END
++
++MACHINE_START(DREAMPLUG1, "Marvell DreamPlug Reference Board")
++      .atag_offset    = 0x100,
++      .init_machine   = dreamplug_legacy_init,
++      .map_io         = kirkwood_map_io,
++      .init_early     = kirkwood_init_early,
++      .init_irq       = kirkwood_init_irq,
++      .init_time      = kirkwood_timer_init,
++      .restart        = kirkwood_restart,
++
++MACHINE_END
+diff -Naur linux-3.10.10.org/arch/arm/mach-kirkwood/guruplug-setup.c linux-3.10.10/arch/arm/mach-kirkwood/guruplug-setup.c
+--- linux-3.10.10.org/arch/arm/mach-kirkwood/guruplug-setup.c  2013-08-29 18:47:51.000000000 +0200
++++ linux-3.10.10/arch/arm/mach-kirkwood/guruplug-setup.c      2013-09-02 19:37:02.000000000 +0200
+@@ -11,6 +11,7 @@
+ #include <linux/kernel.h>
+ #include <linux/init.h>
+ #include <linux/platform_device.h>
++#include <linux/mtd/mtd.h>
+ #include <linux/mtd/partitions.h>
+ #include <linux/ata_platform.h>
+ #include <linux/mv643xx_eth.h>
+@@ -27,15 +28,16 @@
+       {
+               .name = "u-boot",
+               .offset = 0,
+-              .size = SZ_1M
++              .size = SZ_1M,
++              .mask_flags = MTD_WRITEABLE, /* read only */
+       }, {
+               .name = "uImage",
+               .offset = MTDPART_OFS_NXTBLK,
+-              .size = SZ_4M
++              .size = SZ_4M,
+       }, {
+               .name = "root",
+               .offset = MTDPART_OFS_NXTBLK,
+-              .size = MTDPART_SIZ_FULL
++              .size = MTDPART_SIZ_FULL,
+       },
+ };
+diff -Naur linux-3.10.10.org/arch/arm/mach-kirkwood/iconnect-setup.c linux-3.10.10/arch/arm/mach-kirkwood/iconnect-setup.c
+--- linux-3.10.10.org/arch/arm/mach-kirkwood/iconnect-setup.c  1970-01-01 01:00:00.000000000 +0100
++++ linux-3.10.10/arch/arm/mach-kirkwood/iconnect-setup.c      2013-09-02 21:31:09.000000000 +0200
+@@ -0,0 +1,214 @@
++/*
++ * arch/arm/mach-kirkwood/iconnect-setup.c
++ *
++ * Iomega iConnect Wireless Data Station Board Setup
++ *
++ * This file is licensed under the terms of the GNU General Public
++ * License version 2.  This program is licensed "as is" without any
++ * warranty of any kind, whether express or implied.
++ */
++
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/mtd/mtd.h>
++#include <linux/mtd/partitions.h>
++#include <linux/ata_platform.h>
++#include <linux/mv643xx_eth.h>
++#include <linux/gpio.h>
++#include <linux/gpio_keys.h>
++#include <linux/i2c.h>
++#include <linux/input.h>
++#include <linux/leds.h>
++#include <asm/mach-types.h>
++#include <asm/mach/arch.h>
++#include <mach/kirkwood.h>
++#include "common.h"
++#include "mpp.h"
++
++static struct mtd_partition iconnect_nand_parts[] = {
++      {
++              .name = "u-boot",
++              .offset = 0,
++              .size = SZ_1M,
++              .mask_flags = MTD_WRITEABLE, /* read only */
++      }, {
++              .name = "uImage",
++              .offset = MTDPART_OFS_NXTBLK,
++              .size = 0x440000,
++      }, {
++              .name = "uInit",
++              .offset = MTDPART_OFS_NXTBLK,
++              .size = 0x440000,
++      }, {
++              .name = "root",
++              .offset = MTDPART_OFS_NXTBLK,
++              .size = MTDPART_SIZ_FULL,
++      },
++};
++
++static struct mv643xx_eth_platform_data iconnect_ge00_data = {
++      .phy_addr       = MV643XX_ETH_PHY_ADDR(0xB),
++};
++
++static struct gpio_led iconnect_led_pins[] = {
++      {
++              .name                   = "iconnect:led_level",
++              .default_trigger        = "default-on",
++              .gpio                   = 41,
++              .active_low             = 0,
++      },
++
++      {
++              .name                   = "iconnect:blue:power",
++              .default_trigger        = "default-on",
++              .gpio                   = 42,
++              .active_low             = 0,
++      },
++      {
++              .name                   = "iconnect:red:power",
++              .default_trigger        = "none",
++              .gpio                   = 43,
++              .active_low             = 0,
++      },
++      {
++              .name                   = "iconnect:blue:usb_1",
++              .default_trigger        = "none",
++              .gpio                   = 44,
++              .active_low             = 0,
++      },
++      {
++              .name                   = "iconnect:blue:usb_2",
++              .default_trigger        = "none",
++              .gpio                   = 45,
++              .active_low             = 0,
++      },
++      {
++              .name                   = "iconnect:blue:usb_3",
++              .default_trigger        = "none",
++              .gpio                   = 46,
++              .active_low             = 0,
++      },
++      {
++              .name                   = "iconnect:blue:usb_4",
++              .default_trigger        = "none",
++              .gpio                   = 47,
++              .active_low             = 0,
++      },
++      {
++              .name                   = "iconnect:blue:otb",
++              .default_trigger        = "none",
++              .gpio                   = 48,
++              .active_low             = 0,
++      },
++};
++
++static struct gpio_led_platform_data iconnect_led_data = {
++      .leds           = iconnect_led_pins,
++      .num_leds       = ARRAY_SIZE(iconnect_led_pins),
++};
++
++static struct platform_device iconnect_leds = {
++      .name   = "leds-gpio",
++      .id     = -1,
++      .dev    = {
++              .platform_data  = &iconnect_led_data,
++      }
++};
++
++static struct gpio_keys_button iconnect_buttons[] = {
++      {
++              .code           = KEY_COPY,
++              .gpio           = 35,
++              .desc           = "OTB Button",
++              .active_low     = 1,
++      },
++      {
++              .code           = KEY_RESTART,
++              .gpio           = 12,
++              .desc           = "Reset",
++              .active_low     = 1,
++      },
++};
++
++static struct gpio_keys_platform_data iconnect_button_data = {
++      .buttons        = iconnect_buttons,
++      .nbuttons       = ARRAY_SIZE(iconnect_buttons),
++};
++
++static struct platform_device iconnect_button_device = {
++      .name           = "gpio-keys",
++      .id             = -1,
++      .num_resources  = 0,
++      .dev            = {
++              .platform_data  = &iconnect_button_data,
++      }
++};
++
++static unsigned int iconnect_mpp_config[] __initdata = {
++      MPP0_NF_IO2,
++      MPP1_NF_IO3,
++      MPP2_NF_IO4,
++      MPP3_NF_IO5,
++      MPP4_NF_IO6,
++      MPP5_NF_IO7,
++      MPP18_NF_IO0,
++      MPP19_NF_IO1,
++      MPP12_GPIO,     /* Reset Button */
++      MPP35_GPIO,     /* OTB Button */
++
++      MPP41_GPIO,     /* LED Level */
++      MPP42_GPIO,     /* Power LED blue */
++      MPP43_GPIO,     /* Power LED red */
++      MPP44_GPIO,     /* USB LED 1 */
++      MPP45_GPIO,     /* USB LED 2 */
++      MPP46_GPIO,     /* USB LED 3 */
++      MPP47_GPIO,     /* USB LED 4 */
++      MPP48_GPIO,     /* OTB LED */
++      0
++};
++
++static struct i2c_board_info __initdata iconnect_i2c = {
++      I2C_BOARD_INFO("lm63", 0x4c),
++};
++
++static void __init iconnect_legacy_init(void)
++{
++      /*
++       * Basic setup. Needs to be called early.
++       */
++      kirkwood_init();
++      kirkwood_mpp_conf(iconnect_mpp_config);
++
++      kirkwood_nand_init(ARRAY_AND_SIZE(iconnect_nand_parts), 25);
++      kirkwood_ehci_init();
++      kirkwood_ge00_init(&iconnect_ge00_data);
++
++      kirkwood_uart0_init();
++      platform_device_register(&iconnect_leds);
++      platform_device_register(&iconnect_button_device);
++
++      kirkwood_i2c_init();
++      i2c_register_board_info(0, &iconnect_i2c,1);
++}
++
++static int __init iconnect_pci_init(void)
++{
++      if (machine_is_iconnect()) {
++              kirkwood_pcie_init(KW_PCIE0);
++      }
++      return 0;
++}
++subsys_initcall(iconnect_pci_init);
++
++MACHINE_START(ICONNECT, "Iomega iConnect Wireless Data Station")
++      /* Maintainer: Arne Fitzenreiter <arne_f@ipfire.org> */
++      .atag_offset    = 0x100,
++      .init_machine   = iconnect_legacy_init,
++      .map_io         = kirkwood_map_io,
++      .init_early     = kirkwood_init_early,
++      .init_irq       = kirkwood_init_irq,
++      .init_time      = kirkwood_timer_init,
++      .restart        = kirkwood_restart,
++
++MACHINE_END
+diff -Naur linux-3.10.10.org/arch/arm/mach-kirkwood/Kconfig linux-3.10.10/arch/arm/mach-kirkwood/Kconfig
+--- linux-3.10.10.org/arch/arm/mach-kirkwood/Kconfig   2013-08-29 18:47:51.000000000 +0200
++++ linux-3.10.10/arch/arm/mach-kirkwood/Kconfig       2013-09-02 19:37:02.000000000 +0200
+@@ -116,6 +116,12 @@
+         Say 'Y' here if you want your kernel to support the
+         HP t5325 Thin Client.
++config MACH_DREAMPLUG
++      bool "Marvell DreamPlug Reference Board"
++      help
++        Say 'Y' here if you want your kernel to support the
++        Marvell DreamPlug Reference Board.
++
+ config MACH_TS219
+       bool "QNAP TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and TS-219P+ Turbo NAS"
+       help
+@@ -317,6 +323,18 @@
+         or MV6282. If you have the wrong one, the buttons will not
+         work.
++config MACH_ICONNECT
++      bool "Iomega iConnect Wireless Data Station"
++      help
++        Say 'Y' here if you want your kernel to support the
++        Iomega iConnect Wireless Data Station.
++
++config MACH_NAS6210
++      bool "Raidsonic ICY BOX IB-62x0"
++      help
++        Say 'Y' here if you want your kernel to support the
++        Raidsonic ICY BOX IB-62x0.
++
+ endmenu
+ endif
+diff -Naur linux-3.10.10.org/arch/arm/mach-kirkwood/Makefile linux-3.10.10/arch/arm/mach-kirkwood/Makefile
+--- linux-3.10.10.org/arch/arm/mach-kirkwood/Makefile  2013-08-29 18:47:51.000000000 +0200
++++ linux-3.10.10/arch/arm/mach-kirkwood/Makefile      2013-09-02 19:50:19.000000000 +0200
+@@ -5,6 +5,7 @@
+ obj-$(CONFIG_MACH_DOCKSTAR)           += dockstar-setup.o
+ obj-$(CONFIG_MACH_ESATA_SHEEVAPLUG)   += sheevaplug-setup.o
+ obj-$(CONFIG_MACH_GURUPLUG)           += guruplug-setup.o
++obj-$(CONFIG_MACH_DREAMPLUG)          += dreamplug-setup.o
+ obj-$(CONFIG_MACH_INETSPACE_V2)               += netspace_v2-setup.o lacie_v2-common.o
+ obj-$(CONFIG_MACH_MV88F6281GTW_GE)    += mv88f6281gtw_ge-setup.o
+ obj-$(CONFIG_MACH_NET2BIG_V2)         += netxbig_v2-setup.o lacie_v2-common.o
+@@ -18,6 +19,8 @@
+ obj-$(CONFIG_MACH_T5325)              += t5325-setup.o
+ obj-$(CONFIG_MACH_TS219)              += ts219-setup.o tsx1x-common.o
+ obj-$(CONFIG_MACH_TS41X)              += ts41x-setup.o tsx1x-common.o
++obj-$(CONFIG_MACH_ICONNECT)           += iconnect-setup.o
++obj-$(CONFIG_MACH_NAS6210)            += nas6210-setup.o
+ obj-$(CONFIG_ARCH_KIRKWOOD_DT)                += board-dt.o
+ obj-$(CONFIG_MACH_CLOUDBOX_DT)                += board-ns2.o
+diff -Naur linux-3.10.10.org/arch/arm/mach-kirkwood/nas6210-setup.c linux-3.10.10/arch/arm/mach-kirkwood/nas6210-setup.c
+--- linux-3.10.10.org/arch/arm/mach-kirkwood/nas6210-setup.c   1970-01-01 01:00:00.000000000 +0100
++++ linux-3.10.10/arch/arm/mach-kirkwood/nas6210-setup.c       2013-09-02 21:32:36.000000000 +0200
+@@ -0,0 +1,185 @@
++/*
++ * arch/arm/mach-kirkwood/nas6210-setup.c
++ *
++ * Raidsonic ICYBOX NAS6210 and 6220 Board Setup
++ *
++ * This file is licensed under the terms of the GNU General Public
++ * License version 2.  This program is licensed "as is" without any
++ * warranty of any kind, whether express or implied.
++ */
++
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/mtd/mtd.h>
++#include <linux/mtd/partitions.h>
++#include <linux/ata_platform.h>
++#include <linux/mv643xx_eth.h>
++#include <linux/gpio.h>
++#include <linux/gpio_keys.h>
++#include <linux/i2c.h>
++#include <linux/input.h>
++#include <linux/leds.h>
++#include <asm/mach-types.h>
++#include <asm/mach/arch.h>
++#include <mach/kirkwood.h>
++#include "common.h"
++#include "mpp.h"
++
++#define NAS6210_GPIO_POWER_OFF 24
++
++static struct mtd_partition nas6210_nand_parts[] = {
++      {
++              .name = "u-boot",
++              .offset = 0,
++              .size = SZ_1M,
++              .mask_flags = MTD_WRITEABLE, /* read only */
++      }, {
++              .name = "uImage",
++              .offset = MTDPART_OFS_NXTBLK,
++              .size = (SZ_1M*6),
++      }, {
++              .name = "root",
++              .offset = MTDPART_OFS_NXTBLK,
++              .size = MTDPART_SIZ_FULL,
++      },
++};
++
++static struct mv643xx_eth_platform_data nas6210_ge00_data = {
++      .phy_addr       = MV643XX_ETH_PHY_ADDR(8),
++};
++
++static struct mv_sata_platform_data nas6210_sata_data = {
++      .n_ports        = 2,
++};
++
++static struct gpio_led nas6210_led_pins[] = {
++      {
++              .name                   = "nas6210:green:power",
++              .default_trigger        = "default-on",
++              .gpio                   = 25,
++              .active_low             = 0,
++      },
++      {
++              .name                   = "nas6210:red:power",
++              .default_trigger        = "none",
++              .gpio                   = 22,
++              .active_low             = 0,
++      },
++      {
++              .name                   = "nas6210:red:usb_copy",
++              .default_trigger        = "none",
++              .gpio                   = 27,
++              .active_low             = 0,
++      },
++};
++
++static struct gpio_led_platform_data nas6210_led_data = {
++      .leds           = nas6210_led_pins,
++      .num_leds       = ARRAY_SIZE(nas6210_led_pins),
++};
++
++static struct platform_device nas6210_leds = {
++      .name   = "leds-gpio",
++      .id     = -1,
++      .dev    = {
++              .platform_data  = &nas6210_led_data,
++      }
++};
++
++static struct gpio_keys_button nas6210_buttons[] = {
++      {
++              .code           = KEY_COPY,
++              .gpio           = 29,
++              .desc           = "USB Copy",
++              .active_low     = 1,
++      },
++      {
++              .code           = KEY_RESTART,
++              .gpio           = 28,
++              .desc           = "Reset",
++              .active_low     = 1,
++      },
++};
++
++static struct gpio_keys_platform_data nas6210_button_data = {
++      .buttons        = nas6210_buttons,
++      .nbuttons       = ARRAY_SIZE(nas6210_buttons),
++};
++
++static struct platform_device nas6210_button_device = {
++      .name           = "gpio-keys",
++      .id             = -1,
++      .num_resources  = 0,
++      .dev            = {
++              .platform_data  = &nas6210_button_data,
++      }
++};
++
++static unsigned int nas6210_mpp_config[] __initdata = {
++      MPP0_NF_IO2,
++      MPP1_NF_IO3,
++      MPP2_NF_IO4,
++      MPP3_NF_IO5,
++      MPP4_NF_IO6,
++      MPP5_NF_IO7,
++      MPP18_NF_IO0,
++      MPP19_NF_IO1,
++      MPP22_GPIO,     /* Power LED red */
++      MPP24_GPIO,     /* Power off */
++      MPP25_GPIO,     /* Power LED green */
++      MPP27_GPIO,    /* USB transfer LED */
++      MPP28_GPIO,    /* Reset button */
++      MPP29_GPIO,    /* USB Copy button */
++      0
++};
++
++void nas6210_power_off(void)
++{
++      gpio_set_value(NAS6210_GPIO_POWER_OFF, 1);
++      while(1);
++}
++
++static void __init nas6210_init(void)
++{
++      /*
++       * Basic setup. Needs to be called early.
++       */
++      kirkwood_init();
++      kirkwood_mpp_conf(nas6210_mpp_config);
++
++      kirkwood_nand_init(ARRAY_AND_SIZE(nas6210_nand_parts), 25);
++      kirkwood_ehci_init();
++      kirkwood_ge00_init(&nas6210_ge00_data);
++      kirkwood_sata_init(&nas6210_sata_data);
++      kirkwood_uart0_init();
++      platform_device_register(&nas6210_leds);
++      platform_device_register(&nas6210_button_device);
++
++      if (gpio_request(NAS6210_GPIO_POWER_OFF, "power-off") == 0 &&
++              gpio_direction_output(NAS6210_GPIO_POWER_OFF, 0) == 0)
++                      pm_power_off = nas6210_power_off;
++
++      else
++              pr_err("nas6210: failed to configure power-off gpio pin");
++}
++
++static int __init nas6210_pci_init(void)
++{
++      if (machine_is_nas6210()) {
++              kirkwood_pcie_init(KW_PCIE0);
++      }
++      return 0;
++}
++subsys_initcall(nas6210_pci_init);
++
++MACHINE_START(NAS6210, "RaidSonic ICY BOX IB-NAS62x0")
++      /* Maintainer: Arne Fitzenreiter <arne_f@ipfire.org> */
++      .atag_offset    = 0x00000100,
++      .init_machine   = nas6210_init,
++      .map_io         = kirkwood_map_io,
++      .init_early     = kirkwood_init_early,
++      .init_irq       = kirkwood_init_irq,
++      .init_time      = kirkwood_timer_init,
++      .restart        = kirkwood_restart,
++MACHINE_END
+diff -Naur linux-3.10.10.org/arch/arm/tools/mach-types linux-3.10.10/arch/arm/tools/mach-types
+--- linux-3.10.10.org/arch/arm/tools/mach-types        2013-08-29 18:47:51.000000000 +0200
++++ linux-3.10.10/arch/arm/tools/mach-types    2013-09-02 22:06:34.000000000 +0200
+@@ -447,6 +447,7 @@
+ smartq5                       MACH_SMARTQ5            SMARTQ5                 2534
+ davinci_dm6467tevm    MACH_DAVINCI_DM6467TEVM DAVINCI_DM6467TEVM      2548
+ mxt_td60              MACH_MXT_TD60           MXT_TD60                2550
++guruplug              MACH_GURUPLUG           GURUPLUG                2601
+ capc7117              MACH_CAPC7117           CAPC7117                2612
+ icontrol              MACH_ICONTROL           ICONTROL                2624
+ gplugd                        MACH_GPLUGD             GPLUGD                  2625
+@@ -454,7 +455,7 @@
+ mx23evk                       MACH_MX23EVK            MX23EVK                 2629
+ ap4evb                        MACH_AP4EVB             AP4EVB                  2630
+ mityomapl138          MACH_MITYOMAPL138       MITYOMAPL138            2650
+-guruplug              MACH_GURUPLUG           GURUPLUG                2659
++dreamplug1            MACH_DREAMPLUG1         DREAMPLUG1              2659
+ spear310              MACH_SPEAR310           SPEAR310                2660
+ spear320              MACH_SPEAR320           SPEAR320                2661
+ aquila                        MACH_AQUILA             AQUILA                  2676
+@@ -491,6 +492,7 @@
+ t5325                 MACH_T5325              T5325                   2846
+ income                        MACH_INCOME             INCOME                  2849
+ goni                  MACH_GONI               GONI                    2862
++iconnect              MACH_ICONNECT           ICONNECT                2870
+ bv07                  MACH_BV07               BV07                    2882
+ openrd_ultimate               MACH_OPENRD_ULTIMATE    OPENRD_ULTIMATE         2884
+ devixp                        MACH_DEVIXP             DEVIXP                  2885
+@@ -520,6 +522,7 @@
+ vpr200                        MACH_VPR200             VPR200                  3087
+ torbreck              MACH_TORBRECK           TORBRECK                3090
+ prima2_evb            MACH_PRIMA2_EVB         PRIMA2_EVB              3103
++nas6210                       MACH_NAS6210            NAS6210                 3104
+ paz00                 MACH_PAZ00              PAZ00                   3128
+ acmenetusfoxg20               MACH_ACMENETUSFOXG20    ACMENETUSFOXG20         3129
+ ag5evm                        MACH_AG5EVM             AG5EVM                  3189
+@@ -544,6 +547,7 @@
+ nspire                        MACH_NSPIRE             NSPIRE                  3503
+ nokia_rm696           MACH_NOKIA_RM696        NOKIA_RM696             3522
+ mikrap_x168           MACH_MIKRAP_X168        MIKRAP_X168             3543
++dreamplug             MACH_DREAMPLUG          DREAMPLUG               3550
+ deto_macarm9          MACH_DETO_MACARM9       DETO_MACARM9            3568
+ m28evk                        MACH_M28EVK             M28EVK                  3613
+ kota2                 MACH_KOTA2              KOTA2                   3616
diff --git a/src/patches/linux-3.10.10-mv_cesa_disable_failing_hmac_sha1.patch b/src/patches/linux-3.10.10-mv_cesa_disable_failing_hmac_sha1.patch
new file mode 100644 (file)
index 0000000..e892d88
--- /dev/null
@@ -0,0 +1,19 @@
+diff -Naur linux-3.10.10.org/drivers/crypto/mv_cesa.c linux-3.10.10/drivers/crypto/mv_cesa.c
+--- linux-3.10.10.org/drivers/crypto/mv_cesa.c 2013-08-29 18:47:51.000000000 +0200
++++ linux-3.10.10/drivers/crypto/mv_cesa.c     2013-09-04 13:06:35.000000000 +0200
+@@ -1120,6 +1120,7 @@
+       else
+               printk(KERN_WARNING MV_CESA "Could not register sha1 driver\n");
++/*
+       ret = crypto_register_ahash(&mv_hmac_sha1_alg);
+       if (ret == 0) {
+               cpg->has_hmac_sha1 = 1;
+@@ -1127,6 +1128,7 @@
+               printk(KERN_WARNING MV_CESA
+                      "Could not register hmac-sha1 driver\n");
+       }
++*/
+       return 0;
+ err_unreg_ecb:
diff --git a/src/patches/linux-3.10.9-ledtrig-netdev-1.patch b/src/patches/linux-3.10.9-ledtrig-netdev-1.patch
new file mode 100644 (file)
index 0000000..8ad1ebd
--- /dev/null
@@ -0,0 +1,478 @@
+diff -Naur linux-3.10.9.org/drivers/leds/trigger/Kconfig linux-3.10.9/drivers/leds/trigger/Kconfig
+--- linux-3.10.9.org/drivers/leds/trigger/Kconfig      2013-08-21 00:40:47.000000000 +0200
++++ linux-3.10.9/drivers/leds/trigger/Kconfig  2013-08-30 20:43:19.064025933 +0200
+@@ -108,4 +108,11 @@
+         This enables direct flash/torch on/off by the driver, kernel space.
+         If unsure, say Y.
++config LEDS_TRIGGER_NETDEV
++      tristate "LED Netdev Trigger"
++      depends on LEDS_TRIGGERS
++      help
++        This allows LEDs to be controlled by network device activity.
++        If unsure, say Y.
++
+ endif # LEDS_TRIGGERS
+diff -Naur linux-3.10.9.org/drivers/leds/trigger/ledtrig-netdev.c linux-3.10.9/drivers/leds/trigger/ledtrig-netdev.c
+--- linux-3.10.9.org/drivers/leds/trigger/ledtrig-netdev.c     1970-01-01 01:00:00.000000000 +0100
++++ linux-3.10.9/drivers/leds/trigger/ledtrig-netdev.c 2013-08-30 20:44:17.857339974 +0200
+@@ -0,0 +1,451 @@
++/*
++ * LED Kernel Netdev Trigger
++ *
++ * Toggles the LED to reflect the link and traffic state of a named net device
++ *
++ * Copyright 2007 Oliver Jowett <oliver@opencloud.com>
++ *
++ * Derived from ledtrig-timer.c which is:
++ *  Copyright 2005-2006 Openedhand Ltd.
++ *  Author: Richard Purdie <rpurdie@openedhand.com>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/jiffies.h>
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/list.h>
++#include <linux/spinlock.h>
++#include <linux/device.h>
++#include <linux/netdevice.h>
++#include <linux/timer.h>
++#include <linux/ctype.h>
++#include <linux/leds.h>
++#include <linux/version.h>
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
++#include <net/net_namespace.h>
++#endif
++
++#include "../leds.h"
++
++/*
++ * Configurable sysfs attributes:
++ *
++ * device_name - network device name to monitor
++ *
++ * interval - duration of LED blink, in milliseconds
++ *
++ * mode - either "none" (LED is off) or a space separated list of one or more of:
++ *   link: LED's normal state reflects whether the link is up (has carrier) or not
++ *   tx:   LED blinks on transmitted data
++ *   rx:   LED blinks on receive data
++ *
++ * Some suggestions:
++ *
++ *  Simple link status LED:
++ *  $ echo netdev >someled/trigger
++ *  $ echo eth0 >someled/device_name
++ *  $ echo link >someled/mode
++ *
++ *  Ethernet-style link/activity LED:
++ *  $ echo netdev >someled/trigger
++ *  $ echo eth0 >someled/device_name
++ *  $ echo "link tx rx" >someled/mode
++ *
++ *  Modem-style tx/rx LEDs:
++ *  $ echo netdev >led1/trigger
++ *  $ echo ppp0 >led1/device_name
++ *  $ echo tx >led1/mode
++ *  $ echo netdev >led2/trigger
++ *  $ echo ppp0 >led2/device_name
++ *  $ echo rx >led2/mode
++ *
++ */
++
++#define MODE_LINK 1
++#define MODE_TX   2
++#define MODE_RX   4
++
++struct led_netdev_data {
++      rwlock_t lock;
++
++      struct timer_list timer;
++      struct notifier_block notifier;
++
++      struct led_classdev *led_cdev;
++      struct net_device *net_dev;
++
++      char device_name[IFNAMSIZ];
++      unsigned interval;
++      unsigned mode;
++      unsigned link_up;
++      unsigned last_activity;
++};
++
++static void set_baseline_state(struct led_netdev_data *trigger_data)
++{
++      if ((trigger_data->mode & MODE_LINK) != 0 && trigger_data->link_up)
++              led_set_brightness(trigger_data->led_cdev, LED_FULL);
++      else
++              led_set_brightness(trigger_data->led_cdev, LED_OFF);
++
++      if ((trigger_data->mode & (MODE_TX | MODE_RX)) != 0 && trigger_data->link_up)
++              mod_timer(&trigger_data->timer, jiffies + trigger_data->interval);
++      else
++              del_timer(&trigger_data->timer);
++}
++
++static ssize_t led_device_name_show(struct device *dev,
++                                  struct device_attribute *attr, char *buf)
++{
++      struct led_classdev *led_cdev = dev_get_drvdata(dev);
++      struct led_netdev_data *trigger_data = led_cdev->trigger_data;
++
++      read_lock(&trigger_data->lock);
++      sprintf(buf, "%s\n", trigger_data->device_name);
++      read_unlock(&trigger_data->lock);
++
++      return strlen(buf) + 1;
++}
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
++extern struct net init_net;
++#endif
++
++static ssize_t led_device_name_store(struct device *dev,
++                                   struct device_attribute *attr, const char *buf, size_t size)
++{
++      struct led_classdev *led_cdev = dev_get_drvdata(dev);
++      struct led_netdev_data *trigger_data = led_cdev->trigger_data;
++
++      if (size < 0 || size >= IFNAMSIZ)
++              return -EINVAL;
++
++      write_lock(&trigger_data->lock);
++
++      strcpy(trigger_data->device_name, buf);
++      if (size > 0 && trigger_data->device_name[size-1] == '\n')
++              trigger_data->device_name[size-1] = 0;
++
++      if (trigger_data->device_name[0] != 0) {
++              /* check for existing device to update from */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
++              trigger_data->net_dev = dev_get_by_name(&init_net, trigger_data->device_name);
++#else
++              trigger_data->net_dev = dev_get_by_name(trigger_data->device_name);
++#endif
++              if (trigger_data->net_dev != NULL)
++                      trigger_data->link_up = (dev_get_flags(trigger_data->net_dev) & IFF_LOWER_UP) != 0;
++              set_baseline_state(trigger_data); /* updates LEDs, may start timers */
++      }
++
++      write_unlock(&trigger_data->lock);
++      return size;
++}
++
++static DEVICE_ATTR(device_name, 0644, led_device_name_show, led_device_name_store);
++
++static ssize_t led_mode_show(struct device *dev,
++                           struct device_attribute *attr, char *buf)
++{
++      struct led_classdev *led_cdev = dev_get_drvdata(dev);
++      struct led_netdev_data *trigger_data = led_cdev->trigger_data;
++
++      read_lock(&trigger_data->lock);
++
++      if (trigger_data->mode == 0) {
++              strcpy(buf, "none\n");
++      } else {
++              if (trigger_data->mode & MODE_LINK)
++                      strcat(buf, "link ");
++              if (trigger_data->mode & MODE_TX)
++                      strcat(buf, "tx ");
++              if (trigger_data->mode & MODE_RX)
++                      strcat(buf, "rx ");
++              strcat(buf, "\n");
++      }
++
++      read_unlock(&trigger_data->lock);
++
++      return strlen(buf)+1;
++}
++
++static ssize_t led_mode_store(struct device *dev,
++                            struct device_attribute *attr, const char *buf, size_t size)
++{
++      struct led_classdev *led_cdev = dev_get_drvdata(dev);
++      struct led_netdev_data *trigger_data = led_cdev->trigger_data;
++      char copybuf[1024];
++      int new_mode = -1;
++      char *p, *token;
++
++      /* take a copy since we don't want to trash the inbound buffer when using strsep */
++      strncpy(copybuf, buf, sizeof(copybuf));
++      copybuf[1023] = 0;
++      p = copybuf;
++
++      while ((token = strsep(&p, " \t\n")) != NULL) {
++              if (!*token)
++                      continue;
++
++              if (new_mode == -1)
++                      new_mode = 0;
++
++              if (!strcmp(token, "none"))
++                      new_mode = 0;
++              else if (!strcmp(token, "tx"))
++                      new_mode |= MODE_TX;
++              else if (!strcmp(token, "rx"))
++                      new_mode |= MODE_RX;
++              else if (!strcmp(token, "link"))
++                      new_mode |= MODE_LINK;
++              else
++                      return -EINVAL;
++      }
++
++      if (new_mode == -1)
++              return -EINVAL;
++
++      write_lock(&trigger_data->lock);
++      trigger_data->mode = new_mode;
++      set_baseline_state(trigger_data);
++      write_unlock(&trigger_data->lock);
++
++      return size;
++}
++
++static DEVICE_ATTR(mode, 0644, led_mode_show, led_mode_store);
++
++static ssize_t led_interval_show(struct device *dev,
++                               struct device_attribute *attr, char *buf)
++{
++      struct led_classdev *led_cdev = dev_get_drvdata(dev);
++      struct led_netdev_data *trigger_data = led_cdev->trigger_data;
++
++      read_lock(&trigger_data->lock);
++      sprintf(buf, "%u\n", jiffies_to_msecs(trigger_data->interval));
++      read_unlock(&trigger_data->lock);
++
++      return strlen(buf) + 1;
++}
++
++static ssize_t led_interval_store(struct device *dev,
++                                struct device_attribute *attr, const char *buf, size_t size)
++{
++      struct led_classdev *led_cdev = dev_get_drvdata(dev);
++      struct led_netdev_data *trigger_data = led_cdev->trigger_data;
++      int ret = -EINVAL;
++      char *after;
++      unsigned long value = simple_strtoul(buf, &after, 10);
++      size_t count = after - buf;
++
++      if (*after && isspace(*after))
++              count++;
++
++      /* impose some basic bounds on the timer interval */
++      if (count == size && value >= 5 && value <= 10000) {
++              write_lock(&trigger_data->lock);
++              trigger_data->interval = msecs_to_jiffies(value);
++              set_baseline_state(trigger_data); // resets timer
++              write_unlock(&trigger_data->lock);
++              ret = count;
++      }
++
++      return ret;
++}
++
++static DEVICE_ATTR(interval, 0644, led_interval_show, led_interval_store);
++
++static int netdev_trig_notify(struct notifier_block *nb,
++                            unsigned long evt,
++                            void *dv)
++{
++      struct net_device *dev = dv;
++      struct led_netdev_data *trigger_data = container_of(nb, struct led_netdev_data, notifier);
++
++      if (evt != NETDEV_UP && evt != NETDEV_DOWN && evt != NETDEV_CHANGE && evt != NETDEV_REGISTER && evt != NETDEV_UNREGISTER)
++              return NOTIFY_DONE;
++
++      write_lock(&trigger_data->lock);
++
++      if (strcmp(dev->name, trigger_data->device_name))
++              goto done;
++
++      if (evt == NETDEV_REGISTER) {
++              if (trigger_data->net_dev != NULL)
++                      dev_put(trigger_data->net_dev);
++              dev_hold(dev);
++              trigger_data->net_dev = dev;
++              trigger_data->link_up = 0;
++              goto done;
++      }
++
++      if (evt == NETDEV_UNREGISTER && trigger_data->net_dev != NULL) {
++              dev_put(trigger_data->net_dev);
++              trigger_data->net_dev = NULL;
++              goto done;
++      }
++
++      /* UP / DOWN / CHANGE */
++
++      trigger_data->link_up = (evt != NETDEV_DOWN && netif_carrier_ok(dev));
++      set_baseline_state(trigger_data);
++
++done:
++      write_unlock(&trigger_data->lock);
++      return NOTIFY_DONE;
++}
++
++/* here's the real work! */
++static void netdev_trig_timer(unsigned long arg)
++{
++      struct led_netdev_data *trigger_data = (struct led_netdev_data *)arg;
++      struct rtnl_link_stats64 *dev_stats;
++      unsigned new_activity;
++        struct rtnl_link_stats64 temp;
++      
++      write_lock(&trigger_data->lock);
++
++      if (!trigger_data->link_up || !trigger_data->net_dev || (trigger_data->mode & (MODE_TX | MODE_RX)) == 0) {
++              /* we don't need to do timer work, just reflect link state. */
++              led_set_brightness(trigger_data->led_cdev, ((trigger_data->mode & MODE_LINK) != 0 && trigger_data->link_up) ? LED_FULL : LED_OFF);
++              goto no_restart;
++      }
++
++      dev_stats = dev_get_stats(trigger_data->net_dev, &temp);
++      new_activity =
++              ((trigger_data->mode & MODE_TX) ? dev_stats->tx_packets : 0) +
++              ((trigger_data->mode & MODE_RX) ? dev_stats->rx_packets : 0);
++
++      if (trigger_data->mode & MODE_LINK) {
++              /* base state is ON (link present) */
++              /* if there's no link, we don't get this far and the LED is off */
++
++              /* OFF -> ON always */
++              /* ON -> OFF on activity */
++              if (trigger_data->led_cdev->brightness == LED_OFF) {
++                      led_set_brightness(trigger_data->led_cdev, LED_FULL);
++              } else if (trigger_data->last_activity != new_activity) {
++                      led_set_brightness(trigger_data->led_cdev, LED_OFF);
++              }
++      } else {
++              /* base state is OFF */
++              /* ON -> OFF always */
++              /* OFF -> ON on activity */
++              if (trigger_data->led_cdev->brightness == LED_FULL) {
++                      led_set_brightness(trigger_data->led_cdev, LED_OFF);
++              } else if (trigger_data->last_activity != new_activity) {
++                      led_set_brightness(trigger_data->led_cdev, LED_FULL);
++              }
++      }
++
++      trigger_data->last_activity = new_activity;
++      mod_timer(&trigger_data->timer, jiffies + trigger_data->interval);
++
++no_restart:
++      write_unlock(&trigger_data->lock);
++}
++
++static void netdev_trig_activate(struct led_classdev *led_cdev)
++{
++      struct led_netdev_data *trigger_data;
++      int rc;
++
++      trigger_data = kzalloc(sizeof(struct led_netdev_data), GFP_KERNEL);
++      if (!trigger_data)
++              return;
++
++      rwlock_init(&trigger_data->lock);
++
++      trigger_data->notifier.notifier_call = netdev_trig_notify;
++      trigger_data->notifier.priority = 10;
++
++      setup_timer(&trigger_data->timer, netdev_trig_timer, (unsigned long) trigger_data);
++
++      trigger_data->led_cdev = led_cdev;
++      trigger_data->net_dev = NULL;
++      trigger_data->device_name[0] = 0;
++
++      trigger_data->mode = 0;
++      trigger_data->interval = msecs_to_jiffies(50);
++      trigger_data->link_up = 0;
++      trigger_data->last_activity = 0;
++
++      led_cdev->trigger_data = trigger_data;
++
++      rc = device_create_file(led_cdev->dev, &dev_attr_device_name);
++      if (rc)
++              goto err_out;
++      rc = device_create_file(led_cdev->dev, &dev_attr_mode);
++      if (rc)
++              goto err_out_device_name;
++      rc = device_create_file(led_cdev->dev, &dev_attr_interval);
++      if (rc)
++              goto err_out_mode;
++
++      register_netdevice_notifier(&trigger_data->notifier);
++      return;
++
++err_out_mode:
++      device_remove_file(led_cdev->dev, &dev_attr_mode);
++err_out_device_name:
++      device_remove_file(led_cdev->dev, &dev_attr_device_name);
++err_out:
++      led_cdev->trigger_data = NULL;
++      kfree(trigger_data);
++}
++
++static void netdev_trig_deactivate(struct led_classdev *led_cdev)
++{
++      struct led_netdev_data *trigger_data = led_cdev->trigger_data;
++
++      if (trigger_data) {
++              unregister_netdevice_notifier(&trigger_data->notifier);
++
++              device_remove_file(led_cdev->dev, &dev_attr_device_name);
++              device_remove_file(led_cdev->dev, &dev_attr_mode);
++              device_remove_file(led_cdev->dev, &dev_attr_interval);
++
++              write_lock(&trigger_data->lock);
++
++              if (trigger_data->net_dev) {
++                      dev_put(trigger_data->net_dev);
++                      trigger_data->net_dev = NULL;
++              }
++
++              write_unlock(&trigger_data->lock);
++
++              del_timer_sync(&trigger_data->timer);
++
++              kfree(trigger_data);
++      }
++}
++
++static struct led_trigger netdev_led_trigger = {
++      .name     = "netdev",
++      .activate = netdev_trig_activate,
++      .deactivate = netdev_trig_deactivate,
++};
++
++static int __init netdev_trig_init(void)
++{
++      return led_trigger_register(&netdev_led_trigger);
++}
++
++static void __exit netdev_trig_exit(void)
++{
++      led_trigger_unregister(&netdev_led_trigger);
++}
++
++module_init(netdev_trig_init);
++module_exit(netdev_trig_exit);
++
++MODULE_AUTHOR("Oliver Jowett <oliver@opencloud.com>");
++MODULE_DESCRIPTION("Netdev LED trigger");
++MODULE_LICENSE("GPL");
+diff -Naur linux-3.10.9.org/drivers/leds/trigger/Makefile linux-3.10.9/drivers/leds/trigger/Makefile
+--- linux-3.10.9.org/drivers/leds/trigger/Makefile     2013-08-21 00:40:47.000000000 +0200
++++ linux-3.10.9/drivers/leds/trigger/Makefile 2013-08-30 20:43:56.414009853 +0200
+@@ -8,3 +8,4 @@
+ obj-$(CONFIG_LEDS_TRIGGER_DEFAULT_ON) += ledtrig-default-on.o
+ obj-$(CONFIG_LEDS_TRIGGER_TRANSIENT)  += ledtrig-transient.o
+ obj-$(CONFIG_LEDS_TRIGGER_CAMERA)     += ledtrig-camera.o
++obj-$(CONFIG_LEDS_TRIGGER_NETDEV)     += ledtrig-netdev.o
diff --git a/src/patches/linux-3.7-disable-compat_vdso.patch b/src/patches/linux-3.7-disable-compat_vdso.patch
new file mode 100644 (file)
index 0000000..c06bd8b
--- /dev/null
@@ -0,0 +1,46 @@
+No need to wrap vdso calls as gentoo does not use any version of 
+glibc <=2.3.3
+---
+From: Gordon Malm <gengor@gentoo.org>
+From: Kerin Millar <kerframil@gmail.com>
+From: Jory A. Pratt    <anarchy@gentoo.org>
+
+COMPAT_VDSO is inappropriate for any modern Hardened Gentoo system. It
+conflicts with various parts of PaX, crashing the system if enabled
+while PaX's NOEXEC or UDEREF features are active. Moreover, it prevents
+a number of important PaX options from appearing in the configuration
+menu, including all PaX NOEXEC implementations. Unfortunately, the
+reason for the disappearance of these PaX configuration options is
+often far from obvious to inexperienced users.
+
+Therefore, we disable the COMPAT_VDSO menu entry entirely. However,
+COMPAT_VDSO operation can still be enabled via bootparam and sysctl
+interfaces. Consequently, we must also disable the ability to select
+COMPAT_VDSO operation at boot or runtime. Here we patch the kernel so
+that selecting COMPAT_VDSO operation at boot/runtime has no effect if
+conflicting PaX options are enabled, leaving VDSO_ENABLED operation
+intact.
+
+Closes bug: http://bugs.gentoo.org/show_bug.cgi?id=210138
+
+diff -urp a/arch/x86/Kconfig b/arch/x86/Kconfig
+--- a/arch/x86/Kconfig 2009-07-31 01:36:57.323857684 +0100
++++ b/arch/x86/Kconfig 2009-07-31 01:51:39.395749681 +0100
+@@ -1651,17 +1651,8 @@
+ config COMPAT_VDSO
+       def_bool n
+-      prompt "Compat VDSO support"
+       depends on X86_32 || IA32_EMULATION
+       depends on !PAX_PAGEEXEC && !PAX_SEGMEXEC && !PAX_KERNEXEC && !PAX_MEMORY_UDEREF
+-      ---help---
+-        Map the 32-bit VDSO to the predictable old-style address too.
+-
+-        Say N here if you are running a sufficiently recent glibc
+-        version (2.3.3 or later), to remove the high-mapped
+-        VDSO mapping and to exclusively use the randomized VDSO.
+-
+-        If unsure, say Y.
+ config CMDLINE_BOOL
+       bool "Built-in kernel command line"
diff --git a/src/patches/linux-3.9-dvbsky-wot2.patch b/src/patches/linux-3.9-dvbsky-wot2.patch
new file mode 100644 (file)
index 0000000..e084c8c
--- /dev/null
@@ -0,0 +1,6161 @@
+diff -urN a/drivers/media/dvb-frontends/Kconfig b/drivers/media/dvb-frontends/Kconfig
+--- a/drivers/media/dvb-frontends/Kconfig      2013-04-29 08:36:01.000000000 +0800
++++ b/drivers/media/dvb-frontends/Kconfig      2013-05-03 17:03:57.000000000 +0800
+@@ -200,6 +200,20 @@
+       help
+         A DVB-S/S2 tuner module. Say Y when you want to support this frontend.
++config DVB_M88DS3103
++      tristate "Montage M88DS3103 based"
++      depends on DVB_CORE && I2C
++      default m if !MEDIA_SUBDRV_AUTOSELECT
++      help
++        A DVB-S/S2 tuner module. Say Y when you want to support this frontend.
++
++config DVB_M88DC2800
++      tristate "Montage M88DC2800 based"
++      depends on DVB_CORE && I2C
++      default m if !MEDIA_SUBDRV_AUTOSELECT
++      help
++        A DVB-C tuner module. Say Y when you want to support this frontend.
++                
+ config DVB_SI21XX
+       tristate "Silicon Labs SI21XX based"
+       depends on DVB_CORE && I2C
+diff -urN a/drivers/media/dvb-frontends/m88dc2800.c b/drivers/media/dvb-frontends/m88dc2800.c
+--- a/drivers/media/dvb-frontends/m88dc2800.c  1970-01-01 08:00:00.000000000 +0800
++++ b/drivers/media/dvb-frontends/m88dc2800.c  2013-01-26 16:03:21.000000000 +0800
+@@ -0,0 +1,2124 @@
++/*
++    M88DC2800/M88TC2800  - DVB-C demodulator and tuner from Montage
++
++    Copyright (C) 2012 Max nibble<nibble.max@gmail.com>
++    Copyright (C) 2011 Montage Technology / www.montage-tech.com
++
++    This program is free software; you can redistribute it and/or modify
++    it under the terms of the GNU General Public License as published by
++    the Free Software Foundation; either version 2 of the License, or
++    (at your option) any later version.
++
++    This program is distributed in the hope that it will be useful,
++    but WITHOUT ANY WARRANTY; without even the implied warranty of
++    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++    GNU General Public License for more details.
++
++    You should have received a copy of the GNU General Public License
++    along with this program; if not, write to the Free Software
++    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++*/
++
++#include <linux/delay.h>
++#include <linux/errno.h>
++#include <linux/init.h>
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/string.h>
++#include <linux/slab.h>
++#include <asm/div64.h>
++#include "dvb_frontend.h"
++#include "m88dc2800.h"
++
++struct m88dc2800_state {
++      struct i2c_adapter *i2c;
++      const struct m88dc2800_config *config;
++      struct dvb_frontend frontend;
++      u32 freq;
++      u32 ber;
++      u32 sym;
++      u16 qam;
++      u8 inverted;
++      u32 xtal;
++      /* tuner state */
++      u8 tuner_init_OK;       /* Tuner initialize status */
++      u8 tuner_dev_addr;      /* Tuner device address */
++      u32 tuner_freq;         /* RF frequency to be set, unit: KHz */
++      u16 tuner_qam;          /* Reserved */
++      u16 tuner_mode;
++      u8 tuner_bandwidth;     /* Bandwidth of the channel, unit: MHz, 6/7/8 */
++      u8 tuner_loopthrough;   /* Tuner loop through switch, 0/1 */
++      u32 tuner_crystal;      /* Tuner crystal frequency, unit: KHz */
++      u32 tuner_dac;          /* Tuner DAC frequency, unit: KHz */
++      u16 tuner_mtt;          /* Tuner chip version, D1: 0x0d, E0: 0x0e, E1: 0x8e */
++      u16 tuner_custom_cfg;
++      u32 tuner_version;      /* Tuner driver version number */
++      u32 tuner_time;
++};
++
++static int debug;
++module_param(debug, int, 0644);
++MODULE_PARM_DESC(debug, "Activates frontend debugging (default:0)");
++
++#define dprintk(args...) \
++      do { \
++              if (debug) \
++                      printk(KERN_INFO "m88dc2800: " args); \
++      } while (0)
++
++
++static int m88dc2800_i2c_write(struct m88dc2800_state *state, u8 addr,
++                             u8 * p_data, u8 len)
++{
++      struct i2c_msg msg = { .flags = 0 };
++
++      msg.addr = addr;
++      msg.buf = p_data;
++      msg.len = len;
++
++      return i2c_transfer(state->i2c, &msg, 1);
++}
++
++static int m88dc2800_i2c_read(struct m88dc2800_state *state, u8 addr,
++                            u8 * p_data, u8 len)
++{
++      struct i2c_msg msg = { .flags = I2C_M_RD };
++
++      msg.addr = addr;
++      msg.buf = p_data;
++      msg.len = len;
++
++      return i2c_transfer(state->i2c, &msg, 1);
++}
++
++/*demod register operations.*/
++static int WriteReg(struct m88dc2800_state *state, u8 reg, u8 data)
++{
++      u8 buf[] = { reg, data };
++      u8 addr = state->config->demod_address;
++      int err;
++
++      dprintk("%s: write reg 0x%02x, value 0x%02x\n", __func__, reg, data);
++
++      err = m88dc2800_i2c_write(state, addr, buf, 2);
++
++      if (err != 1) {
++              printk(KERN_ERR
++                     "%s: writereg error(err == %i, reg == 0x%02x,"
++                     " value == 0x%02x)\n", __func__, err, reg, data);
++              return -EIO;
++      }
++      return 0;
++}
++
++static int ReadReg(struct m88dc2800_state *state, u8 reg)
++{
++      int ret;
++      u8 b0[] = { reg };
++      u8 b1[] = { 0 };
++      u8 addr = state->config->demod_address;
++
++      ret = m88dc2800_i2c_write(state, addr, b0, 1);
++
++      if (ret != 1) {
++              printk(KERN_ERR "%s: reg=0x%x (error=%d)\n",
++                     __func__, reg, ret);
++              return -EIO;
++      }
++
++      ret = m88dc2800_i2c_read(state, addr, b1, 1);
++
++      dprintk("%s: read reg 0x%02x, value 0x%02x\n", __func__, reg, b1[0]);
++      return b1[0];
++}
++
++static int _mt_fe_tn_set_reg(struct m88dc2800_state *state, u8 reg,
++                           u8 data)
++{
++      int ret;
++      u8 buf[2];
++      u8 addr = state->tuner_dev_addr;
++
++      buf[1] = ReadReg(state, 0x86);
++      buf[1] |= 0x80;
++      ret = WriteReg(state, 0x86, buf[1]);
++
++      buf[0] = reg;
++      buf[1] = data;
++
++      ret = m88dc2800_i2c_write(state, addr, buf, 2);
++      if (ret != 1)
++              return -EIO;
++      return 0;
++}
++
++static int _mt_fe_tn_get_reg(struct m88dc2800_state *state, u8 reg,
++                           u8 * p_data)
++{
++      int ret;
++      u8 buf[2];
++      u8 addr = state->tuner_dev_addr;
++
++      buf[1] = ReadReg(state, 0x86);
++      buf[1] |= 0x80;
++      ret = WriteReg(state, 0x86, buf[1]);
++
++      buf[0] = reg;
++      ret = m88dc2800_i2c_write(state, addr, buf, 1);
++
++      msleep(1);
++
++      buf[1] = ReadReg(state, 0x86);
++      buf[1] |= 0x80;
++      ret = WriteReg(state, 0x86, buf[1]);
++
++      return m88dc2800_i2c_read(state, addr, p_data, 1);
++}
++
++/* Tuner operation functions.*/
++static int _mt_fe_tn_set_RF_front_tc2800(struct m88dc2800_state *state)
++{
++      u32 freq_KHz = state->tuner_freq;
++      u8 a, b, c;
++      if (state->tuner_mtt == 0xD1) { /* D1 */
++              if (freq_KHz <= 123000) {
++                      if (freq_KHz <= 56000) {
++                              a = 0x00; b = 0x00; c = 0x00;
++                      } else if (freq_KHz <= 64000) {
++                              a = 0x10; b = 0x01; c = 0x08;
++                      } else if (freq_KHz <= 72000) {
++                              a = 0x20; b = 0x02; c = 0x10;
++                      } else if (freq_KHz <= 80000) {
++                              a = 0x30; b = 0x03; c = 0x18;
++                      } else if (freq_KHz <= 88000) {
++                              a = 0x40; b = 0x04; c = 0x20;
++                      } else if (freq_KHz <= 96000) {
++                              a = 0x50; b = 0x05; c = 0x28;
++                      } else if (freq_KHz <= 104000) {
++                              a = 0x60; b = 0x06; c = 0x30;
++                      } else {
++                              a = 0x70; b = 0x07; c = 0x38;
++                      }
++                      _mt_fe_tn_set_reg(state, 0x58, 0x9b);
++                      _mt_fe_tn_set_reg(state, 0x59, a);
++                      _mt_fe_tn_set_reg(state, 0x5d, b);
++                      _mt_fe_tn_set_reg(state, 0x5e, c);
++                      _mt_fe_tn_set_reg(state, 0x5a, 0x75);
++                      _mt_fe_tn_set_reg(state, 0x73, 0x0c);
++              } else {        /* if (freq_KHz > 112000) */
++                      _mt_fe_tn_set_reg(state, 0x58, 0x7b);
++                      if (freq_KHz <= 304000) {
++                              if (freq_KHz <= 136000) {
++                                      _mt_fe_tn_set_reg(state, 0x5e, 0x40);
++                              } else if (freq_KHz <= 160000) {
++                                      _mt_fe_tn_set_reg(state, 0x5e, 0x48);
++                              } else if (freq_KHz <= 184000) {
++                                      _mt_fe_tn_set_reg(state, 0x5e, 0x50);
++                              } else if (freq_KHz <= 208000) {
++                                      _mt_fe_tn_set_reg(state, 0x5e, 0x58);
++                              } else if (freq_KHz <= 232000) {
++                                      _mt_fe_tn_set_reg(state, 0x5e, 0x60);
++                              } else if (freq_KHz <= 256000) {
++                                      _mt_fe_tn_set_reg(state, 0x5e, 0x68);
++                              } else if (freq_KHz <= 280000) {
++                                      _mt_fe_tn_set_reg(state, 0x5e, 0x70);
++                              } else {        /* if (freq_KHz <= 304000) */
++                                      _mt_fe_tn_set_reg(state, 0x5e, 0x78);
++                              }
++                              if (freq_KHz <= 171000) {
++                                      _mt_fe_tn_set_reg(state, 0x73, 0x08);
++                              } else if (freq_KHz <= 211000) {
++                                      _mt_fe_tn_set_reg(state, 0x73, 0x0a);
++                              } else {
++                                      _mt_fe_tn_set_reg(state, 0x73, 0x0e);
++                              }
++                      } else {        /* if (freq_KHz > 304000) */
++                              _mt_fe_tn_set_reg(state, 0x5e, 0x88);
++                              if (freq_KHz <= 400000) {
++                                      _mt_fe_tn_set_reg(state, 0x73, 0x0c);
++                              } else if (freq_KHz <= 450000) {
++                                      _mt_fe_tn_set_reg(state, 0x73, 0x09);
++                              } else if (freq_KHz <= 550000) {
++                                      _mt_fe_tn_set_reg(state, 0x73, 0x0e);
++                              } else if (freq_KHz <= 650000) {
++                                      _mt_fe_tn_set_reg(state, 0x73, 0x0d);
++                              } else {        /*if (freq_KHz > 650000) */
++                                      _mt_fe_tn_set_reg(state, 0x73, 0x0e);
++                              }
++                      }
++              }
++              if (freq_KHz > 800000)
++                      _mt_fe_tn_set_reg(state, 0x87, 0x24);
++              else if (freq_KHz > 700000)
++                      _mt_fe_tn_set_reg(state, 0x87, 0x34);
++              else if (freq_KHz > 500000)
++                      _mt_fe_tn_set_reg(state, 0x87, 0x44);
++              else if (freq_KHz > 300000)
++                      _mt_fe_tn_set_reg(state, 0x87, 0x43);
++              else if (freq_KHz > 220000)
++                      _mt_fe_tn_set_reg(state, 0x87, 0x54);
++              else if (freq_KHz > 110000)
++                      _mt_fe_tn_set_reg(state, 0x87, 0x14);
++              else
++                      _mt_fe_tn_set_reg(state, 0x87, 0x54);
++              if (freq_KHz > 600000)
++                      _mt_fe_tn_set_reg(state, 0x6a, 0x53);
++              else if (freq_KHz > 500000)
++                      _mt_fe_tn_set_reg(state, 0x6a, 0x57);
++              else
++                      _mt_fe_tn_set_reg(state, 0x6a, 0x59);
++              if (freq_KHz < 200000) {
++                      _mt_fe_tn_set_reg(state, 0x20, 0x5d);
++              } else if (freq_KHz < 500000) {
++                      _mt_fe_tn_set_reg(state, 0x20, 0x7d);
++              } else {
++                      _mt_fe_tn_set_reg(state, 0x20, 0xfd);
++              }               /* end of 0xD1 */
++      } else if (state->tuner_mtt == 0xE1) {  /* E1 */
++              if (freq_KHz <= 112000) {       /* 123MHz */
++                      if (freq_KHz <= 56000) {
++                              _mt_fe_tn_set_reg(state, 0x5c, 0x01);
++                      } else if (freq_KHz <= 64000) {
++                              _mt_fe_tn_set_reg(state, 0x5c, 0x09);
++                      } else if (freq_KHz <= 72000) {
++                              _mt_fe_tn_set_reg(state, 0x5c, 0x11);
++                      } else if (freq_KHz <= 80000) {
++                              _mt_fe_tn_set_reg(state, 0x5c, 0x19);
++                      } else if (freq_KHz <= 88000) {
++                              _mt_fe_tn_set_reg(state, 0x5c, 0x21);
++                      } else if (freq_KHz <= 96000) {
++                              _mt_fe_tn_set_reg(state, 0x5c, 0x29);
++                      } else if (freq_KHz <= 104000) {
++                              _mt_fe_tn_set_reg(state, 0x5c, 0x31);
++                      } else {        /* if (freq_KHz <= 112000) */
++                              _mt_fe_tn_set_reg(state, 0x5c, 0x39);
++                      }
++                      _mt_fe_tn_set_reg(state, 0x5b, 0x30);
++              } else {        /* if (freq_KHz > 112000) */
++                      if (freq_KHz <= 304000) {
++                              if (freq_KHz <= 136000) {
++                                      _mt_fe_tn_set_reg(state, 0x5c, 0x41);
++                              } else if (freq_KHz <= 160000) {
++                                      _mt_fe_tn_set_reg(state, 0x5c, 0x49);
++                              } else if (freq_KHz <= 184000) {
++                                      _mt_fe_tn_set_reg(state, 0x5c, 0x51);
++                              } else if (freq_KHz <= 208000) {
++                                      _mt_fe_tn_set_reg(state, 0x5c, 0x59);
++                              } else if (freq_KHz <= 232000) {
++                                      _mt_fe_tn_set_reg(state, 0x5c, 0x61);
++                              } else if (freq_KHz <= 256000) {
++                                      _mt_fe_tn_set_reg(state, 0x5c, 0x69);
++                              } else if (freq_KHz <= 280000) {
++                                      _mt_fe_tn_set_reg(state, 0x5c, 0x71);
++                              } else {        /* if (freq_KHz <= 304000) */
++                                      _mt_fe_tn_set_reg(state, 0x5c, 0x79);
++                              }
++                              if (freq_KHz <= 150000) {
++                                      _mt_fe_tn_set_reg(state, 0x5b, 0x28);
++                              } else if (freq_KHz <= 256000) {
++                                      _mt_fe_tn_set_reg(state, 0x5b, 0x29);
++                              } else {
++                                      _mt_fe_tn_set_reg(state, 0x5b, 0x2a);
++                              }
++                      } else {        /* if (freq_KHz > 304000) */
++                              if (freq_KHz <= 400000) {
++                                      _mt_fe_tn_set_reg(state, 0x5c, 0x89);
++                              } else if (freq_KHz <= 450000) {
++                                      _mt_fe_tn_set_reg(state, 0x5c, 0x91);
++                              } else if (freq_KHz <= 650000) {
++                                      _mt_fe_tn_set_reg(state, 0x5c, 0x98);
++                              } else if (freq_KHz <= 850000) {
++                                      _mt_fe_tn_set_reg(state, 0x5c, 0xa0);
++                              } else {
++                                      _mt_fe_tn_set_reg(state, 0x5c, 0xa8);
++                              }
++                              _mt_fe_tn_set_reg(state, 0x5b, 0x08);
++                      }
++              }
++      }                       /* end of 0xE1 */
++      return 0;
++}
++
++static int _mt_fe_tn_cali_PLL_tc2800(struct m88dc2800_state *state,
++                                   u32 freq_KHz,
++                                   u32 cali_freq_thres_div2,
++                                   u32 cali_freq_thres_div3r,
++                                   u32 cali_freq_thres_div3)
++{
++      s32 N, F, MUL;
++      u8 buf, tmp, tmp2;
++      s32 M;
++      const s32 crystal_KHz = state->tuner_crystal;
++       if (state->tuner_mtt == 0xD1) {
++              M = state->tuner_crystal / 4000;
++              if (freq_KHz > cali_freq_thres_div2) {
++                      MUL = 4;
++                      tmp = 2;
++              } else if (freq_KHz > 300000) {
++                      MUL = 8;
++                      tmp = 3;
++              } else if (freq_KHz > (cali_freq_thres_div2 / 2)) {
++                      MUL = 8;
++                      tmp = 4;
++              } else if (freq_KHz > (cali_freq_thres_div2 / 4)) {
++                      MUL = 16;
++                      tmp = 5;
++              } else if (freq_KHz > (cali_freq_thres_div2 / 8)) {
++                      MUL = 32;
++                      tmp = 6;
++              } else if (freq_KHz > (cali_freq_thres_div2 / 16)) {
++                      MUL = 64;
++                      tmp = 7;
++              } else {        /* invalid */
++                      MUL = 0;
++                      tmp = 0;
++                      return 1;
++              }
++      } else if (state->tuner_mtt == 0xE1) {
++              M = state->tuner_crystal / 1000;
++              _mt_fe_tn_set_reg(state, 0x30, 0xff);
++              _mt_fe_tn_set_reg(state, 0x32, 0xe0);
++              _mt_fe_tn_set_reg(state, 0x33, 0x86);
++              _mt_fe_tn_set_reg(state, 0x37, 0x70);
++              _mt_fe_tn_set_reg(state, 0x38, 0x20);
++              _mt_fe_tn_set_reg(state, 0x39, 0x18);
++              _mt_fe_tn_set_reg(state, 0x89, 0x83);
++              if (freq_KHz > cali_freq_thres_div2) {
++                      M = M / 4;
++                      MUL = 4;
++                      tmp = 2;
++                      tmp2 = M + 16;  /* 48 */
++              } else if (freq_KHz > cali_freq_thres_div3r) {
++                      M = M / 3;
++                      MUL = 6;
++                      tmp = 2;
++                      tmp2 = M + 32;  /* 32 */
++              } else if (freq_KHz > cali_freq_thres_div3) {
++                      M = M / 3;
++                      MUL = 6;
++                      tmp = 2;
++                      tmp2 = M;       /* 16 */
++              } else if (freq_KHz > 304000) {
++                      M = M / 4;
++                      MUL = 8;
++                      tmp = 3;
++                      tmp2 = M + 16;  /* 48 */
++              } else if (freq_KHz > (cali_freq_thres_div2 / 2)) {
++                      M = M / 4;
++                      MUL = 8;
++                      tmp = 4;
++                      tmp2 = M + 16;  /* 48 */
++              } else if (freq_KHz > (cali_freq_thres_div3r / 2)) {
++                      M = M / 3;
++                      MUL = 12;
++                      tmp = 4;
++                      tmp2 = M + 32;  /* 32 */
++              } else if (freq_KHz > (cali_freq_thres_div3 / 2)) {
++                      M = M / 3;
++                      MUL = 12;
++                      tmp = 4;
++                      tmp2 = M;       /* 16 */
++              } else if (freq_KHz > (cali_freq_thres_div2 / 4)) {
++                      M = M / 4;
++                      MUL = 16;
++                      tmp = 5;
++                      tmp2 = M + 16;  /* 48 */
++              } else if (freq_KHz > (cali_freq_thres_div3r / 4)) {
++                      M = M / 3;
++                      MUL = 24;
++                      tmp = 5;
++                      tmp2 = M + 32;  /* 32 */
++              } else if (freq_KHz > (cali_freq_thres_div3 / 4)) {
++                      M = M / 3;
++                      MUL = 24;
++                      tmp = 5;
++                      tmp2 = M;       /* 16 */
++              } else if (freq_KHz > (cali_freq_thres_div2 / 8)) {
++                      M = M / 4;
++                      MUL = 32;
++                      tmp = 6;
++                      tmp2 = M + 16;  /* 48 */
++              } else if (freq_KHz > (cali_freq_thres_div3r / 8)) {
++                      M = M / 3;
++                      MUL = 48;
++                      tmp = 6;
++                      tmp2 = M + 32;  /* 32 */
++              } else if (freq_KHz > (cali_freq_thres_div3 / 8)) {
++                      M = M / 3;
++                      MUL = 48;
++                      tmp = 6;
++                      tmp2 = M;       /* 16 */
++              } else if (freq_KHz > (cali_freq_thres_div2 / 16)) {
++                      M = M / 4;
++                      MUL = 64;
++                      tmp = 7;
++                      tmp2 = M + 16;  /* 48 */
++              } else if (freq_KHz > (cali_freq_thres_div3r / 16)) {
++                      M = M / 3;
++                      MUL = 96;
++                      tmp = 7;
++                      tmp2 = M + 32;  /* 32 */
++              } else if (freq_KHz > (cali_freq_thres_div3 / 16)) {
++                      M = M / 3;
++                      MUL = 96;
++                      tmp = 7;
++                      tmp2 = M;       /* 16 */
++              } else {        /* invalid */
++                      M = M / 4;
++                      MUL = 0;
++                      tmp = 0;
++                      tmp2 = 48;
++                      return 1;
++              }
++              if (freq_KHz == 291000) {
++                      M = state->tuner_crystal / 1000 / 3;
++                      MUL = 12;
++                      tmp = 4;
++                      tmp2 = M + 32;  /* 32 */
++              }
++              /*
++                 if (freq_KHz == 578000) {
++                 M = state->tuner_crystal / 1000 / 4;
++                 MUL = 4;
++                 tmp = 2;
++                 tmp2 = M + 16;       // 48
++                 }
++               */
++              if (freq_KHz == 690000) {
++                      M = state->tuner_crystal / 1000 / 3;
++                      MUL = 4;
++                      tmp = 2;
++                      tmp2 = M + 16;  /* 48 */
++              }
++              _mt_fe_tn_get_reg(state, 0x33, &buf);
++              buf &= 0xc0;
++              buf += tmp2;
++              _mt_fe_tn_set_reg(state, 0x33, buf);
++      } else {
++              return 1;
++      }
++      _mt_fe_tn_get_reg(state, 0x39, &buf);
++      buf &= 0xf8;
++      buf += tmp;
++      _mt_fe_tn_set_reg(state, 0x39, buf);
++      N = (freq_KHz * MUL * M / crystal_KHz) / 2 * 2 - 256;
++      buf = (N >> 8) & 0xcf;
++      if (state->tuner_mtt == 0xE1) {
++              buf |= 0x30;
++      }
++      _mt_fe_tn_set_reg(state, 0x34, buf);
++      buf = N & 0xff;
++      _mt_fe_tn_set_reg(state, 0x35, buf);
++      F = ((freq_KHz * MUL * M / (crystal_KHz / 1000) / 2) -
++           (freq_KHz * MUL * M / crystal_KHz / 2 * 1000)) * 64 / 1000;
++      buf = F & 0xff;
++      _mt_fe_tn_set_reg(state, 0x36, buf);
++      if (F == 0) {
++              if (state->tuner_mtt == 0xD1) {
++                      _mt_fe_tn_set_reg(state, 0x3d, 0xca);
++              } else if (state->tuner_mtt == 0xE1) {
++                      _mt_fe_tn_set_reg(state, 0x3d, 0xfe);
++              } else {
++                      return 1;
++              }
++              _mt_fe_tn_set_reg(state, 0x3e, 0x9c);
++              _mt_fe_tn_set_reg(state, 0x3f, 0x34);
++      }
++      if (F > 0) {
++              if (state->tuner_mtt == 0xD1) {
++                      if ((F == 32) || (F == 16) || (F == 48)) {
++                              _mt_fe_tn_set_reg(state, 0x3e, 0xa4);
++                              _mt_fe_tn_set_reg(state, 0x3d, 0x4a);
++                              _mt_fe_tn_set_reg(state, 0x3f, 0x36);
++                      } else {
++                              _mt_fe_tn_set_reg(state, 0x3e, 0xa4);
++                              _mt_fe_tn_set_reg(state, 0x3d, 0x4a);
++                              _mt_fe_tn_set_reg(state, 0x3f, 0x36);
++                      }
++              } else if (state->tuner_mtt == 0xE1) {
++                      _mt_fe_tn_set_reg(state, 0x3e, 0xa4);
++                      _mt_fe_tn_set_reg(state, 0x3d, 0x7e);
++                      _mt_fe_tn_set_reg(state, 0x3f, 0x36);
++                      _mt_fe_tn_set_reg(state, 0x89, 0x84);
++                      _mt_fe_tn_get_reg(state, 0x39, &buf);
++                      buf = buf & 0x1f;
++                      _mt_fe_tn_set_reg(state, 0x39, buf);
++                      _mt_fe_tn_get_reg(state, 0x32, &buf);
++                      buf = buf | 0x02;
++                      _mt_fe_tn_set_reg(state, 0x32, buf);
++              } else {
++                      return 1;
++              }
++      }
++      _mt_fe_tn_set_reg(state, 0x41, 0x00);
++      if (state->tuner_mtt == 0xD1) {
++              msleep(5);
++      } else if (state->tuner_mtt == 0xE1) {
++              msleep(2);
++      } else {
++              return 1;
++      }
++      _mt_fe_tn_set_reg(state, 0x41, 0x02);
++      _mt_fe_tn_set_reg(state, 0x30, 0x7f);
++      _mt_fe_tn_set_reg(state, 0x30, 0xff);
++      _mt_fe_tn_set_reg(state, 0x31, 0x80);
++      _mt_fe_tn_set_reg(state, 0x31, 0x00);
++
++      return 0;
++}
++
++static int _mt_fe_tn_set_PLL_freq_tc2800(struct m88dc2800_state *state)
++{
++      u8 buf, buf1;
++      u32 freq_thres_div2_KHz, freq_thres_div3r_KHz,
++          freq_thres_div3_KHz;
++      const u32 freq_KHz = state->tuner_freq;
++      if (state->tuner_mtt == 0xD1) {
++              _mt_fe_tn_set_reg(state, 0x32, 0xe1);
++              _mt_fe_tn_set_reg(state, 0x33, 0xa6);
++              _mt_fe_tn_set_reg(state, 0x37, 0x7f);
++              _mt_fe_tn_set_reg(state, 0x38, 0x20);
++              _mt_fe_tn_set_reg(state, 0x39, 0x18);
++              _mt_fe_tn_set_reg(state, 0x40, 0x40);
++               freq_thres_div2_KHz = 520000;
++              _mt_fe_tn_cali_PLL_tc2800(state, freq_KHz,
++                                         freq_thres_div2_KHz, 0, 0);
++               msleep(5);
++              _mt_fe_tn_get_reg(state, 0x3a, &buf);
++              buf1 = buf;
++              buf = buf & 0x03;
++              buf1 = buf1 & 0x01;
++              if ((buf1 == 0) || (buf == 3)) {
++                      freq_thres_div2_KHz = 420000;
++                      _mt_fe_tn_cali_PLL_tc2800(state, freq_KHz,
++                                                 freq_thres_div2_KHz, 0,
++                                                 0);
++                      msleep(5);
++                       _mt_fe_tn_get_reg(state, 0x3a, &buf);
++                      buf = buf & 0x07;
++                      if (buf == 5) {
++                              freq_thres_div2_KHz = 520000;
++                              _mt_fe_tn_cali_PLL_tc2800(state, freq_KHz,
++                                                         freq_thres_div2_KHz,
++                                                         0, 0);
++                              msleep(5);
++                      }
++              }
++               _mt_fe_tn_get_reg(state, 0x38, &buf);
++              _mt_fe_tn_set_reg(state, 0x38, buf);
++               _mt_fe_tn_get_reg(state, 0x32, &buf);
++              buf = buf | 0x10;
++              _mt_fe_tn_set_reg(state, 0x32, buf);
++               _mt_fe_tn_set_reg(state, 0x30, 0x7f);
++              _mt_fe_tn_set_reg(state, 0x30, 0xff);
++               _mt_fe_tn_get_reg(state, 0x32, &buf);
++              buf = buf & 0xdf;
++              _mt_fe_tn_set_reg(state, 0x32, buf);
++              _mt_fe_tn_set_reg(state, 0x40, 0x0);
++               _mt_fe_tn_set_reg(state, 0x30, 0x7f);
++              _mt_fe_tn_set_reg(state, 0x30, 0xff);
++              _mt_fe_tn_set_reg(state, 0x31, 0x80);
++              _mt_fe_tn_set_reg(state, 0x31, 0x00);
++              msleep(5);
++               _mt_fe_tn_get_reg(state, 0x39, &buf);
++              buf = buf >> 5;
++              if (buf < 5) {
++                      _mt_fe_tn_get_reg(state, 0x39, &buf);
++                      buf = buf | 0xa0;
++                      buf = buf & 0xbf;
++                      _mt_fe_tn_set_reg(state, 0x39, buf);
++                       _mt_fe_tn_get_reg(state, 0x32, &buf);
++                      buf = buf | 0x02;
++                      _mt_fe_tn_set_reg(state, 0x32, buf);
++              }
++               _mt_fe_tn_get_reg(state, 0x37, &buf);
++              if (buf > 0x70) {
++                      buf = 0x7f;
++                      _mt_fe_tn_set_reg(state, 0x40, 0x40);
++              }
++              _mt_fe_tn_set_reg(state, 0x37, buf);
++                _mt_fe_tn_get_reg(state, 0x38, &buf);
++              if (buf < 0x0f) {
++                      buf = (buf & 0x0f) << 2;
++                      buf = buf + 0x0f;
++                      _mt_fe_tn_set_reg(state, 0x37, buf);
++              } else if (buf < 0x1f) {
++                      buf = buf + 0x0f;
++                      _mt_fe_tn_set_reg(state, 0x37, buf);
++              }
++               _mt_fe_tn_get_reg(state, 0x32, &buf);
++              buf = (buf | 0x20) & 0xef;
++              _mt_fe_tn_set_reg(state, 0x32, buf);
++               _mt_fe_tn_set_reg(state, 0x41, 0x00);
++              msleep(5);
++              _mt_fe_tn_set_reg(state, 0x41, 0x02);
++      } else if (state->tuner_mtt == 0xE1) {
++              freq_thres_div2_KHz = 580000;
++              freq_thres_div3r_KHz = 500000;
++              freq_thres_div3_KHz = 440000;
++              _mt_fe_tn_cali_PLL_tc2800(state, freq_KHz,
++                                         freq_thres_div2_KHz,
++                                         freq_thres_div3r_KHz,
++                                         freq_thres_div3_KHz);
++              msleep(3);
++              _mt_fe_tn_get_reg(state, 0x38, &buf);
++              _mt_fe_tn_set_reg(state, 0x38, buf);
++              _mt_fe_tn_set_reg(state, 0x30, 0x7f);
++              _mt_fe_tn_set_reg(state, 0x30, 0xff);
++              _mt_fe_tn_set_reg(state, 0x31, 0x80);
++              _mt_fe_tn_set_reg(state, 0x31, 0x00);
++              msleep(3);
++              _mt_fe_tn_get_reg(state, 0x38, &buf);
++              _mt_fe_tn_set_reg(state, 0x38, buf);
++              _mt_fe_tn_get_reg(state, 0x32, &buf);
++              buf = buf | 0x10;
++              _mt_fe_tn_set_reg(state, 0x32, buf);
++               _mt_fe_tn_set_reg(state, 0x30, 0x7f);
++              _mt_fe_tn_set_reg(state, 0x30, 0xff);
++              _mt_fe_tn_get_reg(state, 0x32, &buf);
++              buf = buf & 0xdf;
++              _mt_fe_tn_set_reg(state, 0x32, buf);
++              _mt_fe_tn_set_reg(state, 0x31, 0x80);
++              _mt_fe_tn_set_reg(state, 0x31, 0x00);
++              msleep(3);
++              _mt_fe_tn_get_reg(state, 0x37, &buf);
++              _mt_fe_tn_set_reg(state, 0x37, buf);
++              /*
++                 if ((freq_KHz == 802000) || (freq_KHz == 826000)) {
++                 _mt_fe_tn_set_reg(state, 0x37, 0x5e);
++                 }
++               */
++              _mt_fe_tn_get_reg(state, 0x32, &buf);
++              buf = (buf & 0xef) | 0x30;
++              _mt_fe_tn_set_reg(state, 0x32, buf);
++               _mt_fe_tn_set_reg(state, 0x41, 0x00);
++              msleep(2);
++              _mt_fe_tn_set_reg(state, 0x41, 0x02);
++      } else {
++              return 1;
++      }
++      return 0;
++}
++
++static int _mt_fe_tn_set_BB_tc2800(struct m88dc2800_state *state)
++{
++      return 0;
++}
++
++ static int _mt_fe_tn_set_appendix_tc2800(struct m88dc2800_state *state)
++
++{
++      u8 buf;
++      const u32 freq_KHz = state->tuner_freq;
++      if (state->tuner_mtt == 0xD1) {
++              if ((freq_KHz == 123000) || (freq_KHz == 147000) ||
++                  (freq_KHz == 171000) || (freq_KHz == 195000)) {
++                      _mt_fe_tn_set_reg(state, 0x20, 0x1b);
++              }
++              if ((freq_KHz == 371000) || (freq_KHz == 419000) ||
++                  (freq_KHz == 610000) || (freq_KHz == 730000) ||
++                  (freq_KHz == 754000) || (freq_KHz == 826000)) {
++                      _mt_fe_tn_get_reg(state, 0x0d, &buf);
++                      _mt_fe_tn_set_reg(state, 0x0d, (u8) (buf + 1));
++              }
++              if ((freq_KHz == 522000) || (freq_KHz == 578000) ||
++                  (freq_KHz == 634000) || (freq_KHz == 690000) ||
++                  (freq_KHz == 834000)) {
++                      _mt_fe_tn_get_reg(state, 0x0d, &buf);
++                      _mt_fe_tn_set_reg(state, 0x0d, (u8) (buf - 1));
++              }
++      } else if (state->tuner_mtt == 0xE1) {
++              _mt_fe_tn_set_reg(state, 0x20, 0xfc);
++              if (freq_KHz == 123000 || freq_KHz == 147000 ||
++                  freq_KHz == 171000 || freq_KHz == 195000 ||
++                  freq_KHz == 219000 || freq_KHz == 267000 ||
++                  freq_KHz == 291000 || freq_KHz == 339000 ||
++                  freq_KHz == 387000 || freq_KHz == 435000 ||
++                  freq_KHz == 482000 || freq_KHz == 530000 ||
++                  freq_KHz == 722000 ||
++                  (state->tuner_custom_cfg == 1 && freq_KHz == 315000)) {
++                      _mt_fe_tn_set_reg(state, 0x20, 0x5c);
++              }
++      }
++      return 0;
++}
++
++ static int _mt_fe_tn_set_DAC_tc2800(struct m88dc2800_state *state)
++{
++      u8 buf, tempnumber;
++      s32 N;
++      s32 f1f2number, f1, f2, delta1, Totalnum1;
++      s32 cntT, cntin, NCOI, z0, z1, z2, tmp;
++      u32 fc, fadc, fsd, f2d;
++      u32 FreqTrue108_Hz;
++      s32 M = state->tuner_crystal / 4000;
++      /* const u8 bandwidth = state->tuner_bandwidth; */
++      const u16 DAC_fre = 108;
++      const u32 crystal_KHz = state->tuner_crystal;
++      const u32 DACFreq_KHz = state->tuner_dac;
++      const u32 freq_KHz = state->tuner_freq;
++
++      if (state->tuner_mtt == 0xE1) {
++              _mt_fe_tn_get_reg(state, 0x33, &buf);
++              M = buf & 0x0f;
++              if (M == 0)
++                      M = 6;
++      }
++      _mt_fe_tn_get_reg(state, 0x34, &buf);
++      N = buf & 0x07;
++      _mt_fe_tn_get_reg(state, 0x35, &buf);
++      N = (N << 8) + buf;
++      buf = ((N + 256) * crystal_KHz / M / DAC_fre + 500) / 1000;
++      if (state->tuner_mtt == 0xE1) {
++              _mt_fe_tn_set_appendix_tc2800(state);
++              if (freq_KHz == 187000 || freq_KHz == 195000 ||
++                  freq_KHz == 131000 || freq_KHz == 211000 ||
++                  freq_KHz == 219000 || freq_KHz == 227000 ||
++                  freq_KHz == 267000 || freq_KHz == 299000 ||
++                  freq_KHz == 347000 || freq_KHz == 363000 ||
++                  freq_KHz == 395000 || freq_KHz == 403000 ||
++                  freq_KHz == 435000 || freq_KHz == 482000 ||
++                  freq_KHz == 474000 || freq_KHz == 490000 ||
++                  freq_KHz == 610000 || freq_KHz == 642000 ||
++                  freq_KHz == 666000 || freq_KHz == 722000 ||
++                  freq_KHz == 754000 ||
++                  ((freq_KHz == 379000 || freq_KHz == 467000 ||
++                    freq_KHz == 762000) && state->tuner_custom_cfg != 1)) {
++                      buf = buf + 1;
++              }
++              if (freq_KHz == 123000 || freq_KHz == 139000 ||
++                  freq_KHz == 147000 || freq_KHz == 171000 ||
++                  freq_KHz == 179000 || freq_KHz == 203000 ||
++                  freq_KHz == 235000 || freq_KHz == 251000 ||
++                  freq_KHz == 259000 || freq_KHz == 283000 ||
++                  freq_KHz == 331000 || freq_KHz == 363000 ||
++                  freq_KHz == 371000 || freq_KHz == 387000 ||
++                  freq_KHz == 411000 || freq_KHz == 427000 ||
++                  freq_KHz == 443000 || freq_KHz == 451000 ||
++                  freq_KHz == 459000 || freq_KHz == 506000 ||
++                  freq_KHz == 514000 || freq_KHz == 538000 ||
++                  freq_KHz == 546000 || freq_KHz == 554000 ||
++                  freq_KHz == 562000 || freq_KHz == 570000 ||
++                  freq_KHz == 578000 || freq_KHz == 602000 ||
++                  freq_KHz == 626000 || freq_KHz == 658000 ||
++                  freq_KHz == 690000 || freq_KHz == 714000 ||
++                  freq_KHz == 746000 || freq_KHz == 522000 ||
++                  freq_KHz == 826000 || freq_KHz == 155000 ||
++                  freq_KHz == 530000 ||
++                  ((freq_KHz == 275000 || freq_KHz == 355000) &&
++                   state->tuner_custom_cfg != 1) ||
++                  ((freq_KHz == 467000 || freq_KHz == 762000 ||
++                    freq_KHz == 778000 || freq_KHz == 818000) &&
++                   state->tuner_custom_cfg == 1)) {
++                      buf = buf - 1;
++              }
++      }
++       _mt_fe_tn_set_reg(state, 0x0e, buf);
++      _mt_fe_tn_set_reg(state, 0x0d, buf);
++      f1f2number =
++          (((DACFreq_KHz * M * buf) / crystal_KHz) << 16) / (N + 256) +
++          (((DACFreq_KHz * M * buf) % crystal_KHz) << 16) / ((N + 256) *
++                                                              crystal_KHz);
++      _mt_fe_tn_set_reg(state, 0xf1, (f1f2number & 0xff00) >> 8);
++      _mt_fe_tn_set_reg(state, 0xf2, f1f2number & 0x00ff);
++       FreqTrue108_Hz =
++          (N + 256) * crystal_KHz / (M * buf) * 1000 +
++          (((N + 256) * crystal_KHz) % (M * buf)) * 1000 / (M * buf);
++      f1 = 4096;
++      fc = FreqTrue108_Hz;
++      fadc = fc / 4;
++      fsd = 27000000;
++      f2d = state->tuner_bandwidth * 1000 / 2 - 150;
++      f2 = (fsd / 250) * f2d / ((fc + 500) / 1000);
++      delta1 = ((f1 - f2) << 15) / f2;
++      Totalnum1 = ((f1 - f2) << 15) - delta1 * f2;
++      cntT = f2;
++      cntin = Totalnum1;
++      NCOI = delta1;
++       z0 = cntin;
++      z1 = cntT;
++      z2 = NCOI;
++      tempnumber = (z0 & 0xff00) >> 8;
++      _mt_fe_tn_set_reg(state, 0xc9, (u8) (tempnumber & 0x0f));
++      tempnumber = (z0 & 0xff);
++      _mt_fe_tn_set_reg(state, 0xca, tempnumber);
++       tempnumber = (z1 & 0xff00) >> 8;
++      _mt_fe_tn_set_reg(state, 0xcb, tempnumber);
++      tempnumber = (z1 & 0xff);
++      _mt_fe_tn_set_reg(state, 0xcc, tempnumber);
++       tempnumber = (z2 & 0xff00) >> 8;
++      _mt_fe_tn_set_reg(state, 0xcd, tempnumber);
++      tempnumber = (z2 & 0xff);
++      _mt_fe_tn_set_reg(state, 0xce, tempnumber);
++       tmp = f1;
++      f1 = f2;
++      f2 = tmp / 2;
++      delta1 = ((f1 - f2) << 15) / f2;
++      Totalnum1 = ((f1 - f2) << 15) - delta1 * f2;
++      NCOI = (f1 << 15) / f2 - (1 << 15);
++      cntT = f2;
++      cntin = Totalnum1;
++      z0 = cntin;
++      z1 = cntT;
++      z2 = NCOI;
++      tempnumber = (z0 & 0xff00) >> 8;
++      _mt_fe_tn_set_reg(state, 0xd9, (u8) (tempnumber & 0x0f));
++      tempnumber = (z0 & 0xff);
++      _mt_fe_tn_set_reg(state, 0xda, tempnumber);
++       tempnumber = (z1 & 0xff00) >> 8;
++      _mt_fe_tn_set_reg(state, 0xdb, tempnumber);
++      tempnumber = (z1 & 0xff);
++      _mt_fe_tn_set_reg(state, 0xdc, tempnumber);
++       tempnumber = (z2 & 0xff00) >> 8;
++      _mt_fe_tn_set_reg(state, 0xdd, tempnumber);
++      tempnumber = (z2 & 0xff);
++      _mt_fe_tn_set_reg(state, 0xde, tempnumber);
++
++      return 0;
++}
++
++static int _mt_fe_tn_preset_tc2800(struct m88dc2800_state *state)
++{
++      if (state->tuner_mtt == 0xD1) {
++              _mt_fe_tn_set_reg(state, 0x19, 0x4a);
++              _mt_fe_tn_set_reg(state, 0x1b, 0x4b);
++               _mt_fe_tn_set_reg(state, 0x04, 0x04);
++              _mt_fe_tn_set_reg(state, 0x17, 0x0d);
++              _mt_fe_tn_set_reg(state, 0x62, 0x6c);
++              _mt_fe_tn_set_reg(state, 0x63, 0xf4);
++              _mt_fe_tn_set_reg(state, 0x1f, 0x0e);
++              _mt_fe_tn_set_reg(state, 0x6b, 0xf4);
++              _mt_fe_tn_set_reg(state, 0x14, 0x01);
++              _mt_fe_tn_set_reg(state, 0x5a, 0x75);
++              _mt_fe_tn_set_reg(state, 0x66, 0x74);
++              _mt_fe_tn_set_reg(state, 0x72, 0xe0);
++              _mt_fe_tn_set_reg(state, 0x70, 0x07);
++              _mt_fe_tn_set_reg(state, 0x15, 0x7b);
++              _mt_fe_tn_set_reg(state, 0x55, 0x71);
++               _mt_fe_tn_set_reg(state, 0x75, 0x55);
++              _mt_fe_tn_set_reg(state, 0x76, 0xac);
++              _mt_fe_tn_set_reg(state, 0x77, 0x6c);
++              _mt_fe_tn_set_reg(state, 0x78, 0x8b);
++              _mt_fe_tn_set_reg(state, 0x79, 0x42);
++              _mt_fe_tn_set_reg(state, 0x7a, 0xd2);
++               _mt_fe_tn_set_reg(state, 0x81, 0x01);
++              _mt_fe_tn_set_reg(state, 0x82, 0x00);
++              _mt_fe_tn_set_reg(state, 0x82, 0x02);
++              _mt_fe_tn_set_reg(state, 0x82, 0x04);
++              _mt_fe_tn_set_reg(state, 0x82, 0x06);
++              _mt_fe_tn_set_reg(state, 0x82, 0x08);
++              _mt_fe_tn_set_reg(state, 0x82, 0x09);
++              _mt_fe_tn_set_reg(state, 0x82, 0x29);
++              _mt_fe_tn_set_reg(state, 0x82, 0x49);
++              _mt_fe_tn_set_reg(state, 0x82, 0x58);
++              _mt_fe_tn_set_reg(state, 0x82, 0x59);
++              _mt_fe_tn_set_reg(state, 0x82, 0x98);
++              _mt_fe_tn_set_reg(state, 0x82, 0x99);
++              _mt_fe_tn_set_reg(state, 0x10, 0x05);
++              _mt_fe_tn_set_reg(state, 0x10, 0x0d);
++              _mt_fe_tn_set_reg(state, 0x11, 0x95);
++              _mt_fe_tn_set_reg(state, 0x11, 0x9d);
++              if (state->tuner_loopthrough != 0) {
++                      _mt_fe_tn_set_reg(state, 0x67, 0x25);
++              } else {
++                      _mt_fe_tn_set_reg(state, 0x67, 0x05);
++              }
++      } else if (state->tuner_mtt == 0xE1) {
++              _mt_fe_tn_set_reg(state, 0x1b, 0x47);
++              if (state->tuner_mode == 0) {   /* DVB-C */
++                      _mt_fe_tn_set_reg(state, 0x66, 0x74);
++                      _mt_fe_tn_set_reg(state, 0x62, 0x2c);
++                      _mt_fe_tn_set_reg(state, 0x63, 0x54);
++                      _mt_fe_tn_set_reg(state, 0x68, 0x0b);
++                      _mt_fe_tn_set_reg(state, 0x14, 0x00);
++              } else {                        /* CTTB */
++                      _mt_fe_tn_set_reg(state, 0x66, 0x74);
++                      _mt_fe_tn_set_reg(state, 0x62, 0x0c);
++                      _mt_fe_tn_set_reg(state, 0x63, 0x54);
++                      _mt_fe_tn_set_reg(state, 0x68, 0x0b);
++                      _mt_fe_tn_set_reg(state, 0x14, 0x05);
++              }
++              _mt_fe_tn_set_reg(state, 0x6f, 0x00);
++              _mt_fe_tn_set_reg(state, 0x84, 0x04);
++              _mt_fe_tn_set_reg(state, 0x5e, 0xbe);
++              _mt_fe_tn_set_reg(state, 0x87, 0x07);
++              _mt_fe_tn_set_reg(state, 0x8a, 0x1f);
++              _mt_fe_tn_set_reg(state, 0x8b, 0x1f);
++              _mt_fe_tn_set_reg(state, 0x88, 0x30);
++              _mt_fe_tn_set_reg(state, 0x58, 0x34);
++              _mt_fe_tn_set_reg(state, 0x61, 0x8c);
++              _mt_fe_tn_set_reg(state, 0x6a, 0x42);
++      }
++      return 0;
++}
++
++static int mt_fe_tn_wakeup_tc2800(struct m88dc2800_state *state)
++{
++      _mt_fe_tn_set_reg(state, 0x16, 0xb1);
++      _mt_fe_tn_set_reg(state, 0x09, 0x7d);
++      return 0;
++}
++
++  static int mt_fe_tn_sleep_tc2800(struct m88dc2800_state *state)
++{
++      _mt_fe_tn_set_reg(state, 0x16, 0xb0);
++      _mt_fe_tn_set_reg(state, 0x09, 0x6d);
++      return 0;
++}
++
++ static int mt_fe_tn_init_tc2800(struct m88dc2800_state *state)
++{
++      if (state->tuner_init_OK != 1) {
++              state->tuner_dev_addr = 0x61;   /* TUNER_I2C_ADDR_TC2800 */
++              state->tuner_freq = 650000;
++              state->tuner_qam = 0;
++              state->tuner_mode = 0;  // 0: DVB-C, 1: CTTB
++              state->tuner_bandwidth = 8;
++              state->tuner_loopthrough = 0;
++              state->tuner_crystal = 24000;
++              state->tuner_dac = 7200;
++              state->tuner_mtt = 0x00;
++              state->tuner_custom_cfg = 0;
++              state->tuner_version = 30022;   /* Driver version number */
++              state->tuner_time = 12092611;
++              state->tuner_init_OK = 1;
++      }
++      _mt_fe_tn_set_reg(state, 0x2b, 0x46);
++      _mt_fe_tn_set_reg(state, 0x2c, 0x75);
++      if (state->tuner_mtt == 0x00) {
++              u8 tmp = 0;
++              _mt_fe_tn_get_reg(state, 0x01, &tmp);
++              printk(KERN_INFO "m88dc2800: tuner id = 0x%02x ", tmp);
++              switch (tmp) {
++              case 0x0d:
++                      state->tuner_mtt = 0xD1;
++                      break;
++              case 0x8e:
++              default:
++                      state->tuner_mtt = 0xE1;
++                      break;
++              }
++      }
++      return 0;
++}
++
++ static int mt_fe_tn_set_freq_tc2800(struct m88dc2800_state *state,
++                                     u32 freq_KHz)
++{
++      u8 buf;
++      u8 buf1;
++
++      mt_fe_tn_init_tc2800(state);
++      state->tuner_freq = freq_KHz;
++      _mt_fe_tn_set_reg(state, 0x21, freq_KHz > 500000 ? 0xb9 : 0x99);
++      mt_fe_tn_wakeup_tc2800(state);
++       _mt_fe_tn_set_reg(state, 0x05, 0x7f);
++      _mt_fe_tn_set_reg(state, 0x06, 0xf8);
++       _mt_fe_tn_set_RF_front_tc2800(state);
++      _mt_fe_tn_set_PLL_freq_tc2800(state);
++      _mt_fe_tn_set_DAC_tc2800(state);
++      _mt_fe_tn_set_BB_tc2800(state);
++      _mt_fe_tn_preset_tc2800(state);
++       _mt_fe_tn_set_reg(state, 0x05, 0x00);
++      _mt_fe_tn_set_reg(state, 0x06, 0x00);
++       if (state->tuner_mtt == 0xD1) {
++              _mt_fe_tn_set_reg(state, 0x00, 0x01);
++              _mt_fe_tn_set_reg(state, 0x00, 0x00);
++               msleep(5);
++              _mt_fe_tn_set_reg(state, 0x41, 0x00);
++              msleep(5);
++              _mt_fe_tn_set_reg(state, 0x41, 0x02);
++
++              _mt_fe_tn_get_reg(state, 0x69, &buf1);
++              buf1 = buf1 & 0x0f;
++              _mt_fe_tn_get_reg(state, 0x61, &buf);
++              buf = buf & 0x0f;
++              if (buf == 0x0c)
++                      _mt_fe_tn_set_reg(state, 0x6a, 0x59);
++              if (buf1 > 0x02) {
++                      if (freq_KHz > 600000)
++                              _mt_fe_tn_set_reg(state, 0x66, 0x44);
++                      else if (freq_KHz > 500000)
++                              _mt_fe_tn_set_reg(state, 0x66, 0x64);
++                      else
++                              _mt_fe_tn_set_reg(state, 0x66, 0x74);
++              }               
++              if (buf1 < 0x03) {
++                      if (freq_KHz > 800000)
++                              _mt_fe_tn_set_reg(state, 0x87, 0x64);
++                      else if (freq_KHz > 600000)
++                              _mt_fe_tn_set_reg(state, 0x87, 0x54);
++                      else if (freq_KHz > 500000)
++                              _mt_fe_tn_set_reg(state, 0x87, 0x54);
++                      else if (freq_KHz > 300000)
++                              _mt_fe_tn_set_reg(state, 0x87, 0x43);
++                      else if (freq_KHz > 220000)
++                              _mt_fe_tn_set_reg(state, 0x87, 0x54);
++                      else if (freq_KHz > 110000)
++                              _mt_fe_tn_set_reg(state, 0x87, 0x14);
++                      else
++                              _mt_fe_tn_set_reg(state, 0x87, 0x54);
++                      msleep(5);
++              } else if (buf < 0x0c) {
++                      if (freq_KHz > 800000)
++                              _mt_fe_tn_set_reg(state, 0x87, 0x14);
++                      else if (freq_KHz > 600000)
++                              _mt_fe_tn_set_reg(state, 0x87, 0x14);
++                      else if (freq_KHz > 500000)
++                              _mt_fe_tn_set_reg(state, 0x87, 0x34);
++                      else if (freq_KHz > 300000)
++                              _mt_fe_tn_set_reg(state, 0x87, 0x43);
++                      else if (freq_KHz > 220000)
++                              _mt_fe_tn_set_reg(state, 0x87, 0x54);
++                      else if (freq_KHz > 110000)
++                              _mt_fe_tn_set_reg(state, 0x87, 0x14);
++                      else
++                              _mt_fe_tn_set_reg(state, 0x87, 0x54);
++                      msleep(5);
++              }
++      } else if ((state->tuner_mtt == 0xE1)) {
++              _mt_fe_tn_set_reg(state, 0x00, 0x01);
++              _mt_fe_tn_set_reg(state, 0x00, 0x00);
++               msleep(20);
++               _mt_fe_tn_get_reg(state, 0x32, &buf);
++              buf = (buf & 0xef) | 0x28;
++              _mt_fe_tn_set_reg(state, 0x32, buf);
++               msleep(50);
++              _mt_fe_tn_get_reg(state, 0x38, &buf);
++              _mt_fe_tn_set_reg(state, 0x38, buf);
++              _mt_fe_tn_get_reg(state, 0x32, &buf);
++              buf = (buf & 0xf7) | 0x10;
++              _mt_fe_tn_set_reg(state, 0x32, buf);
++               msleep(10);
++               _mt_fe_tn_get_reg(state, 0x69, &buf);
++              buf = buf & 0x03;
++              _mt_fe_tn_set_reg(state, 0x2a, buf);
++              if (buf > 0) {
++                      msleep(20);
++                      _mt_fe_tn_get_reg(state, 0x84, &buf);
++                      buf = buf & 0x1f;
++                      _mt_fe_tn_set_reg(state, 0x68, 0x0a);
++                      _mt_fe_tn_get_reg(state, 0x88, &buf1);
++                      buf1 = buf1 & 0x1f;
++                      if (buf <= buf1)
++                              _mt_fe_tn_set_reg(state, 0x66, 0x44);
++                      else
++                              _mt_fe_tn_set_reg(state, 0x66, 0x74);
++              } else {
++                      if (freq_KHz <= 600000)
++                              _mt_fe_tn_set_reg(state, 0x68, 0x0c);
++                      else
++                              _mt_fe_tn_set_reg(state, 0x68, 0x0e);
++                      _mt_fe_tn_set_reg(state, 0x30, 0xfb);
++                      _mt_fe_tn_set_reg(state, 0x30, 0xff);
++                      _mt_fe_tn_set_reg(state, 0x31, 0x04);
++                      _mt_fe_tn_set_reg(state, 0x31, 0x00);
++              }
++              if (state->tuner_loopthrough != 0) {
++                      _mt_fe_tn_get_reg(state, 0x28, &buf);
++                      if (buf == 0) {
++                              _mt_fe_tn_set_reg(state, 0x28, 0xff);
++                              _mt_fe_tn_get_reg(state, 0x61, &buf);
++                              buf = buf & 0x0f;
++                              if (buf > 9)
++                                      _mt_fe_tn_set_reg(state, 0x67, 0x74);
++                              else if (buf > 6)
++                                      _mt_fe_tn_set_reg(state, 0x67, 0x64);
++                              else if (buf > 3)
++                                      _mt_fe_tn_set_reg(state, 0x67, 0x54);
++                              else
++                                      _mt_fe_tn_set_reg(state, 0x67, 0x44);
++                      }
++              } else {
++                      _mt_fe_tn_set_reg(state, 0x67, 0x34);
++              }
++      } else {
++              return 1;
++      }
++      return 0;
++}
++
++
++/*
++static int mt_fe_tn_set_BB_filter_band_tc2800(struct m88dc2800_state *state,
++                                            u8 bandwidth)
++{
++      u8 buf, tmp;
++
++      _mt_fe_tn_get_reg(state, 0x53, &tmp);
++
++      if (bandwidth == 6)
++              buf = 0x01 << 1;
++      else if (bandwidth == 7)
++              buf = 0x02 << 1;
++      else if (bandwidth == 8)
++              buf = 0x04 << 1;
++      else
++              buf = 0x04 << 1;
++
++      tmp &= 0xf1;
++      tmp |= buf;
++      _mt_fe_tn_set_reg(state, 0x53, tmp);
++      state->tuner_bandwidth = bandwidth;
++      return 0;
++}
++*/
++
++static s32 mt_fe_tn_get_signal_strength_tc2800(struct m88dc2800_state
++                                             *state)
++{
++      s32 level = -107;
++      s32 tmp1, tmp2, tmp3, tmp4, tmp5, tmp6;
++      s32 val1, val2, val;
++      s32 result2, result3, result4, result5, result6;
++      s32 append;
++      u8 tmp;
++      s32 freq_KHz = (s32) state->tuner_freq;
++      if (state->tuner_mtt == 0xD1) {
++              _mt_fe_tn_get_reg(state, 0x61, &tmp);
++              tmp1 = tmp & 0x0f;
++               _mt_fe_tn_get_reg(state, 0x69, &tmp);
++              tmp2 = tmp & 0x0f;
++               _mt_fe_tn_get_reg(state, 0x73, &tmp);
++              tmp3 = tmp & 0x07;
++               _mt_fe_tn_get_reg(state, 0x7c, &tmp);
++              tmp4 = (tmp >> 4) & 0x0f;
++               _mt_fe_tn_get_reg(state, 0x7b, &tmp);
++              tmp5 = tmp & 0x0f;
++               _mt_fe_tn_get_reg(state, 0x7f, &tmp);
++              tmp6 = (tmp >> 5) & 0x01;
++              if (tmp1 > 6) {
++                      val1 = 0;
++                      if (freq_KHz <= 200000) {
++                              val2 = (tmp1 - 6) * 267;
++                      } else if (freq_KHz <= 600000) {
++                              val2 = (tmp1 - 6) * 280;
++                      } else {
++                              val2 = (tmp1 - 6) * 290;
++                      }
++                      val = val1 + val2;
++              } else {
++                      if (tmp1 == 0) {
++                              val1 = -550;
++                      } else {
++                              val1 = 0;
++                      }
++                      if ((tmp1 < 4) && (freq_KHz >= 506000)) {
++                              val1 = -850;
++                      }
++                      val2 = 0;
++                      val = val1 + val2;
++              }
++              if (freq_KHz <= 95000) {
++                      result2 = tmp2 * 289;
++              } else if (freq_KHz <= 155000) {
++                      result2 = tmp2 * 278;
++              } else if (freq_KHz <= 245000) {
++                      result2 = tmp2 * 267;
++              } else if (freq_KHz <= 305000) {
++                      result2 = tmp2 * 256;
++              } else if (freq_KHz <= 335000) {
++                      result2 = tmp2 * 244;
++              } else if (freq_KHz <= 425000) {
++                      result2 = tmp2 * 233;
++              } else if (freq_KHz <= 575000) {
++                      result2 = tmp2 * 222;
++              } else if (freq_KHz <= 665000) {
++                      result2 = tmp2 * 211;
++              } else {
++                      result2 = tmp2 * 200;
++              }
++              result3 = (6 - tmp3) * 100;
++              result4 = 300 * tmp4;
++              result5 = 50 * tmp5;
++              result6 = 300 * tmp6;
++              if (freq_KHz < 105000) {
++                      append = -450;
++              } else if (freq_KHz <= 227000) {
++                      append = -4 * (freq_KHz / 1000 - 100) + 150;
++              } else if (freq_KHz <= 305000) {
++                      append = -4 * (freq_KHz / 1000 - 100);
++              } else if (freq_KHz <= 419000) {
++                      append = 500 - 40 * (freq_KHz / 1000 - 300) / 17 + 130;
++              } else if (freq_KHz <= 640000) {
++                      append = 500 - 40 * (freq_KHz / 1000 - 300) / 17;
++              } else {
++                      append = -500;
++              }
++              level = append - (val + result2 + result3 + result4 +
++                                result5 + result6);
++              level /= 100;
++      } else if (state->tuner_mtt == 0xE1) {
++              _mt_fe_tn_get_reg(state, 0x61, &tmp);
++              tmp1 = tmp & 0x0f;
++               _mt_fe_tn_get_reg(state, 0x84, &tmp);
++              tmp2 = tmp & 0x1f;
++               _mt_fe_tn_get_reg(state, 0x69, &tmp);
++              tmp3 = tmp & 0x03;
++               _mt_fe_tn_get_reg(state, 0x73, &tmp);
++              tmp4 = tmp & 0x0f;
++               _mt_fe_tn_get_reg(state, 0x7c, &tmp);
++              tmp5 = (tmp >> 4) & 0x0f;
++               _mt_fe_tn_get_reg(state, 0x7b, &tmp);
++              tmp6 = tmp & 0x0f;
++              if (freq_KHz < 151000) {
++                      result2 = (1150 - freq_KHz / 100) * 163 / 33 + 4230;
++                      result3 = (1150 - freq_KHz / 100) * 115 / 33 + 1850;
++                      result4 = -3676 * (freq_KHz / 1000) / 100 + 6115;
++              } else if (freq_KHz < 257000) {
++                      result2 = (1540 - freq_KHz / 100) * 11 / 4 + 3870;
++                      result3 = (1540 - freq_KHz / 100) * 205 / 96 + 2100;
++                      result4 = -21 * freq_KHz / 1000 + 5084;
++              } else if (freq_KHz < 305000) {
++                      result2 = (2620 - freq_KHz / 100) * 5 / 3 + 2770;
++                      result3 = (2620 - freq_KHz / 100) * 10 / 7 + 1700;
++                      result4 = 650;
++              } else if (freq_KHz < 449000) {
++                      result2 = (307 - freq_KHz / 1000) * 82 / 27 + 11270;
++                      result3 = (3100 - freq_KHz / 100) * 5 / 3 + 10000;
++                      result4 = 134 * freq_KHz / 10000 + 11875;
++              } else {
++                      result2 = (307 - freq_KHz / 1000) * 82 / 27 + 11270;
++                      result3 = 8400;
++                      result4 = 5300;
++              }
++              if (tmp1 > 6) {
++                      val1 = result2;
++                      val2 = 2900;
++                      val = 500;
++              } else if (tmp1 > 0) {
++                      val1 = result3;
++                      val2 = 2700;
++                      val = 500;
++              } else {
++                      val1 = result4;
++                      val2 = 2700;
++                      val = 400;
++              }
++              level = val1 - (val2 * tmp1 + 500 * tmp2 + 3000 * tmp3 -
++                          500 * tmp4 + 3000 * tmp5 + val * tmp6) - 1000;
++              level /= 1000;
++      }
++      return level;
++}
++
++
++/* m88dc2800 operation functions */
++u8 M88DC2000GetLock(struct m88dc2800_state * state)
++{
++      u8 u8ret = 0;
++      if (ReadReg(state, 0x80) < 0x06) {
++              if ((ReadReg(state, 0xdf) & 0x80) == 0x80
++                   &&(ReadReg(state, 0x91) & 0x23) == 0x03
++                   &&(ReadReg(state, 0x43) & 0x08) == 0x08)
++                      u8ret = 1;
++              else
++                      u8ret = 0;
++      } else {
++              if ((ReadReg(state, 0x85) & 0x08) == 0x08)
++                      u8ret = 1;
++              else
++                      u8ret = 0;
++      }
++      dprintk("%s, lock=%d\n", __func__, u8ret);
++      return u8ret;
++}
++
++static int M88DC2000SetTsType(struct m88dc2800_state *state, u8 type)
++{
++      u8 regC2H;
++
++      if (type == 3) {
++              WriteReg(state, 0x84, 0x6A);
++              WriteReg(state, 0xC0, 0x43);
++              WriteReg(state, 0xE2, 0x06);
++              regC2H = ReadReg(state, 0xC2);
++              regC2H &= 0xC0;
++              regC2H |= 0x1B;
++              WriteReg(state, 0xC2, regC2H);
++              WriteReg(state, 0xC1, 0x60);    /* common interface */
++      } else if (type == 1) {
++              WriteReg(state, 0x84, 0x6A);
++              WriteReg(state, 0xC0, 0x47);    /* serial format */
++              WriteReg(state, 0xE2, 0x02);
++              regC2H = ReadReg(state, 0xC2);
++              regC2H &= 0xC7;
++              WriteReg(state, 0xC2, regC2H);
++              WriteReg(state, 0xC1, 0x00);
++      } else {
++              WriteReg(state, 0x84, 0x6C);
++              WriteReg(state, 0xC0, 0x43);    /* parallel format */
++              WriteReg(state, 0xE2, 0x06);
++              regC2H = ReadReg(state, 0xC2);
++              regC2H &= 0xC7;
++              WriteReg(state, 0xC2, regC2H);
++              WriteReg(state, 0xC1, 0x00);
++      }
++      return 0;
++}
++
++static int M88DC2000RegInitial_TC2800(struct m88dc2800_state *state)
++{
++      u8 RegE3H, RegE4H;
++
++      WriteReg(state, 0x00, 0x48);
++      WriteReg(state, 0x01, 0x09);
++      WriteReg(state, 0xFB, 0x0A);
++      WriteReg(state, 0xFC, 0x0B);
++      WriteReg(state, 0x02, 0x0B);
++      WriteReg(state, 0x03, 0x18);
++      WriteReg(state, 0x05, 0x0D);
++      WriteReg(state, 0x36, 0x80);
++      WriteReg(state, 0x43, 0x40);
++      WriteReg(state, 0x55, 0x7A);
++      WriteReg(state, 0x56, 0xD9);
++      WriteReg(state, 0x57, 0xDF);
++      WriteReg(state, 0x58, 0x39);
++      WriteReg(state, 0x5A, 0x00);
++      WriteReg(state, 0x5C, 0x71);
++      WriteReg(state, 0x5D, 0x23);
++      WriteReg(state, 0x86, 0x40);
++      WriteReg(state, 0xF9, 0x08);
++      WriteReg(state, 0x61, 0x40);
++      WriteReg(state, 0x62, 0x0A);
++      WriteReg(state, 0x90, 0x06);
++      WriteReg(state, 0xDE, 0x00);
++      WriteReg(state, 0xA0, 0x03);
++      WriteReg(state, 0xDF, 0x81);
++      WriteReg(state, 0xFA, 0x40);
++      WriteReg(state, 0x37, 0x10);
++      WriteReg(state, 0xF0, 0x40);
++      WriteReg(state, 0xF2, 0x9C);
++      WriteReg(state, 0xF3, 0x40);
++      RegE3H = ReadReg(state, 0xE3);
++      RegE4H = ReadReg(state, 0xE4);
++      if (((RegE3H & 0xC0) == 0x00) && ((RegE4H & 0xC0) == 0x00)) {
++              WriteReg(state, 0x30, 0xFF);
++              WriteReg(state, 0x31, 0x00);
++              WriteReg(state, 0x32, 0x00);
++              WriteReg(state, 0x33, 0x00);
++              WriteReg(state, 0x35, 0x32);
++              WriteReg(state, 0x40, 0x00);
++              WriteReg(state, 0x41, 0x10);
++              WriteReg(state, 0xF1, 0x02);
++              WriteReg(state, 0xF4, 0x04);
++              WriteReg(state, 0xF5, 0x00);
++              WriteReg(state, 0x42, 0x14);
++              WriteReg(state, 0xE1, 0x25);
++      } else if (((RegE3H & 0xC0) == 0x80) && ((RegE4H & 0xC0) == 0x40)) {
++              WriteReg(state, 0x30, 0xFF);
++              WriteReg(state, 0x31, 0x00);
++              WriteReg(state, 0x32, 0x00);
++              WriteReg(state, 0x33, 0x00);
++              WriteReg(state, 0x35, 0x32);
++              WriteReg(state, 0x39, 0x00);
++              WriteReg(state, 0x3A, 0x00);
++              WriteReg(state, 0x40, 0x00);
++              WriteReg(state, 0x41, 0x10);
++              WriteReg(state, 0xF1, 0x00);
++              WriteReg(state, 0xF4, 0x00);
++              WriteReg(state, 0xF5, 0x40);
++              WriteReg(state, 0x42, 0x14);
++              WriteReg(state, 0xE1, 0x25);
++      } else if ((RegE3H == 0x80 || RegE3H == 0x81)
++                  && (RegE4H == 0x80 || RegE4H == 0x81)) {
++              WriteReg(state, 0x30, 0xFF);
++              WriteReg(state, 0x31, 0x00);
++              WriteReg(state, 0x32, 0x00);
++              WriteReg(state, 0x33, 0x00);
++              WriteReg(state, 0x35, 0x32);
++              WriteReg(state, 0x39, 0x00);
++              WriteReg(state, 0x3A, 0x00);
++              WriteReg(state, 0xF1, 0x00);
++              WriteReg(state, 0xF4, 0x00);
++              WriteReg(state, 0xF5, 0x40);
++              WriteReg(state, 0x42, 0x24);
++              WriteReg(state, 0xE1, 0x25);
++              WriteReg(state, 0x92, 0x7F);
++              WriteReg(state, 0x93, 0x91);
++              WriteReg(state, 0x95, 0x00);
++              WriteReg(state, 0x2B, 0x33);
++              WriteReg(state, 0x2A, 0x2A);
++              WriteReg(state, 0x2E, 0x80);
++              WriteReg(state, 0x25, 0x25);
++              WriteReg(state, 0x2D, 0xFF);
++              WriteReg(state, 0x26, 0xFF);
++              WriteReg(state, 0x27, 0x00);
++              WriteReg(state, 0x24, 0x25);
++              WriteReg(state, 0xA4, 0xFF);
++              WriteReg(state, 0xA3, 0x0D);
++      } else {
++              WriteReg(state, 0x30, 0xFF);
++              WriteReg(state, 0x31, 0x00);
++              WriteReg(state, 0x32, 0x00);
++              WriteReg(state, 0x33, 0x00);
++              WriteReg(state, 0x35, 0x32);
++              WriteReg(state, 0x39, 0x00);
++              WriteReg(state, 0x3A, 0x00);
++              WriteReg(state, 0xF1, 0x00);
++              WriteReg(state, 0xF4, 0x00);
++              WriteReg(state, 0xF5, 0x40);
++              WriteReg(state, 0x42, 0x24);
++              WriteReg(state, 0xE1, 0x27);
++              WriteReg(state, 0x92, 0x7F);
++              WriteReg(state, 0x93, 0x91);
++              WriteReg(state, 0x95, 0x00);
++              WriteReg(state, 0x2B, 0x33);
++              WriteReg(state, 0x2A, 0x2A);
++              WriteReg(state, 0x2E, 0x80);
++              WriteReg(state, 0x25, 0x25);
++              WriteReg(state, 0x2D, 0xFF);
++              WriteReg(state, 0x26, 0xFF);
++              WriteReg(state, 0x27, 0x00);
++              WriteReg(state, 0x24, 0x25);
++              WriteReg(state, 0xA4, 0xFF);
++              WriteReg(state, 0xA3, 0x10);
++      }
++      WriteReg(state, 0xF6, 0x4E);
++      WriteReg(state, 0xF7, 0x20);
++      WriteReg(state, 0x89, 0x02);
++      WriteReg(state, 0x14, 0x08);
++      WriteReg(state, 0x6F, 0x0D);
++      WriteReg(state, 0x10, 0xFF);
++      WriteReg(state, 0x11, 0x00);
++      WriteReg(state, 0x12, 0x30);
++      WriteReg(state, 0x13, 0x23);
++      WriteReg(state, 0x60, 0x00);
++      WriteReg(state, 0x69, 0x00);
++      WriteReg(state, 0x6A, 0x03);
++      WriteReg(state, 0xE0, 0x75);
++      WriteReg(state, 0x8D, 0x29);
++      WriteReg(state, 0x4E, 0xD8);
++      WriteReg(state, 0x88, 0x80);
++      WriteReg(state, 0x52, 0x79);
++      WriteReg(state, 0x53, 0x03);
++      WriteReg(state, 0x59, 0x30);
++      WriteReg(state, 0x5E, 0x02);
++      WriteReg(state, 0x5F, 0x0F);
++      WriteReg(state, 0x71, 0x03);
++      WriteReg(state, 0x72, 0x12);
++      WriteReg(state, 0x73, 0x12);
++
++      return 0;
++}
++
++static int M88DC2000AutoTSClock_P(struct m88dc2800_state *state, u32 sym,
++                                u16 qam)
++{
++      u32 dataRate;
++      u8 clk_div, value;
++      printk(KERN_INFO
++             "m88dc2800: M88DC2000AutoTSClock_P, symrate=%d qam=%d\n",
++             sym, qam);
++      switch (qam) {
++      case 16:
++              dataRate = 4;
++              break;
++      case 32:
++              dataRate = 5;
++              break;
++      case 128:
++              dataRate = 7;
++              break;
++      case 256:
++              dataRate = 8;
++              break;
++      case 64:
++      default:
++              dataRate = 6;
++              break;
++      }
++      dataRate *= sym * 105;
++      dataRate /= 800;
++      if (dataRate <= 4115)
++              clk_div = 0x05;
++      else if (dataRate <= 4800)
++              clk_div = 0x04;
++      else if (dataRate <= 5760)
++              clk_div = 0x03;
++      else if (dataRate <= 7200)
++              clk_div = 0x02;
++      else if (dataRate <= 9600)
++              clk_div = 0x01;
++      else
++              clk_div = 0x00;
++      value = ReadReg(state, 0xC2);
++      value &= 0xc0;
++      value |= clk_div;
++      WriteReg(state, 0xC2, value);
++      return 0;
++}
++
++static int M88DC2000AutoTSClock_C(struct m88dc2800_state *state, u32 sym,
++                                u16 qam)
++{
++      u32 dataRate;
++      u8 clk_div, value;
++      printk(KERN_INFO
++             "m88dc2800: M88DC2000AutoTSClock_C, symrate=%d qam=%d\n",
++             sym, qam);
++      switch (qam) {
++      case 16:
++              dataRate = 4;
++              break;
++      case 32:
++              dataRate = 5;
++              break;
++      case 128:
++              dataRate = 7;
++              break;
++      case 256:
++              dataRate = 8;
++              break;
++      case 64:
++      default:
++              dataRate = 6;
++              break;
++      }
++      dataRate *= sym * 105;
++      dataRate /= 800;
++      if (dataRate <= 4115)
++              clk_div = 0x3F;
++      else if (dataRate <= 4800)
++              clk_div = 0x36;
++      else if (dataRate <= 5760)
++              clk_div = 0x2D;
++      else if (dataRate <= 7200)
++              clk_div = 0x24;
++      else if (dataRate <= 9600)
++              clk_div = 0x1B;
++      else
++              clk_div = 0x12;
++      value = ReadReg(state, 0xC2);
++      value &= 0xc0;
++      value |= clk_div;
++      WriteReg(state, 0xC2, value);
++      return 0;
++}
++
++static int M88DC2000SetTxMode(struct m88dc2800_state *state, u8 inverted,
++                            u8 j83)
++{
++      u8 value = 0;
++      if (inverted)
++              value |= 0x08;  /*      spectrum inverted       */
++      if (j83)
++              value |= 0x01;  /*      J83C                    */
++      WriteReg(state, 0x83, value);
++      return 0;
++}
++
++static int M88DC2000SoftReset(struct m88dc2800_state *state)
++{
++      WriteReg(state, 0x80, 0x01);
++      WriteReg(state, 0x82, 0x00);
++      msleep(1);
++      WriteReg(state, 0x80, 0x00);
++      return 0;
++}
++
++static int M88DC2000SetSym(struct m88dc2800_state *state, u32 sym, u32 xtal)
++{
++      u8 value;
++      u8 reg6FH, reg12H;
++      u64 fValue;
++      u32 dwValue;
++
++      printk(KERN_INFO "%s, sym=%d, xtal=%d\n", __func__, sym, xtal);
++      fValue = 4294967296 * (sym + 10);
++      do_div(fValue, xtal);
++
++      /* fValue  = 4294967296 * (sym + 10) / xtal; */
++      dwValue = (u32) fValue;
++      printk(KERN_INFO "%s, fvalue1=%x\n", __func__, dwValue);
++      WriteReg(state, 0x58, (u8) ((dwValue >> 24) & 0xff));
++      WriteReg(state, 0x57, (u8) ((dwValue >> 16) & 0xff));
++      WriteReg(state, 0x56, (u8) ((dwValue >> 8) & 0xff));
++      WriteReg(state, 0x55, (u8) ((dwValue >> 0) & 0xff));
++
++      /* fValue = 2048 * xtal / sym; */
++      fValue = 2048 * xtal;
++      do_div(fValue, sym);
++      dwValue = (u32) fValue;
++      printk(KERN_INFO "%s, fvalue2=%x\n", __func__, dwValue);
++      WriteReg(state, 0x5D, (u8) ((dwValue >> 8) & 0xff));
++      WriteReg(state, 0x5C, (u8) ((dwValue >> 0) & 0xff));
++      value = ReadReg(state, 0x5A);
++      if (((dwValue >> 16) & 0x0001) == 0)
++              value &= 0x7F;
++      else
++              value |= 0x80;
++      WriteReg(state, 0x5A, value);
++      value = ReadReg(state, 0x89);
++      if (sym <= 1800)
++              value |= 0x01;
++      else
++              value &= 0xFE;
++      WriteReg(state, 0x89, value);
++      if (sym >= 6700) {
++              reg6FH = 0x0D;
++              reg12H = 0x30;
++      } else if (sym >= 4000) {
++              fValue = 22 * 4096 / sym;
++              reg6FH = (u8) fValue;
++              reg12H = 0x30;
++      } else if (sym >= 2000) {
++              fValue = 14 * 4096 / sym;
++              reg6FH = (u8) fValue;
++              reg12H = 0x20;
++      } else {
++              fValue = 7 * 4096 / sym;
++              reg6FH = (u8) fValue;
++              reg12H = 0x10;
++      }
++      WriteReg(state, 0x6F, reg6FH);
++      WriteReg(state, 0x12, reg12H);
++      if (((ReadReg(state, 0xE3) & 0x80) == 0x80)
++             && ((ReadReg(state, 0xE4) & 0x80) == 0x80)) {
++              if (sym < 3000) {
++                      WriteReg(state, 0x6C, 0x16);
++                      WriteReg(state, 0x6D, 0x10);
++                      WriteReg(state, 0x6E, 0x18);
++              } else {
++                      WriteReg(state, 0x6C, 0x14);
++                      WriteReg(state, 0x6D, 0x0E);
++                      WriteReg(state, 0x6E, 0x36);
++              }
++      } else {
++              WriteReg(state, 0x6C, 0x16);
++              WriteReg(state, 0x6D, 0x10);
++              WriteReg(state, 0x6E, 0x18);
++      }
++      return 0;
++}
++
++static int M88DC2000SetQAM(struct m88dc2800_state *state, u16 qam)
++{
++      u8 reg00H, reg4AH, regC2H, reg44H, reg4CH, reg4DH, reg74H, value;
++      u8 reg8BH, reg8EH;
++      printk(KERN_INFO "%s, qam=%d\n", __func__, qam);
++      regC2H = ReadReg(state, 0xC2);
++      regC2H &= 0xF8;
++      switch (qam) {
++      case 16:                /* 16 QAM */
++              reg00H = 0x08;
++              reg4AH = 0x0F;
++              regC2H |= 0x02;
++              reg44H = 0xAA;
++              reg4CH = 0x0C;
++              reg4DH = 0xF7;
++              reg74H = 0x0E;
++              if (((ReadReg(state, 0xE3) & 0x80) == 0x80)
++                   && ((ReadReg(state, 0xE4) & 0x80) == 0x80)) {
++                      reg8BH = 0x5A;
++                      reg8EH = 0xBD;
++              } else {
++                      reg8BH = 0x5B;
++                      reg8EH = 0x9D;
++              }
++              WriteReg(state, 0x6E, 0x18);
++              break;
++      case 32:                /* 32 QAM */
++              reg00H = 0x18;
++              reg4AH = 0xFB;
++              regC2H |= 0x02;
++              reg44H = 0xAA;
++              reg4CH = 0x0C;
++              reg4DH = 0xF7;
++              reg74H = 0x0E;
++              if (((ReadReg(state, 0xE3) & 0x80) == 0x80)
++                   && ((ReadReg(state, 0xE4) & 0x80) == 0x80)) {
++                      reg8BH = 0x5A;
++                      reg8EH = 0xBD;
++              } else {
++                      reg8BH = 0x5B;
++                      reg8EH = 0x9D;
++              }
++              WriteReg(state, 0x6E, 0x18);
++              break;
++      case 64:                /* 64 QAM */
++              reg00H = 0x48;
++              reg4AH = 0xCD;
++              regC2H |= 0x02;
++              reg44H = 0xAA;
++              reg4CH = 0x0C;
++              reg4DH = 0xF7;
++              reg74H = 0x0E;
++              if (((ReadReg(state, 0xE3) & 0x80) == 0x80)
++                   && ((ReadReg(state, 0xE4) & 0x80) == 0x80)) {
++                      reg8BH = 0x5A;
++                      reg8EH = 0xBD;
++              } else {
++                      reg8BH = 0x5B;
++                      reg8EH = 0x9D;
++              }
++              break;
++      case 128:               /* 128 QAM */
++              reg00H = 0x28;
++              reg4AH = 0xFF;
++              regC2H |= 0x02;
++              reg44H = 0xA9;
++              reg4CH = 0x08;
++              reg4DH = 0xF5;
++              reg74H = 0x0E;
++              reg8BH = 0x5B;
++              reg8EH = 0x9D;
++              break;
++      case 256:               /* 256 QAM */
++              reg00H = 0x38;
++              reg4AH = 0xCD;
++              if (((ReadReg(state, 0xE3) & 0x80) == 0x80)
++                   && ((ReadReg(state, 0xE4) & 0x80) == 0x80)) {
++                      regC2H |= 0x02;
++              } else {
++                      regC2H |= 0x01;
++              }
++              reg44H = 0xA9;
++              reg4CH = 0x08;
++              reg4DH = 0xF5;
++              reg74H = 0x0E;
++              reg8BH = 0x5B;
++              reg8EH = 0x9D;
++              break;
++      default:                /* 64 QAM */
++              reg00H = 0x48;
++              reg4AH = 0xCD;
++              regC2H |= 0x02;
++              reg44H = 0xAA;
++              reg4CH = 0x0C;
++              reg4DH = 0xF7;
++              reg74H = 0x0E;
++              if (((ReadReg(state, 0xE3) & 0x80) == 0x80)
++                   && ((ReadReg(state, 0xE4) & 0x80) == 0x80)) {
++                      reg8BH = 0x5A;
++                      reg8EH = 0xBD;
++              } else {
++                      reg8BH = 0x5B;
++                      reg8EH = 0x9D;
++              }
++              break;
++      }
++      WriteReg(state, 0x00, reg00H);
++      value = ReadReg(state, 0x88);
++      value |= 0x08;
++      WriteReg(state, 0x88, value);
++      WriteReg(state, 0x4B, 0xFF);
++      WriteReg(state, 0x4A, reg4AH);
++      value &= 0xF7;
++      WriteReg(state, 0x88, value);
++      WriteReg(state, 0xC2, regC2H);
++      WriteReg(state, 0x44, reg44H);
++      WriteReg(state, 0x4C, reg4CH);
++      WriteReg(state, 0x4D, reg4DH);
++      WriteReg(state, 0x74, reg74H);
++      WriteReg(state, 0x8B, reg8BH);
++      WriteReg(state, 0x8E, reg8EH);
++      return 0;
++}
++
++static int M88DC2000WriteTuner_TC2800(struct m88dc2800_state *state,
++                                    u32 freq_KHz)
++{
++      printk(KERN_INFO "%s, freq=%d KHz\n", __func__, freq_KHz);
++      return mt_fe_tn_set_freq_tc2800(state, freq_KHz);
++}
++
++static int m88dc2800_init(struct dvb_frontend *fe)
++{
++      dprintk("%s()\n", __func__);
++      return 0;
++}
++
++static int m88dc2800_set_parameters(struct dvb_frontend *fe)
++{
++      struct dtv_frontend_properties *c = &fe->dtv_property_cache;
++      u8 is_annex_c, is_update;
++      u16 temp_qam;
++      s32 waiting_time;
++      struct m88dc2800_state *state = fe->demodulator_priv;
++
++      is_annex_c = c->delivery_system == SYS_DVBC_ANNEX_C ? 1 : 0;
++
++      switch (c->modulation) {
++      case QAM_16:
++              temp_qam = 16;
++              break;
++      case QAM_32:
++              temp_qam = 32;
++              break;
++      case QAM_128:
++              temp_qam = 128;
++              break;
++      case QAM_256:
++              temp_qam = 256;
++              break;
++      default:                /* QAM_64 */
++              temp_qam = 64;
++              break;
++      }
++
++      state->inverted = c->inversion == INVERSION_ON ? 1 : 0;
++
++      printk(KERN_INFO
++           "m88dc2800: state, freq=%d qam=%d sym=%d inverted=%d xtal=%d\n",
++           state->freq, state->qam, state->sym, state->inverted,
++           state->xtal);
++      printk(KERN_INFO
++           "m88dc2800: set frequency to %d qam=%d symrate=%d annex-c=%d\n",
++           c->frequency, temp_qam, c->symbol_rate, is_annex_c);
++
++      is_update = 0;
++      WriteReg(state, 0x80, 0x01);
++      if (c->frequency != state->freq) {
++              M88DC2000WriteTuner_TC2800(state, c->frequency / 1000);
++              state->freq = c->frequency;
++      }
++      if (c->symbol_rate != state->sym) {
++              M88DC2000SetSym(state, c->symbol_rate / 1000, state->xtal);
++              state->sym = c->symbol_rate;
++              is_update = 1;
++      }
++      if (temp_qam != state->qam) {
++              M88DC2000SetQAM(state, temp_qam);
++              state->qam = temp_qam;
++              is_update = 1;
++      }
++
++      if (is_update != 0) {
++              if (state->config->ts_mode == 3)
++                      M88DC2000AutoTSClock_C(state, state->sym / 1000,
++                                             temp_qam);
++              else
++                      M88DC2000AutoTSClock_P(state, state->sym / 1000,
++                                             temp_qam);
++      }
++
++      M88DC2000SetTxMode(state, state->inverted, is_annex_c);
++      M88DC2000SoftReset(state);
++      if (((ReadReg(state, 0xE3) & 0x80) == 0x80)
++          && ((ReadReg(state, 0xE4) & 0x80) == 0x80))
++              waiting_time = 800;
++      else
++              waiting_time = 500;
++      while (waiting_time > 0) {
++              msleep(50);
++              waiting_time -= 50;
++              if (M88DC2000GetLock(state))
++                      return 0;
++      }
++
++      state->inverted = (state->inverted != 0) ? 0 : 1;
++      M88DC2000SetTxMode(state, state->inverted, is_annex_c);
++      M88DC2000SoftReset(state);
++      if (((ReadReg(state, 0xE3) & 0x80) == 0x80) &&
++          ((ReadReg(state, 0xE4) & 0x80) == 0x80))
++              waiting_time = 800;
++      else
++              waiting_time = 500;
++      while (waiting_time > 0) {
++              msleep(50);
++              waiting_time -= 50;
++              if (M88DC2000GetLock(state))
++                      return 0;
++      }
++      return 0;
++}
++
++static int m88dc2800_read_status(struct dvb_frontend *fe,
++                               fe_status_t * status)
++{
++      struct m88dc2800_state *state = fe->demodulator_priv;
++      *status = 0;
++
++      if (M88DC2000GetLock(state)) {
++              *status = FE_HAS_SIGNAL | FE_HAS_CARRIER
++                  |FE_HAS_SYNC | FE_HAS_VITERBI | FE_HAS_LOCK;
++      }
++      return 0;
++}
++
++static int m88dc2800_read_ber(struct dvb_frontend *fe, u32 * ber)
++{
++      struct m88dc2800_state *state = fe->demodulator_priv;
++      u16 tmp;
++
++      if (M88DC2000GetLock(state) == 0) {
++              state->ber = 0;
++      } else if ((ReadReg(state, 0xA0) & 0x80) != 0x80) {
++              tmp = ReadReg(state, 0xA2) << 8;
++              tmp += ReadReg(state, 0xA1);
++              state->ber = tmp;
++              WriteReg(state, 0xA0, 0x05);
++              WriteReg(state, 0xA0, 0x85);
++      }
++      *ber = state->ber;
++      return 0;
++}
++
++static int m88dc2800_read_signal_strength(struct dvb_frontend *fe,
++                                        u16 * strength)
++{
++      struct m88dc2800_state *state = fe->demodulator_priv;
++      s16 tuner_strength;
++
++      tuner_strength = mt_fe_tn_get_signal_strength_tc2800(state);
++      *strength = tuner_strength < -107 ? 0 : tuner_strength + 107;
++
++      return 0;
++}
++
++static int m88dc2800_read_snr(struct dvb_frontend *fe, u16 * snr)
++{
++      static const u32 mes_log[] = {
++              0, 3010, 4771, 6021, 6990, 7781, 8451, 9031, 9542, 10000,
++              10414, 10792, 11139, 11461, 11761, 12041, 12304, 12553, 12788,
++              13010, 13222, 13424, 13617, 13802, 13979, 14150, 14314, 14472,
++              14624, 14771, 14914, 15052, 15185, 15315, 15441, 15563, 15682,
++              15798, 15911, 16021, 16128, 16232, 16335, 16435, 16532, 16628,
++              16721, 16812, 16902, 16990, 17076, 17160, 17243, 17324, 17404,
++              17482, 17559, 17634, 17709, 17782, 17853, 17924, 17993, 18062,
++              18129, 18195, 18261, 18325, 18388, 18451, 18513, 18573, 18633,
++              18692, 18751, 18808, 18865, 18921, 18976, 19031
++      };
++      struct m88dc2800_state *state = fe->demodulator_priv;
++      u8 i;
++      u32 _snr, mse;
++
++      if ((ReadReg(state, 0x91) & 0x23) != 0x03) {
++              *snr = 0;
++              return 0;
++      }
++      mse = 0;
++      for (i = 0; i < 30; i++) {
++              mse += (ReadReg(state, 0x08) << 8) + ReadReg(state, 0x07);
++      }
++      mse /= 30;
++      if (mse > 80)
++              mse = 80;
++      switch (state->qam) {
++      case 16:
++              _snr = 34080;
++              break;          /*      16QAM                           */
++      case 32:
++              _snr = 37600;
++              break;          /*      32QAM                           */
++      case 64:
++              _snr = 40310;
++              break;          /*      64QAM                           */
++      case 128:
++              _snr = 43720;
++              break;          /*      128QAM                          */
++      case 256:
++              _snr = 46390;
++              break;          /*      256QAM                          */
++      default:
++              _snr = 40310;
++              break;
++      }
++      _snr -= mes_log[mse - 1];       /*      C - 10*log10(MSE)       */
++      _snr /= 1000;
++      if (_snr > 0xff)
++              _snr = 0xff;
++      *snr = _snr;
++      return 0;
++}
++
++static int m88dc2800_read_ucblocks(struct dvb_frontend *fe, u32 * ucblocks)
++{
++      struct m88dc2800_state *state = fe->demodulator_priv;
++      u8 u8Value;
++
++      u8Value = ReadReg(state, 0xdf);
++      u8Value |= 0x02;        /* Hold */
++      WriteReg(state, 0xdf, u8Value);
++
++      *ucblocks = ReadReg(state, 0xd5);
++      *ucblocks = (*ucblocks << 8) | ReadReg(state, 0xd4);
++
++      u8Value &= 0xfe;        /* Clear */
++      WriteReg(state, 0xdf, u8Value);
++      u8Value &= 0xfc;        /* Update */
++      u8Value |= 0x01;
++      WriteReg(state, 0xdf, u8Value);
++
++      return 0;
++}
++
++static int m88dc2800_sleep(struct dvb_frontend *fe)
++{
++      struct m88dc2800_state *state = fe->demodulator_priv;
++
++      mt_fe_tn_sleep_tc2800(state);
++      state->freq = 0;
++
++      return 0;
++}
++
++static void m88dc2800_release(struct dvb_frontend *fe)
++{
++      struct m88dc2800_state *state = fe->demodulator_priv;
++      kfree(state);
++}
++
++static struct dvb_frontend_ops m88dc2800_ops;
++
++struct dvb_frontend *m88dc2800_attach(const struct m88dc2800_config
++                                    *config, struct i2c_adapter *i2c)
++{
++      struct m88dc2800_state *state = NULL;
++
++      /* allocate memory for the internal state */
++      state = kzalloc(sizeof(struct m88dc2800_state), GFP_KERNEL);
++      if (state == NULL)
++              goto error;
++
++      /* setup the state */
++      state->config = config;
++      state->i2c = i2c;
++      state->xtal = 28800;
++
++      WriteReg(state, 0x80, 0x01);
++      M88DC2000RegInitial_TC2800(state);
++      M88DC2000SetTsType(state, state->config->ts_mode);
++      mt_fe_tn_init_tc2800(state);
++
++      /* create dvb_frontend */
++      memcpy(&state->frontend.ops, &m88dc2800_ops,
++             sizeof(struct dvb_frontend_ops));
++      state->frontend.demodulator_priv = state;
++      return &state->frontend;
++
++      error:
++      kfree(state);
++      return NULL;
++}
++
++EXPORT_SYMBOL(m88dc2800_attach);
++
++static struct dvb_frontend_ops m88dc2800_ops = {
++      .delsys = {SYS_DVBC_ANNEX_A, SYS_DVBC_ANNEX_C},
++      .info = {
++               .name = "Montage M88DC2800 DVB-C",
++               .frequency_stepsize = 62500,
++               .frequency_min = 48000000,
++               .frequency_max = 870000000,
++               .symbol_rate_min = 870000,
++               .symbol_rate_max = 9000000,
++               .caps = FE_CAN_QAM_16 | FE_CAN_QAM_32 | FE_CAN_QAM_64 |
++                       FE_CAN_QAM_128 | FE_CAN_QAM_256 | FE_CAN_FEC_AUTO
++      },
++      .release = m88dc2800_release,
++      .init = m88dc2800_init,
++      .sleep = m88dc2800_sleep,
++      .set_frontend = m88dc2800_set_parameters,
++      .read_status = m88dc2800_read_status,
++      .read_ber = m88dc2800_read_ber,
++      .read_signal_strength = m88dc2800_read_signal_strength,
++      .read_snr = m88dc2800_read_snr,
++      .read_ucblocks = m88dc2800_read_ucblocks,
++};
++
++MODULE_DESCRIPTION("Montage DVB-C demodulator driver");
++MODULE_AUTHOR("Max Nibble <nibble.max@gmail.com>");
++MODULE_LICENSE("GPL");
++MODULE_VERSION("1.00");
+diff -urN a/drivers/media/dvb-frontends/m88dc2800.h b/drivers/media/dvb-frontends/m88dc2800.h
+--- a/drivers/media/dvb-frontends/m88dc2800.h  1970-01-01 08:00:00.000000000 +0800
++++ b/drivers/media/dvb-frontends/m88dc2800.h  2013-01-26 14:57:32.000000000 +0800
+@@ -0,0 +1,43 @@
++/*
++    M88DC2800/M88TC2800  - DVB-C demodulator and tuner from Montage
++
++    Copyright (C) 2012 Max Nibble <nibble.max@gmail.com>
++    Copyright (C) 2011 Montage Technology - www.montage-tech.com
++
++    This program is free software; you can redistribute it and/or modify
++    it under the terms of the GNU General Public License as published by
++    the Free Software Foundation; either version 2 of the License, or
++    (at your option) any later version.
++
++    This program is distributed in the hope that it will be useful,
++    but WITHOUT ANY WARRANTY; without even the implied warranty of
++    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++    GNU General Public License for more details.
++
++    You should have received a copy of the GNU General Public License
++    along with this program; if not, write to the Free Software
++    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++*/
++
++#ifndef M88DC2800_H
++#define M88DC2800_H
++
++#include <linux/dvb/frontend.h>
++
++struct m88dc2800_config {
++      u8 demod_address;
++      u8 ts_mode;
++};
++
++#if defined(CONFIG_DVB_M88DC2800) || (defined(CONFIG_DVB_M88DC2800_MODULE) && defined(MODULE))
++extern struct dvb_frontend* m88dc2800_attach(const struct m88dc2800_config* config,
++                                          struct i2c_adapter* i2c);
++#else
++static inline struct dvb_frontend* m88dc2800_attach(const struct m88dc2800_config* config,
++                                          struct i2c_adapter* i2c)
++{
++      printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
++      return NULL;
++}
++#endif /* CONFIG_DVB_M88DC2800 */
++#endif /* M88DC2800_H */
+diff -urN a/drivers/media/dvb-frontends/m88ds3103.c b/drivers/media/dvb-frontends/m88ds3103.c
+--- a/drivers/media/dvb-frontends/m88ds3103.c  1970-01-01 08:00:00.000000000 +0800
++++ b/drivers/media/dvb-frontends/m88ds3103.c  2013-01-30 12:33:47.000000000 +0800
+@@ -0,0 +1,1710 @@
++/*
++    Montage Technology M88DS3103/M88TS2022 - DVBS/S2 Satellite demod/tuner driver
++
++    Copyright (C) 2011 Max nibble<nibble.max@gmail.com>
++    Copyright (C) 2010 Montage Technology<www.montage-tech.com>
++    Copyright (C) 2009 Konstantin Dimitrov.
++
++    This program is free software; you can redistribute it and/or modify
++    it under the terms of the GNU General Public License as published by
++    the Free Software Foundation; either version 2 of the License, or
++    (at your option) any later version.
++
++    This program is distributed in the hope that it will be useful,
++    but WITHOUT ANY WARRANTY; without even the implied warranty of
++    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++    GNU General Public License for more details.
++
++    You should have received a copy of the GNU General Public License
++    along with this program; if not, write to the Free Software
++    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++ */
++
++#include <linux/slab.h>
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/init.h>
++#include <linux/firmware.h>
++
++#include "dvb_frontend.h"
++#include "m88ds3103.h"
++#include "m88ds3103_priv.h"
++
++static int debug;
++module_param(debug, int, 0644);
++MODULE_PARM_DESC(debug, "Activates frontend debugging (default:0)");
++
++#define dprintk(args...) \
++      do { \
++              if (debug) \
++                      printk(KERN_INFO "m88ds3103: " args); \
++      } while (0)
++
++/*demod register operations.*/
++static int m88ds3103_writereg(struct m88ds3103_state *state, int reg, int data)
++{
++      u8 buf[] = { reg, data };
++      struct i2c_msg msg = { .addr = state->config->demod_address,
++              .flags = 0, .buf = buf, .len = 2 };
++      int err;
++
++      if (debug > 1)
++              printk("m88ds3103: %s: write reg 0x%02x, value 0x%02x\n",
++                      __func__, reg, data);
++
++      err = i2c_transfer(state->i2c, &msg, 1);
++      if (err != 1) {
++              printk(KERN_ERR "%s: writereg error(err == %i, reg == 0x%02x,"
++                       " value == 0x%02x)\n", __func__, err, reg, data);
++              return -EREMOTEIO;
++      }
++      return 0;
++}
++
++static int m88ds3103_readreg(struct m88ds3103_state *state, u8 reg)
++{
++      int ret;
++      u8 b0[] = { reg };
++      u8 b1[] = { 0 };
++      struct i2c_msg msg[] = {
++              { .addr = state->config->demod_address, .flags = 0,
++                      .buf = b0, .len = 1 },
++              { .addr = state->config->demod_address, .flags = I2C_M_RD,
++                      .buf = b1, .len = 1 }
++      };
++      ret = i2c_transfer(state->i2c, msg, 2);
++
++      if (ret != 2) {
++              printk(KERN_ERR "%s: reg=0x%x (error=%d)\n",
++                      __func__, reg, ret);
++              return ret;
++      }
++
++      if (debug > 1)
++              printk(KERN_INFO "m88ds3103: read reg 0x%02x, value 0x%02x\n",
++                      reg, b1[0]);
++
++      return b1[0];
++}
++
++/*tuner register operations.*/
++static int m88ds3103_tuner_writereg(struct m88ds3103_state *state, int reg, int data)
++{
++      u8 buf[] = { reg, data };
++      struct i2c_msg msg = { .addr = 0x60,
++              .flags = 0, .buf = buf, .len = 2 };
++      int err;
++
++      m88ds3103_writereg(state, 0x03, 0x11);
++      err = i2c_transfer(state->i2c, &msg, 1);
++      
++      if (err != 1) {
++              printk("%s: writereg error(err == %i, reg == 0x%02x,"
++                       " value == 0x%02x)\n", __func__, err, reg, data);
++              return -EREMOTEIO;
++      }
++
++      return 0;
++}
++
++static int m88ds3103_tuner_readreg(struct m88ds3103_state *state, u8 reg)
++{
++      int ret;
++      u8 b0[] = { reg };
++      u8 b1[] = { 0 };
++      struct i2c_msg msg[] = {
++              { .addr = 0x60, .flags = 0,
++                      .buf = b0, .len = 1 },
++              { .addr = 0x60, .flags = I2C_M_RD,
++                      .buf = b1, .len = 1 }
++      };
++
++      m88ds3103_writereg(state, 0x03, 0x11);  
++      ret = i2c_transfer(state->i2c, msg, 2);
++
++      if (ret != 2) {
++              printk(KERN_ERR "%s: reg=0x%x(error=%d)\n", __func__, reg, ret);
++              return ret;
++      }
++
++      return b1[0];
++}
++
++/* Bulk demod I2C write, for firmware download. */
++static int m88ds3103_writeregN(struct m88ds3103_state *state, int reg,
++                              const u8 *data, u16 len)
++{
++      int ret = -EREMOTEIO;
++      struct i2c_msg msg;
++      u8 *buf;
++
++      buf = kmalloc(len + 1, GFP_KERNEL);
++      if (buf == NULL) {
++              printk("Unable to kmalloc\n");
++              ret = -ENOMEM;
++              goto error;
++      }
++
++      *(buf) = reg;
++      memcpy(buf + 1, data, len);
++
++      msg.addr = state->config->demod_address;
++      msg.flags = 0;
++      msg.buf = buf;
++      msg.len = len + 1;
++
++      if (debug > 1)
++              printk(KERN_INFO "m88ds3103: %s:  write regN 0x%02x, len = %d\n",
++                      __func__, reg, len);
++
++      ret = i2c_transfer(state->i2c, &msg, 1);
++      if (ret != 1) {
++              printk(KERN_ERR "%s: writereg error(err == %i, reg == 0x%02x\n",
++                       __func__, ret, reg);
++              ret = -EREMOTEIO;
++      }
++      
++error:
++      kfree(buf);
++
++      return ret;
++}
++
++static int m88ds3103_load_firmware(struct dvb_frontend *fe)
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++      const struct firmware *fw;
++      int i, ret = 0;
++
++      dprintk("%s()\n", __func__);
++              
++      if (state->skip_fw_load)
++              return 0;
++      /* Load firmware */
++      /* request the firmware, this will block until someone uploads it */    
++      if(state->demod_id == DS3000_ID){
++              printk(KERN_INFO "%s: Waiting for firmware upload (%s)...\n", __func__,
++                              DS3000_DEFAULT_FIRMWARE);               
++              ret = request_firmware(&fw, DS3000_DEFAULT_FIRMWARE,
++                                      state->i2c->dev.parent);
++      }else if(state->demod_id == DS3103_ID){
++              printk(KERN_INFO "%s: Waiting for firmware upload (%s)...\n", __func__,
++                              DS3103_DEFAULT_FIRMWARE);
++              ret = request_firmware(&fw, DS3103_DEFAULT_FIRMWARE,
++                                      state->i2c->dev.parent);
++      }
++      
++      printk(KERN_INFO "%s: Waiting for firmware upload(2)...\n", __func__);
++      if (ret) {
++              printk(KERN_ERR "%s: No firmware uploaded (timeout or file not "
++                              "found?)\n", __func__);
++              return ret;
++      }
++
++      /* Make sure we don't recurse back through here during loading */
++      state->skip_fw_load = 1;
++
++      dprintk("Firmware is %zu bytes (%02x %02x .. %02x %02x)\n",
++                      fw->size,
++                      fw->data[0],
++                      fw->data[1],
++                      fw->data[fw->size - 2],
++                      fw->data[fw->size - 1]);
++                      
++      /* stop internal mcu. */
++      m88ds3103_writereg(state, 0xb2, 0x01);
++      /* split firmware to download.*/
++      for(i = 0; i < FW_DOWN_LOOP; i++){
++              ret = m88ds3103_writeregN(state, 0xb0, &(fw->data[FW_DOWN_SIZE*i]), FW_DOWN_SIZE);
++              if(ret != 1) break;             
++      }
++      /* start internal mcu. */
++      if(ret == 1)
++              m88ds3103_writereg(state, 0xb2, 0x00);
++              
++      release_firmware(fw);
++
++      dprintk("%s: Firmware upload %s\n", __func__,
++                      ret == 1 ? "complete" : "failed");
++
++      if(ret == 1) ret = 0;
++      
++      /* Ensure firmware is always loaded if required */
++      state->skip_fw_load = 0;
++
++      return ret;
++}
++
++
++static int m88ds3103_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage)
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++      u8 data;
++
++      dprintk("%s(%d)\n", __func__, voltage);
++
++      dprintk("m88ds3103:pin_ctrl = (%02x)\n", state->config->pin_ctrl);
++      
++      if(state->config->set_voltage)
++              state->config->set_voltage(fe, voltage);
++      
++      data = m88ds3103_readreg(state, 0xa2);
++      
++        if(state->config->pin_ctrl & 0x80){ /*If control pin is assigned.*/
++              data &= ~0x03; /* bit0 V/H, bit1 off/on */
++              if(state->config->pin_ctrl & 0x02)
++                   data |= 0x02;
++
++              switch (voltage) {
++              case SEC_VOLTAGE_18:
++                   if((state->config->pin_ctrl & 0x01) == 0)
++                        data |= 0x01;
++                   break;
++              case SEC_VOLTAGE_13:
++                   if(state->config->pin_ctrl & 0x01)
++                        data |= 0x01;
++                   break;
++              case SEC_VOLTAGE_OFF:
++                   if(state->config->pin_ctrl & 0x02)
++                         data &= ~0x02;                       
++                   else
++                         data |= 0x02;
++                   break;
++               }
++        }
++
++      m88ds3103_writereg(state, 0xa2, data);
++
++      return 0;
++}
++
++static int m88ds3103_read_status(struct dvb_frontend *fe, fe_status_t* status)
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++      int lock = 0;
++      
++      *status = 0;
++      
++      switch (state->delivery_system){
++      case SYS_DVBS:
++              lock = m88ds3103_readreg(state, 0xd1);
++              dprintk("%s: SYS_DVBS status=%x.\n", __func__, lock);
++              
++              if ((lock & 0x07) == 0x07){
++                      /*if((m88ds3103_readreg(state, 0x0d) & 0x07) == 0x07)*/
++                              *status = FE_HAS_SIGNAL | FE_HAS_CARRIER 
++                                      | FE_HAS_VITERBI | FE_HAS_SYNC | FE_HAS_LOCK;
++                      
++              }
++              break;
++      case SYS_DVBS2:
++              lock = m88ds3103_readreg(state, 0x0d);
++              dprintk("%s: SYS_DVBS2 status=%x.\n", __func__, lock);
++
++              if ((lock & 0x8f) == 0x8f)
++                      *status = FE_HAS_SIGNAL | FE_HAS_CARRIER 
++                              | FE_HAS_VITERBI | FE_HAS_SYNC | FE_HAS_LOCK;
++                      
++              break;
++      default:
++              break;
++      }
++
++      return 0;
++}
++
++static int m88ds3103_read_ber(struct dvb_frontend *fe, u32* ber)
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++      u8 tmp1, tmp2, tmp3;
++      u32 ldpc_frame_cnt, pre_err_packags, code_rate_fac = 0;
++
++      dprintk("%s()\n", __func__);
++
++      switch (state->delivery_system) {
++      case SYS_DVBS:
++              m88ds3103_writereg(state, 0xf9, 0x04);
++              tmp3 = m88ds3103_readreg(state, 0xf8);
++              if ((tmp3&0x10) == 0){
++                      tmp1 = m88ds3103_readreg(state, 0xf7);
++                      tmp2 = m88ds3103_readreg(state, 0xf6);
++                      tmp3 |= 0x10;
++                      m88ds3103_writereg(state, 0xf8, tmp3);
++                      state->preBer = (tmp1<<8) | tmp2;
++              }
++              break;
++      case SYS_DVBS2:
++              tmp1 = m88ds3103_readreg(state, 0x7e) & 0x0f;
++              switch(tmp1){
++              case 0: code_rate_fac = 16008 - 80; break;
++              case 1: code_rate_fac = 21408 - 80; break;
++              case 2: code_rate_fac = 25728 - 80; break;
++              case 3: code_rate_fac = 32208 - 80; break;
++              case 4: code_rate_fac = 38688 - 80; break;
++              case 5: code_rate_fac = 43040 - 80; break;
++              case 6: code_rate_fac = 48408 - 80; break;
++              case 7: code_rate_fac = 51648 - 80; break;
++              case 8: code_rate_fac = 53840 - 80; break;
++              case 9: code_rate_fac = 57472 - 80; break;
++              case 10: code_rate_fac = 58192 - 80; break;
++              }
++              
++              tmp1 = m88ds3103_readreg(state, 0xd7) & 0xff;
++              tmp2 = m88ds3103_readreg(state, 0xd6) & 0xff;
++              tmp3 = m88ds3103_readreg(state, 0xd5) & 0xff;           
++              ldpc_frame_cnt = (tmp1 << 16) | (tmp2 << 8) | tmp3;
++
++              tmp1 = m88ds3103_readreg(state, 0xf8) & 0xff;
++              tmp2 = m88ds3103_readreg(state, 0xf7) & 0xff;
++              pre_err_packags = tmp1<<8 | tmp2;
++              
++              if (ldpc_frame_cnt > 1000){
++                      m88ds3103_writereg(state, 0xd1, 0x01);
++                      m88ds3103_writereg(state, 0xf9, 0x01);
++                      m88ds3103_writereg(state, 0xf9, 0x00);
++                      m88ds3103_writereg(state, 0xd1, 0x00);
++                      state->preBer = pre_err_packags;
++              }                               
++              break;
++      default:
++              break;
++      }
++      *ber = state->preBer;
++      
++      return 0;
++}
++
++static int m88ds3103_read_signal_strength(struct dvb_frontend *fe,
++                                              u16 *signal_strength)
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++      u16 gain;
++      u8 gain1, gain2, gain3 = 0;
++
++      dprintk("%s()\n", __func__);
++
++      gain1 = m88ds3103_tuner_readreg(state, 0x3d) & 0x1f;
++      dprintk("%s: gain1 = 0x%02x \n", __func__, gain1);
++      
++      if (gain1 > 15) gain1 = 15;
++      gain2 = m88ds3103_tuner_readreg(state, 0x21) & 0x1f;
++      dprintk("%s: gain2 = 0x%02x \n", __func__, gain2);
++      
++      if(state->tuner_id == TS2022_ID){
++              gain3 = (m88ds3103_tuner_readreg(state, 0x66)>>3) & 0x07;
++              dprintk("%s: gain3 = 0x%02x \n", __func__, gain3);
++              
++              if (gain2 > 16) gain2 = 16;
++              if (gain2 < 2) gain2 = 2;                       
++              if (gain3 > 6) gain3 = 6;
++      }else{
++              if (gain2 > 13) gain2 = 13;
++              gain3 = 0;
++      }
++
++      gain = gain1*23 + gain2*35 + gain3*29;
++      *signal_strength = 60000 - gain*55;
++
++      return 0;
++}
++
++
++static int m88ds3103_read_snr(struct dvb_frontend *fe, u16 *p_snr)
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++      u8 val, npow1, npow2, spow1, cnt;
++      u16 tmp, snr;
++      u32 npow, spow, snr_total;      
++      static const u16 mes_log10[] ={
++              0,      3010,   4771,   6021,   6990,   7781,   8451,   9031,   9542,   10000,
++              10414,  10792,  11139,  11461,  11761,  12041,  12304,  12553,  12788,  13010,
++              13222,  13424,  13617,  13802,  13979,  14150,  14314,  14472,  14624,  14771,
++              14914,  15052,  15185,  15315,  15441,  15563,  15682,  15798,  15911,  16021,
++              16128,  16232,  16335,  16435,  16532,  16628,  16721,  16812,  16902,  16990,
++              17076,  17160,  17243,  17324,  17404,  17482,  17559,  17634,  17709,  17782,
++              17853,  17924,  17993,  18062,  18129,  18195,  18261,  18325,  18388,  18451,
++              18513,  18573,  18633,  18692,  18751,  18808,  18865,  18921,  18976,  19031
++      };
++      static const u16 mes_loge[] ={
++              0,      6931,   10986,  13863,  16094,  17918,  19459,  20794,  21972,  23026,
++              23979,  24849,  25649,  26391,  27081,  27726,  28332,  28904,  29444,  29957,
++              30445,  30910,  31355,  31781,  32189,  32581,  32958,  33322,  33673,  34012,
++              34340,  34657,
++      };
++
++      dprintk("%s()\n", __func__);
++
++      snr = 0;
++      
++      switch (state->delivery_system){
++      case SYS_DVBS:
++              cnt = 10; snr_total = 0;
++              while(cnt > 0){
++                      val = m88ds3103_readreg(state, 0xff);
++                      snr_total += val;
++                      cnt--;
++              }
++              tmp = (u16)(snr_total/80);
++              if(tmp > 0){
++                      if (tmp > 32) tmp = 32;
++                      snr = (mes_loge[tmp - 1] * 100) / 45;
++              }else{
++                      snr = 0;
++              }
++              break;
++      case SYS_DVBS2:
++              cnt  = 10; npow = 0; spow = 0;
++              while(cnt >0){
++                      npow1 = m88ds3103_readreg(state, 0x8c) & 0xff;
++                      npow2 = m88ds3103_readreg(state, 0x8d) & 0xff;
++                      npow += (((npow1 & 0x3f) + (u16)(npow2 << 6)) >> 2);
++
++                      spow1 = m88ds3103_readreg(state, 0x8e) & 0xff;
++                      spow += ((spow1 * spow1) >> 1);
++                      cnt--;
++              }
++              npow /= 10; spow /= 10;
++              if(spow == 0){
++                      snr = 0;
++              }else if(npow == 0){
++                      snr = 19;
++              }else{
++                      if(spow > npow){
++                              tmp = (u16)(spow / npow);
++                              if (tmp > 80) tmp = 80;
++                              snr = mes_log10[tmp - 1]*3;
++                      }else{
++                              tmp = (u16)(npow / spow);
++                              if (tmp > 80) tmp = 80;
++                              snr = -(mes_log10[tmp - 1] / 1000);
++                      }
++              }                       
++              break;
++      default:
++              break;
++      }
++      *p_snr = snr;
++
++      return 0;
++}
++
++
++static int m88ds3103_read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks)
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++      u8 tmp1, tmp2, tmp3, data;
++
++      dprintk("%s()\n", __func__);
++
++      switch (state->delivery_system) {
++      case SYS_DVBS:
++              data = m88ds3103_readreg(state, 0xf8);
++              data |= 0x40;
++              m88ds3103_writereg(state, 0xf8, data);          
++              tmp1 = m88ds3103_readreg(state, 0xf5);
++              tmp2 = m88ds3103_readreg(state, 0xf4);
++              *ucblocks = (tmp1 <<8) | tmp2;          
++              data &= ~0x20;
++              m88ds3103_writereg(state, 0xf8, data);
++              data |= 0x20;
++              m88ds3103_writereg(state, 0xf8, data);
++              data &= ~0x40;
++              m88ds3103_writereg(state, 0xf8, data);
++              break;
++      case SYS_DVBS2:
++              tmp1 = m88ds3103_readreg(state, 0xda);
++              tmp2 = m88ds3103_readreg(state, 0xd9);
++              tmp3 = m88ds3103_readreg(state, 0xd8);
++              *ucblocks = (tmp1 <<16)|(tmp2 <<8)|tmp3;
++              data = m88ds3103_readreg(state, 0xd1);
++              data |= 0x01;
++              m88ds3103_writereg(state, 0xd1, data);
++              data &= ~0x01;
++              m88ds3103_writereg(state, 0xd1, data);
++              break;
++      default:
++              break;
++      }
++      return 0;
++}
++
++static int m88ds3103_set_tone(struct dvb_frontend *fe, fe_sec_tone_mode_t tone)
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++      u8 data_a1, data_a2;
++
++      dprintk("%s(%d)\n", __func__, tone);
++      if ((tone != SEC_TONE_ON) && (tone != SEC_TONE_OFF)) {
++              printk(KERN_ERR "%s: Invalid, tone=%d\n", __func__, tone);
++              return -EINVAL;
++      }
++
++      data_a1 = m88ds3103_readreg(state, 0xa1);
++      data_a2 = m88ds3103_readreg(state, 0xa2);
++      if(state->demod_id == DS3103_ID)
++              data_a2 &= 0xdf; /* Normal mode */
++      switch (tone) {
++      case SEC_TONE_ON:
++              dprintk("%s: SEC_TONE_ON\n", __func__);
++              data_a1 |= 0x04;
++              data_a1 &= ~0x03;
++              data_a1 &= ~0x40;
++              data_a2 &= ~0xc0;
++              break;
++      case SEC_TONE_OFF:
++              dprintk("%s: SEC_TONE_OFF\n", __func__);
++              data_a2 &= ~0xc0;
++              data_a2 |= 0x80;
++              break;
++      }
++      m88ds3103_writereg(state, 0xa2, data_a2);
++      m88ds3103_writereg(state, 0xa1, data_a1);
++      return 0;
++}
++
++static int m88ds3103_send_diseqc_msg(struct dvb_frontend *fe,
++                              struct dvb_diseqc_master_cmd *d)
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++      int i, ret = 0;
++      u8 tmp, time_out;
++
++      /* Dump DiSEqC message */
++      if (debug) {
++              printk(KERN_INFO "m88ds3103: %s(", __func__);
++              for (i = 0 ; i < d->msg_len ;) {
++                      printk(KERN_INFO "0x%02x", d->msg[i]);
++                      if (++i < d->msg_len)
++                              printk(KERN_INFO ", ");
++              }
++      }
++
++      tmp = m88ds3103_readreg(state, 0xa2);
++      tmp &= ~0xc0;
++      if(state->demod_id == DS3103_ID)
++              tmp &= ~0x20;
++      m88ds3103_writereg(state, 0xa2, tmp);
++      
++      for (i = 0; i < d->msg_len; i ++)
++              m88ds3103_writereg(state, (0xa3+i), d->msg[i]);
++
++      tmp = m88ds3103_readreg(state, 0xa1);   
++      tmp &= ~0x38;
++      tmp &= ~0x40;
++      tmp |= ((d->msg_len-1) << 3) | 0x07;
++      tmp &= ~0x80;
++      m88ds3103_writereg(state, 0xa1, tmp);
++      /*      1.5 * 9 * 8     = 108ms */
++      time_out = 150;
++      while (time_out > 0){
++              msleep(10);
++              time_out -= 10;
++              tmp = m88ds3103_readreg(state, 0xa1);           
++              if ((tmp & 0x40) == 0)
++                      break;
++      }
++      if (time_out == 0){
++              tmp = m88ds3103_readreg(state, 0xa1);
++              tmp &= ~0x80;
++              tmp |= 0x40;
++              m88ds3103_writereg(state, 0xa1, tmp);
++              ret = 1;
++      }
++      tmp = m88ds3103_readreg(state, 0xa2);
++      tmp &= ~0xc0;
++      tmp |= 0x80;
++      m88ds3103_writereg(state, 0xa2, tmp);   
++      return ret;
++}
++
++
++static int m88ds3103_diseqc_send_burst(struct dvb_frontend *fe,
++                                      fe_sec_mini_cmd_t burst)
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++      u8      val, time_out;
++      
++      dprintk("%s()\n", __func__);
++
++      val = m88ds3103_readreg(state, 0xa2);
++      val &= ~0xc0;
++      if(state->demod_id == DS3103_ID)
++              val &= 0xdf; /* Normal mode */
++      m88ds3103_writereg(state, 0xa2, val);
++      /* DiSEqC burst */
++      if (burst == SEC_MINI_B)
++              m88ds3103_writereg(state, 0xa1, 0x01);
++      else
++              m88ds3103_writereg(state, 0xa1, 0x02);
++
++      msleep(13);
++
++      time_out = 5;
++      do{
++              val = m88ds3103_readreg(state, 0xa1);
++              if ((val & 0x40) == 0)
++                      break;
++              msleep(1);
++              time_out --;
++      } while (time_out > 0);
++
++      val = m88ds3103_readreg(state, 0xa2);
++      val &= ~0xc0;
++      val |= 0x80;
++      m88ds3103_writereg(state, 0xa2, val);
++      
++      return 0;
++}
++
++static void m88ds3103_release(struct dvb_frontend *fe)
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++
++      dprintk("%s\n", __func__);
++      kfree(state);
++}
++
++static int m88ds3103_check_id(struct m88ds3103_state *state)
++{
++      int val_00, val_01;
++      
++      /*check demod id*/
++      val_01 = m88ds3103_readreg(state, 0x01);
++      printk(KERN_INFO "DS3000 chip version: %x attached.\n", val_01);
++                      
++      if(val_01 == 0xD0)
++              state->demod_id = DS3103_ID;
++      else if(val_01 == 0xC0)
++              state->demod_id = DS3000_ID;
++      else
++              state->demod_id = UNKNOW_ID;
++              
++      /*check tuner id*/
++      val_00 = m88ds3103_tuner_readreg(state, 0x00);
++      printk(KERN_INFO "TS202x chip version[1]: %x attached.\n", val_00);
++      val_00 &= 0x03;
++      if(val_00 == 0)
++      {
++              m88ds3103_tuner_writereg(state, 0x00, 0x01);
++              msleep(3);              
++      }
++      m88ds3103_tuner_writereg(state, 0x00, 0x03);
++      msleep(5);
++      
++      val_00 = m88ds3103_tuner_readreg(state, 0x00);
++      printk(KERN_INFO "TS202x chip version[2]: %x attached.\n", val_00);
++      val_00 &= 0xff;
++      if((val_00 == 0x01) || (val_00 == 0x41) || (val_00 == 0x81))
++              state->tuner_id = TS2020_ID;
++      else if(((val_00 & 0xc0)== 0xc0) || (val_00 == 0x83))
++              state->tuner_id = TS2022_ID;
++      else
++              state->tuner_id = UNKNOW_ID;
++                      
++      return state->demod_id; 
++}
++
++static struct dvb_frontend_ops m88ds3103_ops;
++static int m88ds3103_initilaze(struct dvb_frontend *fe);
++
++struct dvb_frontend *m88ds3103_attach(const struct m88ds3103_config *config,
++                                  struct i2c_adapter *i2c)
++{
++      struct m88ds3103_state *state = NULL;
++
++      dprintk("%s\n", __func__);
++
++      /* allocate memory for the internal state */
++      state = kzalloc(sizeof(struct m88ds3103_state), GFP_KERNEL);
++      if (state == NULL) {
++              printk(KERN_ERR "Unable to kmalloc\n");
++              goto error2;
++      }
++
++      state->config = config;
++      state->i2c = i2c;
++      state->preBer = 0xffff;
++      state->delivery_system = SYS_DVBS; /*Default to DVB-S.*/
++      
++      /* check demod id */
++      if(m88ds3103_check_id(state) == UNKNOW_ID){
++              printk(KERN_ERR "Unable to find Montage chip\n");
++              goto error3;
++      }
++
++      memcpy(&state->frontend.ops, &m88ds3103_ops,
++                      sizeof(struct dvb_frontend_ops));
++      state->frontend.demodulator_priv = state;
++      
++      m88ds3103_initilaze(&state->frontend);
++      
++      return &state->frontend;
++
++error3:
++      kfree(state);
++error2:
++      return NULL;
++}
++EXPORT_SYMBOL(m88ds3103_attach);
++
++static int m88ds3103_set_carrier_offset(struct dvb_frontend *fe,
++                                      s32 carrier_offset_khz)
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++      s32 tmp;
++
++      tmp = carrier_offset_khz;
++      tmp *= 65536;
++      
++      tmp = (2*tmp + MT_FE_MCLK_KHZ) / (2*MT_FE_MCLK_KHZ);
++
++      if (tmp < 0)
++              tmp += 65536;
++
++      m88ds3103_writereg(state, 0x5f, tmp >> 8);
++      m88ds3103_writereg(state, 0x5e, tmp & 0xff);
++
++      return 0;
++}
++
++static int m88ds3103_set_symrate(struct dvb_frontend *fe)
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++      struct dtv_frontend_properties *c = &fe->dtv_property_cache;
++      u16 value;
++      
++      value = (((c->symbol_rate / 1000) << 15) + (MT_FE_MCLK_KHZ / 4)) / (MT_FE_MCLK_KHZ / 2);
++      m88ds3103_writereg(state, 0x61, value & 0x00ff);
++      m88ds3103_writereg(state, 0x62, (value & 0xff00) >> 8);
++
++      return 0;
++}
++
++static int m88ds3103_set_CCI(struct dvb_frontend *fe)
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++      u8 tmp;
++
++      tmp = m88ds3103_readreg(state, 0x56);
++      tmp &= ~0x01;
++      m88ds3103_writereg(state, 0x56, tmp);
++
++      tmp = m88ds3103_readreg(state, 0x76);
++      tmp &= ~0x80;
++      m88ds3103_writereg(state, 0x76, tmp);
++
++      return 0;
++}
++
++static int m88ds3103_init_reg(struct m88ds3103_state *state, const u8 *p_reg_tab, u32 size)
++{
++      u32 i;
++      
++      for(i = 0; i < size; i+=2)
++              m88ds3103_writereg(state, p_reg_tab[i], p_reg_tab[i+1]);
++              
++      return 0;
++}
++
++static int m88ds3103_get_locked_sym_rate(struct m88ds3103_state *state, u32 *sym_rate_KSs)
++{
++      u16     tmp;
++      u32     sym_rate_tmp;
++      u8      val_0x6d, val_0x6e;
++
++      val_0x6d = m88ds3103_readreg(state, 0x6d);
++      val_0x6e = m88ds3103_readreg(state, 0x6e);
++
++      tmp = (u16)((val_0x6e<<8) | val_0x6d);
++
++      sym_rate_tmp = (u32)(tmp * MT_FE_MCLK_KHZ);
++      sym_rate_tmp = (u32)(sym_rate_tmp / (1<<16));
++      *sym_rate_KSs = sym_rate_tmp;
++
++      return 0;
++}
++
++static int m88ds3103_get_channel_info(struct m88ds3103_state *state, u8 *p_mode, u8 *p_coderate)
++{
++      u8      tmp, val_0x7E;
++
++      if(state->delivery_system == SYS_DVBS2){
++              val_0x7E = m88ds3103_readreg(state, 0x7e);
++              tmp = (u8)((val_0x7E&0xC0) >> 6);
++              *p_mode = tmp;
++              tmp = (u8)(val_0x7E & 0x0f);
++              *p_coderate = tmp;
++      } else {
++              *p_mode = 0;
++              tmp = m88ds3103_readreg(state, 0xe6);           
++              tmp = (u8)(tmp >> 5);
++              *p_coderate = tmp;
++      }
++      
++      return 0;
++}
++
++static int m88ds3103_set_clock_ratio(struct m88ds3103_state *state)
++{
++      u8      val, mod_fac, tmp1, tmp2;
++      u32     input_datarate, locked_sym_rate_KSs;
++      u32 MClk_KHz = 96000;
++      u8 mod_mode, code_rate, divid_ratio = 0;
++
++      locked_sym_rate_KSs = 0;
++      m88ds3103_get_locked_sym_rate(state, &locked_sym_rate_KSs);
++      if(locked_sym_rate_KSs == 0)
++              return 0;
++
++      m88ds3103_get_channel_info(state, &mod_mode, &code_rate);
++
++      if (state->delivery_system == SYS_DVBS2)
++      {
++              switch(mod_mode) {
++                      case 1: mod_fac = 3; break;
++                      case 2: mod_fac = 4; break;
++                      case 3: mod_fac = 5; break;
++                      default: mod_fac = 2; break;
++              }
++
++              switch(code_rate) {
++                      case 0: input_datarate = locked_sym_rate_KSs*mod_fac/8/4; break;
++                      case 1: input_datarate = locked_sym_rate_KSs*mod_fac/8/3;       break;
++                      case 2: input_datarate = locked_sym_rate_KSs*mod_fac*2/8/5;     break;
++                      case 3: input_datarate = locked_sym_rate_KSs*mod_fac/8/2;       break;
++                      case 4: input_datarate = locked_sym_rate_KSs*mod_fac*3/8/5;     break;
++                      case 5: input_datarate = locked_sym_rate_KSs*mod_fac*2/8/3;     break;
++                      case 6: input_datarate = locked_sym_rate_KSs*mod_fac*3/8/4;     break;
++                      case 7: input_datarate = locked_sym_rate_KSs*mod_fac*4/8/5;     break;
++                      case 8: input_datarate = locked_sym_rate_KSs*mod_fac*5/8/6;     break;
++                      case 9: input_datarate = locked_sym_rate_KSs*mod_fac*8/8/9;     break;
++                      case 10: input_datarate = locked_sym_rate_KSs*mod_fac*9/8/10; break;
++                      default: input_datarate = locked_sym_rate_KSs*mod_fac*2/8/3; break;
++              }
++
++              if(state->demod_id == DS3000_ID)
++                      input_datarate = input_datarate * 115 / 100;
++
++              if(input_datarate < 4800)  {tmp1 = 15;tmp2 = 15;} //4.8MHz         TS clock
++              else if(input_datarate < 4966)  {tmp1 = 14;tmp2 = 15;} //4.966MHz  TS clock
++              else if(input_datarate < 5143)  {tmp1 = 14;tmp2 = 14;} //5.143MHz  TS clock
++              else if(input_datarate < 5333)  {tmp1 = 13;tmp2 = 14;} //5.333MHz  TS clock
++              else if(input_datarate < 5538)  {tmp1 = 13;tmp2 = 13;} //5.538MHz  TS clock
++              else if(input_datarate < 5760)  {tmp1 = 12;tmp2 = 13;} //5.76MHz   TS clock       allan 0809
++              else if(input_datarate < 6000)  {tmp1 = 12;tmp2 = 12;} //6MHz      TS clock
++              else if(input_datarate < 6260)  {tmp1 = 11;tmp2 = 12;} //6.26MHz   TS clock
++              else if(input_datarate < 6545)  {tmp1 = 11;tmp2 = 11;} //6.545MHz  TS clock
++              else if(input_datarate < 6857)  {tmp1 = 10;tmp2 = 11;} //6.857MHz  TS clock
++              else if(input_datarate < 7200)  {tmp1 = 10;tmp2 = 10;} //7.2MHz    TS clock
++              else if(input_datarate < 7578)  {tmp1 = 9;tmp2 = 10;}  //7.578MHz  TS clock
++              else if(input_datarate < 8000)  {tmp1 = 9;tmp2 = 9;}   //8MHz      TS clock
++              else if(input_datarate < 8470)  {tmp1 = 8;tmp2 = 9;}   //8.47MHz   TS clock
++              else if(input_datarate < 9000)  {tmp1 = 8;tmp2 = 8;}   //9MHz      TS clock
++              else if(input_datarate < 9600)  {tmp1 = 7;tmp2 = 8;}   //9.6MHz    TS clock
++              else if(input_datarate < 10285) {tmp1 = 7;tmp2 = 7;}   //10.285MHz TS clock
++              else if(input_datarate < 12000) {tmp1 = 6;tmp2 = 6;}   //12MHz     TS clock
++              else if(input_datarate < 14400) {tmp1 = 5;tmp2 = 5;}   //14.4MHz   TS clock
++              else if(input_datarate < 18000) {tmp1 = 4;tmp2 = 4;}   //18MHz     TS clock
++              else                                                    {tmp1 = 3;tmp2 = 3;}   //24MHz     TS clock
++
++              if(state->demod_id == DS3000_ID) {
++                      val = (u8)((tmp1<<4) + tmp2);
++                      m88ds3103_writereg(state, 0xfe, val);
++              } else {
++                      tmp1 = m88ds3103_readreg(state, 0x22);
++                      tmp2 = m88ds3103_readreg(state, 0x24);
++
++                      tmp1 >>= 6;
++                      tmp1 &= 0x03;
++                      tmp2 >>= 6;
++                      tmp2 &= 0x03;
++
++                      if((tmp1 == 0x00) && (tmp2 == 0x01))
++                              MClk_KHz = 144000;
++                      else if((tmp1 == 0x00) && (tmp2 == 0x03))
++                              MClk_KHz = 72000;
++                      else if((tmp1 == 0x01) && (tmp2 == 0x01))
++                              MClk_KHz = 115200;
++                      else if((tmp1 == 0x02) && (tmp2 == 0x01))
++                              MClk_KHz = 96000;
++                      else if((tmp1 == 0x03) && (tmp2 == 0x00))
++                              MClk_KHz = 192000;
++                      else
++                              return 0;
++
++                      if(input_datarate < 5200) /*Max. 2011-12-23 11:55*/
++                              input_datarate = 5200;
++                              
++                      if(input_datarate != 0)
++                              divid_ratio = (u8)(MClk_KHz / input_datarate);
++                      else
++                              divid_ratio = 0xFF;
++
++                      if(divid_ratio > 128)
++                              divid_ratio = 128;
++
++                      if(divid_ratio < 2)
++                              divid_ratio = 2;
++
++                      tmp1 = (u8)(divid_ratio / 2);
++                      tmp2 = (u8)(divid_ratio / 2);
++
++                      if((divid_ratio % 2) != 0)
++                              tmp2 += 1;
++
++                      tmp1 -= 1;
++                      tmp2 -= 1;
++
++                      tmp1 &= 0x3f;
++                      tmp2 &= 0x3f;
++
++                      val = m88ds3103_readreg(state, 0xfe);
++                      val &= 0xF0;
++                      val |= (tmp2 >> 2) & 0x0f;
++                      m88ds3103_writereg(state, 0xfe, val);
++
++                      val = (u8)((tmp2 & 0x03) << 6); 
++                      val |= tmp1;
++                      m88ds3103_writereg(state, 0xea, val);
++              }
++      } else {
++              mod_fac = 2;
++
++              switch(code_rate) {
++                      case 4: input_datarate = locked_sym_rate_KSs*mod_fac/2/8;       break;
++                      case 3: input_datarate = locked_sym_rate_KSs*mod_fac*2/3/8;     break;
++                      case 2: input_datarate = locked_sym_rate_KSs*mod_fac*3/4/8;     break;
++                      case 1: input_datarate = locked_sym_rate_KSs*mod_fac*5/6/8;     break;
++                      case 0: input_datarate = locked_sym_rate_KSs*mod_fac*7/8/8;     break;
++                      default: input_datarate = locked_sym_rate_KSs*mod_fac*3/4/8;    break;
++              }
++
++              if(state->demod_id == DS3000_ID)
++                      input_datarate = input_datarate * 115 / 100;
++
++              if(input_datarate < 6857)               {tmp1 = 7;tmp2 = 7;} //6.857MHz     TS clock
++              else if(input_datarate < 7384)  {tmp1 = 6;tmp2 = 7;} //7.384MHz     TS clock
++              else if(input_datarate < 8000)  {tmp1 = 6;tmp2 = 6;} //8MHz             TS clock
++              else if(input_datarate < 8727)  {tmp1 = 5;tmp2 = 6;} //8.727MHz         TS clock
++              else if(input_datarate < 9600)  {tmp1 = 5;tmp2 = 5;} //9.6MHz           TS clock
++              else if(input_datarate < 10666) {tmp1 = 4;tmp2 = 5;} //10.666MHz        TS clock
++              else if(input_datarate < 12000) {tmp1 = 4;tmp2 = 4;} //12MHz            TS clock
++              else if(input_datarate < 13714) {tmp1 = 3;tmp2 = 4;} //13.714MHz        TS clock
++              else if(input_datarate < 16000) {tmp1 = 3;tmp2 = 3;} //16MHz            TS clock
++              else if(input_datarate < 19200) {tmp1 = 2;tmp2 = 3;} //19.2MHz          TS clock
++              else                                                    {tmp1 = 2;tmp2 = 2;} //24MHz            TS clock
++
++              if(state->demod_id == DS3000_ID) {
++                      val = m88ds3103_readreg(state, 0xfe);
++                      val &= 0xc0;
++                      val |= ((u8)((tmp1<<3) + tmp2));
++                      m88ds3103_writereg(state, 0xfe, val);
++              } else {
++                      if(input_datarate < 5200) /*Max. 2011-12-23 11:55*/
++                              input_datarate = 5200;
++                      
++                      if(input_datarate != 0)
++                              divid_ratio = (u8)(MClk_KHz / input_datarate);
++                      else
++                              divid_ratio = 0xFF;
++
++                      if(divid_ratio > 128)
++                              divid_ratio = 128;
++
++                      if(divid_ratio < 2)
++                              divid_ratio = 2;
++
++                      tmp1 = (u8)(divid_ratio / 2);
++                      tmp2 = (u8)(divid_ratio / 2);
++
++                      if((divid_ratio % 2) != 0)
++                              tmp2 += 1;
++
++                      tmp1 -= 1;
++                      tmp2 -= 1;
++
++                      tmp1 &= 0x3f;
++                      tmp2 &= 0x3f;
++
++                      val = m88ds3103_readreg(state, 0xfe);
++                      val &= 0xF0;
++                      val |= (tmp2 >> 2) & 0x0f;
++                      m88ds3103_writereg(state, 0xfe, val);
++                      
++                      val = (u8)((tmp2 & 0x03) << 6);
++                      val |= tmp1;
++                      m88ds3103_writereg(state, 0xea, val);
++              }
++      }
++      return 0;
++}
++
++static int m88ds3103_demod_connect(struct dvb_frontend *fe, s32 carrier_offset_khz) 
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++      struct dtv_frontend_properties *c = &fe->dtv_property_cache;
++      u16 value;
++      u8 val1,val2,data;
++      
++      dprintk("connect delivery system = %d\n", state->delivery_system);
++      
++      /* ds3000 global reset */
++      m88ds3103_writereg(state, 0x07, 0x80);
++      m88ds3103_writereg(state, 0x07, 0x00);
++      /* ds3000 build-in uC reset */
++      m88ds3103_writereg(state, 0xb2, 0x01);
++      /* ds3000 software reset */
++      m88ds3103_writereg(state, 0x00, 0x01);
++
++      switch (state->delivery_system) {
++      case SYS_DVBS:
++              /* initialise the demod in DVB-S mode */
++              if(state->demod_id == DS3000_ID){
++                      m88ds3103_init_reg(state, ds3000_dvbs_init_tab, sizeof(ds3000_dvbs_init_tab));
++                      
++                      value = m88ds3103_readreg(state, 0xfe);
++                      value &= 0xc0;
++                      value |= 0x1b;
++                      m88ds3103_writereg(state, 0xfe, value);
++                      
++                      if(state->config->ci_mode)
++                              val1 = 0x80;
++                      else if(state->config->ts_mode)
++                              val1 = 0x60;
++                      else
++                              val1 = 0x20;
++                      m88ds3103_writereg(state, 0xfd, val1);
++                      
++              }else if(state->demod_id == DS3103_ID){
++                      m88ds3103_init_reg(state, ds3103_dvbs_init_tab, sizeof(ds3103_dvbs_init_tab));
++                      
++                      /* set ts clock */
++                      if(state->config->ci_mode == 2){
++                              val1 = 6; val2 = 6;
++                      }else if(state->config->ts_mode == 0)   {
++                              val1 = 3; val2 = 3;
++                      }else{
++                              val1 = 0; val2 = 0;
++                      }
++                      val1 -= 1; val2 -= 1;
++                      val1 &= 0x3f; val2 &= 0x3f;
++                      data = m88ds3103_readreg(state, 0xfe);
++                      data &= 0xf0;
++                      data |= (val2 >> 2) & 0x0f;
++                      m88ds3103_writereg(state, 0xfe, data);
++                      data = (val2 & 0x03) << 6;
++                      data |= val1;
++                      m88ds3103_writereg(state, 0xea, data);
++                      
++                      m88ds3103_writereg(state, 0x4d, 0xfd & m88ds3103_readreg(state, 0x4d));
++                      m88ds3103_writereg(state, 0x30, 0xef & m88ds3103_readreg(state, 0x30));
++                      
++                      /* set master clock */
++                      val1 = m88ds3103_readreg(state, 0x22);
++                      val2 = m88ds3103_readreg(state, 0x24);
++                      
++                      val1 &= 0x3f;
++                      val2 &= 0x3f;
++                      val1 |= 0x80;
++                      val2 |= 0x40;
++
++                      m88ds3103_writereg(state, 0x22, val1);
++                      m88ds3103_writereg(state, 0x24, val2);  
++                      
++                      if(state->config->ci_mode)
++                              val1 = 0x03;
++                      else if(state->config->ts_mode)
++                              val1 = 0x06;
++                      else
++                              val1 = 0x42;
++                      m88ds3103_writereg(state, 0xfd, val1);          
++              }
++              break;
++      case SYS_DVBS2:
++              /* initialise the demod in DVB-S2 mode */
++              if(state->demod_id == DS3000_ID){
++                      m88ds3103_init_reg(state, ds3000_dvbs2_init_tab, sizeof(ds3000_dvbs2_init_tab));
++              
++                      if (c->symbol_rate >= 30000000)
++                              m88ds3103_writereg(state, 0xfe, 0x54);
++                      else
++                              m88ds3103_writereg(state, 0xfe, 0x98);
++                                                              
++              }else if(state->demod_id == DS3103_ID){
++                      m88ds3103_init_reg(state, ds3103_dvbs2_init_tab, sizeof(ds3103_dvbs2_init_tab));
++
++                      /* set ts clock */
++                      if(state->config->ci_mode == 2){
++                              val1 = 6; val2 = 6;
++                      }else if(state->config->ts_mode == 0){
++                              val1 = 5; val2 = 4;
++                      }else{
++                              val1 = 0; val2 = 0;
++                      }
++                      val1 -= 1; val2 -= 1;
++                      val1 &= 0x3f; val2 &= 0x3f;
++                      data = m88ds3103_readreg(state, 0xfe);
++                      data &= 0xf0;
++                      data |= (val2 >> 2) & 0x0f;
++                      m88ds3103_writereg(state, 0xfe, data);
++                      data = (val2 & 0x03) << 6;
++                      data |= val1;
++                      m88ds3103_writereg(state, 0xea, data);
++                      
++                      m88ds3103_writereg(state, 0x4d, 0xfd & m88ds3103_readreg(state, 0x4d));
++                      m88ds3103_writereg(state, 0x30, 0xef & m88ds3103_readreg(state, 0x30));
++                      
++                      /* set master clock */
++                      val1 = m88ds3103_readreg(state, 0x22);
++                      val2 = m88ds3103_readreg(state, 0x24);
++                      
++                      val1 &= 0x3f;
++                      val2 &= 0x3f;
++                      if((state->config->ci_mode == 2) || (state->config->ts_mode == 1)){
++                              val1 |= 0x80;
++                              val2 |= 0x40;
++                      }else{
++                              if (c->symbol_rate >= 28000000){
++                                      val1 |= 0xc0;
++                              }else if (c->symbol_rate >= 18000000){
++                                      val2 |= 0x40;
++                              }else{
++                                      val1 |= 0x80;
++                                      val2 |= 0x40;
++                              }                               
++                      }
++                      m88ds3103_writereg(state, 0x22, val1);
++                      m88ds3103_writereg(state, 0x24, val2);                                  
++              }
++              
++              if(state->config->ci_mode)
++                      val1 = 0x03;
++              else if(state->config->ts_mode)
++                      val1 = 0x06;
++              else
++                      val1 = 0x42;
++              m88ds3103_writereg(state, 0xfd, val1);
++              
++              break;
++      default:
++              return 1;
++      }
++      /* disable 27MHz clock output */
++      m88ds3103_writereg(state, 0x29, 0x80);
++      /* enable ac coupling */
++      m88ds3103_writereg(state, 0x25, 0x8a);
++
++      if ((c->symbol_rate / 1000) <= 3000){
++              m88ds3103_writereg(state, 0xc3, 0x08); /* 8 * 32 * 100 / 64 = 400*/
++              m88ds3103_writereg(state, 0xc8, 0x20);
++              m88ds3103_writereg(state, 0xc4, 0x08); /* 8 * 0 * 100 / 128 = 0*/
++              m88ds3103_writereg(state, 0xc7, 0x00);
++      }else if((c->symbol_rate / 1000) <= 10000){
++              m88ds3103_writereg(state, 0xc3, 0x08); /* 8 * 16 * 100 / 64 = 200*/
++              m88ds3103_writereg(state, 0xc8, 0x10);
++              m88ds3103_writereg(state, 0xc4, 0x08); /* 8 * 0 * 100 / 128 = 0*/
++              m88ds3103_writereg(state, 0xc7, 0x00);
++      }else{
++              m88ds3103_writereg(state, 0xc3, 0x08); /* 8 * 6 * 100 / 64 = 75*/
++              m88ds3103_writereg(state, 0xc8, 0x06);
++              m88ds3103_writereg(state, 0xc4, 0x08); /* 8 * 0 * 100 / 128 = 0*/
++              m88ds3103_writereg(state, 0xc7, 0x00);
++      }
++
++      m88ds3103_set_symrate(fe);
++      
++      m88ds3103_set_CCI(fe);
++
++      m88ds3103_set_carrier_offset(fe, carrier_offset_khz);
++              
++      /* ds3000 out of software reset */
++      m88ds3103_writereg(state, 0x00, 0x00);
++      /* start ds3000 build-in uC */
++      m88ds3103_writereg(state, 0xb2, 0x00);  
++      
++      return 0;
++}
++
++static int m88ds3103_set_frontend(struct dvb_frontend *fe)
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++      struct dtv_frontend_properties *c = &fe->dtv_property_cache;
++
++      int i;
++      fe_status_t status;
++      u8 lpf_mxdiv, mlpf_max, mlpf_min, nlpf, div4, capCode, changePLL;
++      s32 offset_khz, lpf_offset_KHz;
++      u16 value, ndiv, lpf_coeff;
++      u32 f3db, gdiv28, realFreq;
++      u8 RFgain;
++
++      dprintk("%s() ", __func__);
++      dprintk("c frequency = %d\n", c->frequency);
++      dprintk("symbol rate = %d\n", c->symbol_rate);
++      dprintk("delivery system = %d\n", c->delivery_system);
++      
++      realFreq = c->frequency;
++      lpf_offset_KHz = 0;
++      if(c->symbol_rate < 5000000){
++              lpf_offset_KHz = FREQ_OFFSET_AT_SMALL_SYM_RATE_KHz;
++              realFreq += FREQ_OFFSET_AT_SMALL_SYM_RATE_KHz;
++      }
++      
++      if (state->config->set_ts_params)
++              state->config->set_ts_params(fe, 0);
++
++      div4 = 0;
++      RFgain = 0;
++      if(state->tuner_id == TS2022_ID){
++              m88ds3103_tuner_writereg(state, 0x10, 0x0a);
++              m88ds3103_tuner_writereg(state, 0x11, 0x40);
++              if (realFreq < 1103000) {
++                      m88ds3103_tuner_writereg(state, 0x10, 0x1b);
++                      div4 = 1;
++                      ndiv = (realFreq * (6 + 8) * 4)/MT_FE_CRYSTAL_KHZ;                              
++              }else {
++                      ndiv = (realFreq * (6 + 8) * 2)/MT_FE_CRYSTAL_KHZ;
++              }
++              ndiv = ndiv + ndiv%2;
++              if(ndiv < 4095)
++                      ndiv = ndiv - 1024;
++              else if (ndiv < 6143)
++                      ndiv = ndiv + 1024;
++              else
++                      ndiv = ndiv + 3072;     
++              
++              m88ds3103_tuner_writereg(state, 0x01, (ndiv & 0x3f00) >> 8);                                                                                    
++      }else{
++              m88ds3103_tuner_writereg(state, 0x10, 0x00);                    
++              if (realFreq < 1146000){
++                      m88ds3103_tuner_writereg(state, 0x10, 0x11);
++                      div4 = 1;
++                      ndiv = (realFreq * (6 + 8) * 4) / MT_FE_CRYSTAL_KHZ;
++              }else{
++                      m88ds3103_tuner_writereg(state, 0x10, 0x01);
++                      ndiv = (realFreq * (6 + 8) * 2) / MT_FE_CRYSTAL_KHZ;
++              }
++              ndiv = ndiv + ndiv%2;
++              ndiv = ndiv - 1024;
++              m88ds3103_tuner_writereg(state, 0x01, (ndiv>>8)&0x0f);
++      }
++      /* set pll */
++      m88ds3103_tuner_writereg(state, 0x02, ndiv & 0x00ff);
++      m88ds3103_tuner_writereg(state, 0x03, 0x06);
++      m88ds3103_tuner_writereg(state, 0x51, 0x0f);
++      m88ds3103_tuner_writereg(state, 0x51, 0x1f);
++      m88ds3103_tuner_writereg(state, 0x50, 0x10);
++      m88ds3103_tuner_writereg(state, 0x50, 0x00);    
++
++      if(state->tuner_id == TS2022_ID){
++              if(( realFreq >= 1650000 ) && (realFreq <= 1850000)){
++                      msleep(5);
++                      value = m88ds3103_tuner_readreg(state, 0x14);
++                      value &= 0x7f;
++                      if(value < 64){
++                              m88ds3103_tuner_writereg(state, 0x10, 0x82);
++                              m88ds3103_tuner_writereg(state, 0x11, 0x6f);
++
++                              m88ds3103_tuner_writereg(state, 0x51, 0x0f);
++                              m88ds3103_tuner_writereg(state, 0x51, 0x1f);
++                              m88ds3103_tuner_writereg(state, 0x50, 0x10);
++                              m88ds3103_tuner_writereg(state, 0x50, 0x00);
++                      }
++              }
++              msleep(5);
++              value = m88ds3103_tuner_readreg(state, 0x14);
++              value &= 0x1f;
++
++              if(value > 19){
++                      value = m88ds3103_tuner_readreg(state, 0x10);
++                      value &= 0x1d;
++                      m88ds3103_tuner_writereg(state, 0x10, value);
++              }                               
++      }else{
++              msleep(5);
++              value = m88ds3103_tuner_readreg(state, 0x66);
++              changePLL = (((value & 0x80) >> 7) != div4);
++
++              if(changePLL){
++                      m88ds3103_tuner_writereg(state, 0x10, 0x11);
++                      div4 = 1;
++                      ndiv = (realFreq * (6 + 8) * 4)/MT_FE_CRYSTAL_KHZ;
++                      ndiv = ndiv + ndiv%2;
++                      ndiv = ndiv - 1024;
++                                      
++                      m88ds3103_tuner_writereg(state, 0x01, (ndiv>>8) & 0x0f);
++                      m88ds3103_tuner_writereg(state, 0x02, ndiv & 0xff);
++                      
++                      m88ds3103_tuner_writereg(state, 0x51, 0x0f);
++                      m88ds3103_tuner_writereg(state, 0x51, 0x1f);
++                      m88ds3103_tuner_writereg(state, 0x50, 0x10);
++                      m88ds3103_tuner_writereg(state, 0x50, 0x00);
++              }               
++      }
++      /*set the RF gain*/
++      if(state->tuner_id == TS2020_ID)
++              m88ds3103_tuner_writereg(state, 0x60, 0x79);
++                      
++      m88ds3103_tuner_writereg(state, 0x51, 0x17);
++      m88ds3103_tuner_writereg(state, 0x51, 0x1f);
++      m88ds3103_tuner_writereg(state, 0x50, 0x08);
++      m88ds3103_tuner_writereg(state, 0x50, 0x00);
++      msleep(5);
++
++      if(state->tuner_id == TS2020_ID){
++              RFgain = m88ds3103_tuner_readreg(state, 0x3d);
++              RFgain &= 0x0f;
++              if(RFgain < 15){
++                      if(RFgain < 4) 
++                              RFgain = 0;
++                      else
++                              RFgain = RFgain -3;
++                      value = ((RFgain << 3) | 0x01) & 0x79;
++                      m88ds3103_tuner_writereg(state, 0x60, value);
++                      m88ds3103_tuner_writereg(state, 0x51, 0x17);
++                      m88ds3103_tuner_writereg(state, 0x51, 0x1f);
++                      m88ds3103_tuner_writereg(state, 0x50, 0x08);
++                      m88ds3103_tuner_writereg(state, 0x50, 0x00);
++              }
++      }
++      
++      /* set the LPF */
++      if(state->tuner_id == TS2022_ID){
++              m88ds3103_tuner_writereg(state, 0x25, 0x00);
++              m88ds3103_tuner_writereg(state, 0x27, 0x70);
++              m88ds3103_tuner_writereg(state, 0x41, 0x09);
++              m88ds3103_tuner_writereg(state, 0x08, 0x0b);
++      }
++
++      f3db = ((c->symbol_rate / 1000) *135) / 200 + 2000;
++      f3db += lpf_offset_KHz;
++      if (f3db < 7000)
++              f3db = 7000;
++      if (f3db > 40000)
++              f3db = 40000;
++                      
++      gdiv28 = (MT_FE_CRYSTAL_KHZ / 1000 * 1694 + 500) / 1000;
++      m88ds3103_tuner_writereg(state, 0x04, gdiv28 & 0xff);
++      m88ds3103_tuner_writereg(state, 0x51, 0x1b);
++      m88ds3103_tuner_writereg(state, 0x51, 0x1f);
++      m88ds3103_tuner_writereg(state, 0x50, 0x04);
++      m88ds3103_tuner_writereg(state, 0x50, 0x00);
++      msleep(5);
++
++      value = m88ds3103_tuner_readreg(state, 0x26);
++      capCode = value & 0x3f;
++      if(state->tuner_id == TS2022_ID){
++              m88ds3103_tuner_writereg(state, 0x41, 0x0d);
++
++              m88ds3103_tuner_writereg(state, 0x51, 0x1b);
++              m88ds3103_tuner_writereg(state, 0x51, 0x1f);
++              m88ds3103_tuner_writereg(state, 0x50, 0x04);
++              m88ds3103_tuner_writereg(state, 0x50, 0x00);
++
++              msleep(2);
++
++              value = m88ds3103_tuner_readreg(state, 0x26);
++              value &= 0x3f;
++              value = (capCode + value) / 2;          
++      }
++      else
++              value = capCode;
++              
++      gdiv28 = gdiv28 * 207 / (value * 2 + 151);      
++      mlpf_max = gdiv28 * 135 / 100;
++      mlpf_min = gdiv28 * 78 / 100;
++      if (mlpf_max > 63)
++              mlpf_max = 63;
++
++      if(state->tuner_id == TS2022_ID)
++              lpf_coeff = 3200;
++      else
++              lpf_coeff = 2766;
++              
++      nlpf = (f3db * gdiv28 * 2 / lpf_coeff / (MT_FE_CRYSTAL_KHZ / 1000)  + 1) / 2 ;  
++      if (nlpf > 23) nlpf = 23;
++      if (nlpf < 1) nlpf = 1;
++
++      lpf_mxdiv = (nlpf * (MT_FE_CRYSTAL_KHZ / 1000) * lpf_coeff * 2 / f3db + 1) / 2;
++
++      if (lpf_mxdiv < mlpf_min){
++              nlpf++;
++              lpf_mxdiv = (nlpf * (MT_FE_CRYSTAL_KHZ / 1000) * lpf_coeff * 2  / f3db + 1) / 2;
++      }
++
++      if (lpf_mxdiv > mlpf_max)
++              lpf_mxdiv = mlpf_max;
++
++      m88ds3103_tuner_writereg(state, 0x04, lpf_mxdiv);
++      m88ds3103_tuner_writereg(state, 0x06, nlpf);
++      m88ds3103_tuner_writereg(state, 0x51, 0x1b);
++      m88ds3103_tuner_writereg(state, 0x51, 0x1f);
++      m88ds3103_tuner_writereg(state, 0x50, 0x04);
++      m88ds3103_tuner_writereg(state, 0x50, 0x00);
++      msleep(5);
++      
++      if(state->tuner_id == TS2022_ID){
++              msleep(2);
++              value = m88ds3103_tuner_readreg(state, 0x26);
++              capCode = value & 0x3f;
++
++              m88ds3103_tuner_writereg(state, 0x41, 0x09);
++
++              m88ds3103_tuner_writereg(state, 0x51, 0x1b);
++              m88ds3103_tuner_writereg(state, 0x51, 0x1f);
++              m88ds3103_tuner_writereg(state, 0x50, 0x04);
++              m88ds3103_tuner_writereg(state, 0x50, 0x00);
++
++              msleep(2);
++              value = m88ds3103_tuner_readreg(state, 0x26);
++              value &= 0x3f;
++              value = (capCode + value) / 2;
++
++              value = value | 0x80;
++              m88ds3103_tuner_writereg(state, 0x25, value);
++              m88ds3103_tuner_writereg(state, 0x27, 0x30);
++
++              m88ds3103_tuner_writereg(state, 0x08, 0x09);            
++      }
++
++      /* Set the BB gain */
++      m88ds3103_tuner_writereg(state, 0x51, 0x1e);
++      m88ds3103_tuner_writereg(state, 0x51, 0x1f);
++      m88ds3103_tuner_writereg(state, 0x50, 0x01);
++      m88ds3103_tuner_writereg(state, 0x50, 0x00);
++      if(state->tuner_id == TS2020_ID){
++              if(RFgain == 15){
++                      msleep(40);
++                      value = m88ds3103_tuner_readreg(state, 0x21);
++                      value &= 0x0f;
++                      if(value < 3){
++                              m88ds3103_tuner_writereg(state, 0x60, 0x61);
++                              m88ds3103_tuner_writereg(state, 0x51, 0x17);
++                              m88ds3103_tuner_writereg(state, 0x51, 0x1f);
++                              m88ds3103_tuner_writereg(state, 0x50, 0x08);
++                              m88ds3103_tuner_writereg(state, 0x50, 0x00);
++                      }                       
++              }
++      }
++      msleep(60);
++      
++      offset_khz = (ndiv - ndiv % 2 + 1024) * MT_FE_CRYSTAL_KHZ
++              / (6 + 8) / (div4 + 1) / 2 - realFreq;
++
++      m88ds3103_demod_connect(fe, offset_khz+lpf_offset_KHz);
++
++      for (i = 0; i < 30 ; i++) {
++              m88ds3103_read_status(fe, &status);
++              if (status & FE_HAS_LOCK){
++                      break;
++                }
++              msleep(20);
++      }
++      
++      if((status & FE_HAS_LOCK) == 0){
++              state->delivery_system = (state->delivery_system == SYS_DVBS) ? SYS_DVBS2 : SYS_DVBS;
++              m88ds3103_demod_connect(fe, offset_khz);
++      
++              for (i = 0; i < 30 ; i++) {
++                      m88ds3103_read_status(fe, &status);
++                      if (status & FE_HAS_LOCK){
++                              break;
++                      }
++                      msleep(20);
++              }
++      }
++      
++      if (status & FE_HAS_LOCK){
++              if(state->config->ci_mode == 2)
++                      m88ds3103_set_clock_ratio(state);
++              if(state->config->start_ctrl){
++                      if(state->first_lock == 0){
++                              state->config->start_ctrl(fe);
++                              state->first_lock = 1;  
++                      }
++              }               
++      }
++              
++      return 0;
++}
++
++static int m88ds3103_tune(struct dvb_frontend *fe,
++                      bool re_tune,
++                      unsigned int mode_flags,
++                      unsigned int *delay,
++                      fe_status_t *status)
++{     
++      *delay = HZ / 5;
++      
++      dprintk("%s() ", __func__);
++      dprintk("re_tune = %d\n", re_tune);
++      
++      if (re_tune) {
++              int ret = m88ds3103_set_frontend(fe);
++              if (ret)
++                      return ret;
++      }
++      
++      return m88ds3103_read_status(fe, status);
++}
++
++static enum dvbfe_algo m88ds3103_get_algo(struct dvb_frontend *fe)
++{
++      return DVBFE_ALGO_HW;
++}
++ 
++ /*
++ * Power config will reset and load initial firmware if required
++ */
++static int m88ds3103_initilaze(struct dvb_frontend *fe)
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++      int ret;
++
++      dprintk("%s()\n", __func__);
++      /* hard reset */
++      m88ds3103_writereg(state, 0x07, 0x80);
++      m88ds3103_writereg(state, 0x07, 0x00);
++      msleep(1);
++      
++      m88ds3103_writereg(state, 0x08, 0x01 | m88ds3103_readreg(state, 0x08));
++      msleep(1);
++
++      if(state->tuner_id == TS2020_ID){
++              /* TS2020 init */
++              m88ds3103_tuner_writereg(state, 0x42, 0x73);
++              msleep(2);
++              m88ds3103_tuner_writereg(state, 0x05, 0x01);
++              m88ds3103_tuner_writereg(state, 0x62, 0xb5);
++              m88ds3103_tuner_writereg(state, 0x07, 0x02);
++              m88ds3103_tuner_writereg(state, 0x08, 0x01);
++      }
++      else if(state->tuner_id == TS2022_ID){
++              /* TS2022 init */
++              m88ds3103_tuner_writereg(state, 0x62, 0x6c);
++              msleep(2);
++              m88ds3103_tuner_writereg(state, 0x42, 0x6c);
++              msleep(2);
++              m88ds3103_tuner_writereg(state, 0x7d, 0x9d);
++              m88ds3103_tuner_writereg(state, 0x7c, 0x9a);
++              m88ds3103_tuner_writereg(state, 0x7a, 0x76);
++
++              m88ds3103_tuner_writereg(state, 0x3b, 0x01);
++              m88ds3103_tuner_writereg(state, 0x63, 0x88);
++
++              m88ds3103_tuner_writereg(state, 0x61, 0x85);
++              m88ds3103_tuner_writereg(state, 0x22, 0x30);
++              m88ds3103_tuner_writereg(state, 0x30, 0x40);
++              m88ds3103_tuner_writereg(state, 0x20, 0x23);
++              m88ds3103_tuner_writereg(state, 0x24, 0x02);
++              m88ds3103_tuner_writereg(state, 0x12, 0xa0);    
++      }
++              
++      if(state->demod_id == DS3103_ID){
++              m88ds3103_writereg(state, 0x07, 0xe0);
++              m88ds3103_writereg(state, 0x07, 0x00);
++              msleep(1);              
++      }
++      m88ds3103_writereg(state, 0xb2, 0x01);
++      
++      /* Load the firmware if required */
++      ret = m88ds3103_load_firmware(fe);
++      if (ret != 0){
++              printk(KERN_ERR "%s: Unable initialize firmware\n", __func__);
++              return ret;
++      }
++      if(state->demod_id == DS3103_ID){
++              m88ds3103_writereg(state, 0x4d, 0xfd & m88ds3103_readreg(state, 0x4d));
++              m88ds3103_writereg(state, 0x30, 0xef & m88ds3103_readreg(state, 0x30));         
++      }
++
++      return 0;
++}
++
++/*
++ * Initialise or wake up device
++ */
++static int m88ds3103_initfe(struct dvb_frontend *fe)
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++      u8 val;
++
++      dprintk("%s()\n", __func__);
++
++      /* 1st step to wake up demod */
++      m88ds3103_writereg(state, 0x08, 0x01 | m88ds3103_readreg(state, 0x08));
++      m88ds3103_writereg(state, 0x04, 0xfe & m88ds3103_readreg(state, 0x04));
++      m88ds3103_writereg(state, 0x23, 0xef & m88ds3103_readreg(state, 0x23));
++      
++      /* 2nd step to wake up tuner */
++      val = m88ds3103_tuner_readreg(state, 0x00) & 0xff;
++      if((val & 0x01) == 0){
++              m88ds3103_tuner_writereg(state, 0x00, 0x01);
++              msleep(50);
++      }
++      m88ds3103_tuner_writereg(state, 0x00, 0x03);
++      msleep(50);
++      
++      return 0;       
++}
++
++/* Put device to sleep */
++static int m88ds3103_sleep(struct dvb_frontend *fe)
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++
++      dprintk("%s()\n", __func__);
++      
++      /* 1st step to sleep tuner */
++      m88ds3103_tuner_writereg(state, 0x00, 0x00);
++      
++      /* 2nd step to sleep demod */
++      m88ds3103_writereg(state, 0x08, 0xfe & m88ds3103_readreg(state, 0x08));
++      m88ds3103_writereg(state, 0x04, 0x01 | m88ds3103_readreg(state, 0x04));
++      m88ds3103_writereg(state, 0x23, 0x10 | m88ds3103_readreg(state, 0x23));
++      
++
++      return 0;
++}
++
++static struct dvb_frontend_ops m88ds3103_ops = {
++      .delsys = { SYS_DVBS, SYS_DVBS2},
++      .info = {
++              .name = "Montage DS3103/TS2022",
++              .type = FE_QPSK,
++              .frequency_min = 950000,
++              .frequency_max = 2150000,
++              .frequency_stepsize = 1011, /* kHz for QPSK frontends */
++              .frequency_tolerance = 5000,
++              .symbol_rate_min = 1000000,
++              .symbol_rate_max = 45000000,
++              .caps = FE_CAN_INVERSION_AUTO |
++                      FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
++                      FE_CAN_FEC_4_5 | FE_CAN_FEC_5_6 | FE_CAN_FEC_6_7 |
++                      FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
++                      FE_CAN_2G_MODULATION |
++                      FE_CAN_QPSK | FE_CAN_RECOVER
++      },
++
++      .release = m88ds3103_release,
++
++      .init = m88ds3103_initfe,
++      .sleep = m88ds3103_sleep,
++      .read_status = m88ds3103_read_status,
++      .read_ber = m88ds3103_read_ber,
++      .read_signal_strength = m88ds3103_read_signal_strength,
++      .read_snr = m88ds3103_read_snr,
++      .read_ucblocks = m88ds3103_read_ucblocks,
++      .set_tone = m88ds3103_set_tone,
++      .set_voltage = m88ds3103_set_voltage,
++      .diseqc_send_master_cmd = m88ds3103_send_diseqc_msg,
++      .diseqc_send_burst = m88ds3103_diseqc_send_burst,
++      .get_frontend_algo = m88ds3103_get_algo,
++      .tune = m88ds3103_tune,
++      .set_frontend = m88ds3103_set_frontend,
++};
++
++MODULE_DESCRIPTION("DVB Frontend module for Montage DS3103/TS2022 hardware");
++MODULE_AUTHOR("Max nibble");
++MODULE_LICENSE("GPL");
+diff -urN a/drivers/media/dvb-frontends/m88ds3103.h b/drivers/media/dvb-frontends/m88ds3103.h
+--- a/drivers/media/dvb-frontends/m88ds3103.h  1970-01-01 08:00:00.000000000 +0800
++++ b/drivers/media/dvb-frontends/m88ds3103.h  2013-01-30 12:33:51.000000000 +0800
+@@ -0,0 +1,53 @@
++/*
++    Montage Technology M88DS3103/M88TS2022 - DVBS/S2 Satellite demod/tuner driver
++
++    This program is free software; you can redistribute it and/or modify
++    it under the terms of the GNU General Public License as published by
++    the Free Software Foundation; either version 2 of the License, or
++    (at your option) any later version.
++
++    This program is distributed in the hope that it will be useful,
++    but WITHOUT ANY WARRANTY; without even the implied warranty of
++    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++    GNU General Public License for more details.
++
++    You should have received a copy of the GNU General Public License
++    along with this program; if not, write to the Free Software
++    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++ */
++
++#ifndef M88DS3103_H
++#define M88DS3103_H
++
++#include <linux/dvb/frontend.h>
++
++struct m88ds3103_config {
++      /* the demodulator's i2c address */
++      u8 demod_address;
++      u8 ci_mode;
++      u8 pin_ctrl;
++      u8 ts_mode; /* 0: Parallel, 1: Serial */
++
++      /* Set device param to start dma */
++      int (*set_ts_params)(struct dvb_frontend *fe, int is_punctured);
++    /* Start to transfer data */
++    int (*start_ctrl)(struct dvb_frontend *fe);
++    /* Set LNB voltage */
++    int (*set_voltage)(struct dvb_frontend* fe, fe_sec_voltage_t voltage);
++};
++
++#if defined(CONFIG_DVB_M88DS3103) || \
++      (defined(CONFIG_DVB_M88DS3103_MODULE) && defined(MODULE))
++extern struct dvb_frontend *m88ds3103_attach(
++       const struct m88ds3103_config *config,
++       struct i2c_adapter *i2c);
++#else
++static inline struct dvb_frontend *m88ds3103_attach(
++       const struct m88ds3103_config *config,
++       struct i2c_adapter *i2c)
++{
++      printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
++      return NULL;
++}
++#endif /* CONFIG_DVB_M88DS3103 */
++#endif /* M88DS3103_H */
+diff -urN a/drivers/media/dvb-frontends/m88ds3103_priv.h b/drivers/media/dvb-frontends/m88ds3103_priv.h
+--- a/drivers/media/dvb-frontends/m88ds3103_priv.h     1970-01-01 08:00:00.000000000 +0800
++++ b/drivers/media/dvb-frontends/m88ds3103_priv.h     2013-01-30 12:33:56.000000000 +0800
+@@ -0,0 +1,403 @@
++/*
++    Montage Technology M88DS3103/M88TS2022 - DVBS/S2 Satellite demod/tuner driver
++
++    This program is free software; you can redistribute it and/or modify
++    it under the terms of the GNU General Public License as published by
++    the Free Software Foundation; either version 2 of the License, or
++    (at your option) any later version.
++
++    This program is distributed in the hope that it will be useful,
++    but WITHOUT ANY WARRANTY; without even the implied warranty of
++    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++    GNU General Public License for more details.
++
++    You should have received a copy of the GNU General Public License
++    along with this program; if not, write to the Free Software
++    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++ */
++
++#ifndef M88DS3103_PRIV_H
++#define M88DS3103_PRIV_H
++
++#define FW_DOWN_SIZE 32
++#define FW_DOWN_LOOP (8192/FW_DOWN_SIZE)
++#define DS3103_DEFAULT_FIRMWARE "dvb-fe-ds3103.fw"
++#define DS3000_DEFAULT_FIRMWARE "dvb-fe-ds300x.fw"
++#define MT_FE_MCLK_KHZ 96000 /* in kHz */
++#define MT_FE_CRYSTAL_KHZ   27000 /* in kHz */
++#define FREQ_OFFSET_AT_SMALL_SYM_RATE_KHz 3000
++#define DS3000_ID     0x3000
++#define DS3103_ID     0x3103
++#define TS2020_ID     0x2020
++#define TS2022_ID     0x2022
++#define UNKNOW_ID     0x0000
++
++struct m88ds3103_state {
++      struct i2c_adapter *i2c;
++      const struct m88ds3103_config *config;
++      
++      struct dvb_frontend frontend;
++      
++      u32 preBer;
++      u8 skip_fw_load;        
++      u8 first_lock; /* The first time of signal lock */
++      u16 demod_id; /* demod chip type */
++      u16 tuner_id; /* tuner chip type */
++      fe_delivery_system_t delivery_system;
++};
++
++/* For M88DS3103 demod dvbs mode.*/
++static u8 ds3103_dvbs_init_tab[] = {
++      0x23, 0x07,
++      0x08, 0x03,
++      0x0c, 0x02,
++      0x21, 0x54,
++      0x25, 0x82,
++      0x27, 0x31,
++      0x30, 0x08,
++      0x31, 0x40,
++      0x32, 0x32,
++      0x33, 0x35,
++      0x35, 0xff,
++      0x3a, 0x00,
++      0x37, 0x10,
++      0x38, 0x10,
++      0x39, 0x02,
++      0x42, 0x60,
++      0x4a, 0x80,
++      0x4b, 0x04,
++      0x4d, 0x91,
++      0x5d, 0xc8,
++      0x50, 0x36,
++      0x51, 0x36,
++      0x52, 0x36,
++      0x53, 0x36,
++      0x63, 0x0f,
++      0x64, 0x30,
++      0x65, 0x40,
++      0x68, 0x26,
++      0x69, 0x4c,
++      0x70, 0x20,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0x40,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0x60,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0x80,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0xa0,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0x1f,
++      0x76, 0x38,
++      0x77, 0xa6,
++      0x78, 0x0c,
++      0x79, 0x80,
++      0x7f, 0x14,
++      0x7c, 0x00,
++      0xae, 0x82,
++      0x80, 0x64,
++      0x81, 0x66,
++      0x82, 0x44,
++      0x85, 0x04,
++      0xcd, 0xf4,
++      0x90, 0x33,
++      0xa0, 0x44,
++      0xc0, 0x08,
++      0xc3, 0x10,
++      0xc4, 0x08,
++      0xc5, 0xf0,
++      0xc6, 0xff,
++      0xc7, 0x00,
++      0xc8, 0x1a,
++      0xc9, 0x80,
++      0xe0, 0xf8,
++      0xe6, 0x8b,
++      0xd0, 0x40,
++      0xf8, 0x20,
++      0xfa, 0x0f,
++      0x00, 0x00,
++      0xbd, 0x01,
++      0xb8, 0x00,
++};
++/* For M88DS3103 demod dvbs2 mode.*/
++static u8 ds3103_dvbs2_init_tab[] = {
++      0x23, 0x07,
++      0x08, 0x07,
++      0x0c, 0x02,
++      0x21, 0x54,
++      0x25, 0x82,
++      0x27, 0x31,
++      0x30, 0x08,
++      0x32, 0x32,
++      0x33, 0x35,
++      0x35, 0xff,
++      0x3a, 0x00,
++      0x37, 0x10,
++      0x38, 0x10,
++      0x39, 0x02,
++      0x42, 0x60,
++      0x4a, 0x80,
++      0x4b, 0x04,
++      0x4d, 0x91,
++      0x5d, 0xc8,
++      0x50, 0x36,
++      0x51, 0x36,
++      0x52, 0x36,
++      0x53, 0x36,
++      0x63, 0x0f,
++      0x64, 0x10,
++      0x65, 0x20,
++      0x68, 0x46,
++      0x69, 0xcd,
++      0x70, 0x20,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0x40,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0x60,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0x80,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0xa0,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0x1f,
++      0x76, 0x38,
++      0x77, 0xa6,
++      0x78, 0x0c,
++      0x79, 0x80,
++      0x7f, 0x14,
++      0x85, 0x08,
++      0xcd, 0xf4,
++      0x90, 0x33,
++      0x86, 0x00,
++      0x87, 0x0f,
++      0x89, 0x00,
++      0x8b, 0x44,
++      0x8c, 0x66,
++      0x9d, 0xc1,
++      0x8a, 0x10,
++      0xad, 0x40,
++      0xa0, 0x44,
++      0xc0, 0x08,
++      0xc1, 0x10,
++      0xc2, 0x08,
++      0xc3, 0x10,
++      0xc4, 0x08,
++      0xc5, 0xf0,
++      0xc6, 0xff,
++      0xc7, 0x00,
++      0xc8, 0x1a,
++      0xc9, 0x80,
++      0xca, 0x23,
++      0xcb, 0x24,
++      0xcc, 0xf4,
++      0xce, 0x74,
++      0x00, 0x00,
++      0xbd, 0x01,
++      0xb8, 0x00,
++};
++
++/* For M88DS3000 demod dvbs mode.*/
++static u8 ds3000_dvbs_init_tab[] = {
++      0x23, 0x05,
++      0x08, 0x03,
++      0x0c, 0x02,
++      0x21, 0x54,
++      0x25, 0x82,
++      0x27, 0x31,
++      0x30, 0x08,
++      0x31, 0x40,
++      0x32, 0x32,
++      0x33, 0x35,
++      0x35, 0xff,
++      0x3a, 0x00,
++      0x37, 0x10,
++      0x38, 0x10,
++      0x39, 0x02,
++      0x42, 0x60,
++      0x4a, 0x40,
++      0x4b, 0x04,
++      0x4d, 0x91,
++      0x5d, 0xc8,
++      0x50, 0x77,
++      0x51, 0x77,
++      0x52, 0x36,
++      0x53, 0x36,
++      0x56, 0x01,
++      0x63, 0x47,
++      0x64, 0x30,
++      0x65, 0x40,
++      0x68, 0x26,
++      0x69, 0x4c,
++      0x70, 0x20,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0x40,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0x60,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0x80,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0xa0,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0x1f,
++      0x76, 0x00,
++      0x77, 0xd1,
++      0x78, 0x0c,
++      0x79, 0x80,
++      0x7f, 0x04,
++      0x7c, 0x00,
++      0x80, 0x86,
++      0x81, 0xa6,
++      0x85, 0x04,
++      0xcd, 0xf4,
++      0x90, 0x33,
++      0xa0, 0x44,
++      0xc0, 0x18,
++      0xc3, 0x10,
++      0xc4, 0x08,
++      0xc5, 0x80,
++      0xc6, 0x80,
++      0xc7, 0x0a,
++      0xc8, 0x1a,
++      0xc9, 0x80,
++      0xfe, 0xb6,
++      0xe0, 0xf8,
++      0xe6, 0x8b,
++      0xd0, 0x40,
++      0xf8, 0x20,
++      0xfa, 0x0f,
++      0xad, 0x20,
++      0xae, 0x07,
++      0xb8, 0x00,
++};
++
++/* For M88DS3000 demod dvbs2 mode.*/
++static u8 ds3000_dvbs2_init_tab[] = {
++      0x23, 0x0f,
++      0x08, 0x07,
++      0x0c, 0x02,
++      0x21, 0x54,
++      0x25, 0x82,
++      0x27, 0x31,
++      0x30, 0x08,
++      0x31, 0x32,
++      0x32, 0x32,
++      0x33, 0x35,
++      0x35, 0xff,
++      0x3a, 0x00,
++      0x37, 0x10,
++      0x38, 0x10,
++      0x39, 0x02,
++      0x42, 0x60,
++      0x4a, 0x80,
++      0x4b, 0x04,
++      0x4d, 0x91,
++      0x5d, 0x88,
++      0x50, 0x36,
++      0x51, 0x36,
++      0x52, 0x36,
++      0x53, 0x36,
++      0x63, 0x60,
++      0x64, 0x10,
++      0x65, 0x10,
++      0x68, 0x04,
++      0x69, 0x29,
++      0x70, 0x20,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0x40,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0x60,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0x80,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0xa0,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0x1f,
++      0xa0, 0x44,
++      0xc0, 0x08,
++      0xc1, 0x10,
++      0xc2, 0x08,
++      0xc3, 0x10,
++      0xc4, 0x08,
++      0xc5, 0xf0,
++      0xc6, 0xf0,
++      0xc7, 0x0a,
++      0xc8, 0x1a,
++      0xc9, 0x80,
++      0xca, 0x23,
++      0xcb, 0x24,
++      0xce, 0x74,
++      0x56, 0x01,
++      0x90, 0x03,
++      0x76, 0x80,
++      0x77, 0x42,
++      0x78, 0x0a,
++      0x79, 0x80,
++      0xad, 0x40,
++      0xae, 0x07,
++      0x7f, 0xd4,
++      0x7c, 0x00,
++      0x80, 0xa8,
++      0x81, 0xda,
++      0x7c, 0x01,
++      0x80, 0xda,
++      0x81, 0xec,
++      0x7c, 0x02,
++      0x80, 0xca,
++      0x81, 0xeb,
++      0x7c, 0x03,
++      0x80, 0xba,
++      0x81, 0xdb,
++      0x85, 0x08,
++      0x86, 0x00,
++      0x87, 0x02,
++      0x89, 0x80,
++      0x8b, 0x44,
++      0x8c, 0xaa,
++      0x8a, 0x10,
++      0xba, 0x00,
++      0xf5, 0x04,
++      0xd2, 0x32,
++      0xb8, 0x00,
++};
++
++#endif /* M88DS3103_PRIV_H */
+diff -urN a/drivers/media/dvb-frontends/Makefile b/drivers/media/dvb-frontends/Makefile
+--- a/drivers/media/dvb-frontends/Makefile     2013-04-29 08:36:01.000000000 +0800
++++ b/drivers/media/dvb-frontends/Makefile     2013-05-03 17:04:31.000000000 +0800
+@@ -103,4 +103,5 @@
+ obj-$(CONFIG_DVB_RTL2832) += rtl2832.o
+ obj-$(CONFIG_DVB_M88RS2000) += m88rs2000.o
+ obj-$(CONFIG_DVB_AF9033) += af9033.o
+-
++obj-$(CONFIG_DVB_M88DS3103) += m88ds3103.o
++obj-$(CONFIG_DVB_M88DC2800) += m88dc2800.o
+diff -urN a/drivers/media/pci/cx23885/cimax2.c b/drivers/media/pci/cx23885/cimax2.c
+--- a/drivers/media/pci/cx23885/cimax2.c       2013-04-29 08:36:01.000000000 +0800
++++ b/drivers/media/pci/cx23885/cimax2.c       2013-03-31 22:03:29.000000000 +0800
+@@ -415,7 +415,7 @@
+       return state->status;
+ }
+-int netup_ci_init(struct cx23885_tsport *port)
++int netup_ci_init(struct cx23885_tsport *port, bool isDVBSky)
+ {
+       struct netup_ci_state *state;
+       u8 cimax_init[34] = {
+@@ -464,6 +464,11 @@
+               goto err;
+       }
++      if(isDVBSky) {
++              cimax_init[32] = 0x22;
++              cimax_init[33] = 0x00;
++      }
++
+       port->port_priv = state;
+       switch (port->nr) {
+@@ -537,3 +542,19 @@
+       dvb_ca_en50221_release(&state->ca);
+       kfree(state);
+ }
++
++/* CI irq handler for DVBSky board*/
++int dvbsky_ci_slot_status(struct cx23885_dev *dev)
++{
++      struct cx23885_tsport *port = NULL;
++      struct netup_ci_state *state = NULL;
++
++      ci_dbg_print("%s:\n", __func__);
++
++      port = &dev->ts1;
++      state = port->port_priv;
++      schedule_work(&state->work);
++      ci_dbg_print("%s: Wakeup CI0\n", __func__);
++
++      return 1;
++}
+diff -urN a/drivers/media/pci/cx23885/cimax2.h b/drivers/media/pci/cx23885/cimax2.h
+--- a/drivers/media/pci/cx23885/cimax2.h       2013-04-29 08:36:01.000000000 +0800
++++ b/drivers/media/pci/cx23885/cimax2.h       2013-01-30 12:34:37.000000000 +0800
+@@ -41,7 +41,9 @@
+ extern int netup_ci_slot_status(struct cx23885_dev *dev, u32 pci_status);
+ extern int netup_poll_ci_slot_status(struct dvb_ca_en50221 *en50221,
+                                               int slot, int open);
+-extern int netup_ci_init(struct cx23885_tsport *port);
++extern int netup_ci_init(struct cx23885_tsport *port, bool isDVBSky);
+ extern void netup_ci_exit(struct cx23885_tsport *port);
++extern int dvbsky_ci_slot_status(struct cx23885_dev *dev);
++
+ #endif
+diff -urN a/drivers/media/pci/cx23885/cx23885-cards.c b/drivers/media/pci/cx23885/cx23885-cards.c
+--- a/drivers/media/pci/cx23885/cx23885-cards.c        2013-04-29 08:36:01.000000000 +0800
++++ b/drivers/media/pci/cx23885/cx23885-cards.c        2013-05-03 17:34:46.000000000 +0800
+@@ -569,6 +569,34 @@
+               .name           = "TeVii S471",
+               .portb          = CX23885_MPEG_DVB,
+       },
++      [CX23885_BOARD_BST_PS8512] = {
++              .name           = "Bestunar PS8512",
++              .portb          = CX23885_MPEG_DVB,
++      },
++      [CX23885_BOARD_DVBSKY_S950] = {
++              .name           = "DVBSKY S950",
++              .portb          = CX23885_MPEG_DVB,
++      },
++      [CX23885_BOARD_DVBSKY_S952] = {
++              .name           = "DVBSKY S952",
++              .portb          = CX23885_MPEG_DVB,
++              .portc          = CX23885_MPEG_DVB,
++      },
++      [CX23885_BOARD_DVBSKY_S950_CI] = {
++              .ci_type        = 3,
++              .name           = "DVBSKY S950CI DVB-S2 CI",
++              .portb          = CX23885_MPEG_DVB,
++      },
++      [CX23885_BOARD_DVBSKY_C2800E_CI] = {
++              .ci_type        = 3,
++              .name           = "DVBSKY C2800E DVB-C CI",
++              .portb          = CX23885_MPEG_DVB,
++      },
++      [CX23885_BOARD_DVBSKY_T9580] = {
++              .name           = "DVBSKY T9580",
++              .portb          = CX23885_MPEG_DVB,
++              .portc          = CX23885_MPEG_DVB,
++      },
+       [CX23885_BOARD_PROF_8000] = {
+               .name           = "Prof Revolution DVB-S2 8000",
+               .portb          = CX23885_MPEG_DVB,
+@@ -605,7 +633,7 @@
+                                 CX25840_NONE1_CH3,
+                       .amux   = CX25840_AUDIO6,
+               } },
+-      }
++      }       
+ };
+ const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards);
+@@ -818,6 +846,30 @@
+               .subdevice = 0x9022,
+               .card      = CX23885_BOARD_TEVII_S471,
+       }, {
++              .subvendor = 0x14f1,
++              .subdevice = 0x8512,
++              .card      = CX23885_BOARD_BST_PS8512,
++      }, {
++              .subvendor = 0x4254,
++              .subdevice = 0x0950,
++              .card      = CX23885_BOARD_DVBSKY_S950,         
++      }, {
++              .subvendor = 0x4254,
++              .subdevice = 0x0952,
++              .card      = CX23885_BOARD_DVBSKY_S952,
++      }, {
++              .subvendor = 0x4254,
++              .subdevice = 0x950C,
++              .card      = CX23885_BOARD_DVBSKY_S950_CI,
++      }, {
++              .subvendor = 0x4254,
++              .subdevice = 0x2800,
++              .card      = CX23885_BOARD_DVBSKY_C2800E_CI,
++      }, {
++              .subvendor = 0x4254,
++              .subdevice = 0x9580,
++              .card      = CX23885_BOARD_DVBSKY_T9580,
++      }, {
+               .subvendor = 0x8000,
+               .subdevice = 0x3034,
+               .card      = CX23885_BOARD_PROF_8000,
+@@ -1224,7 +1276,7 @@
+               cx_set(GP0_IO, 0x00040004);
+               break;
+       case CX23885_BOARD_TBS_6920:
+-      case CX23885_BOARD_PROF_8000:
++      case CX23885_BOARD_PROF_8000:   
+               cx_write(MC417_CTL, 0x00000036);
+               cx_write(MC417_OEN, 0x00001000);
+               cx_set(MC417_RWD, 0x00000002);
+@@ -1394,9 +1446,84 @@
+               cx_set(GP0_IO, 0x00040004);
+               mdelay(60);
+               break;
++      case CX23885_BOARD_DVBSKY_S950:
++      case CX23885_BOARD_BST_PS8512:                  
++              cx23885_gpio_enable(dev, GPIO_2, 1);
++              cx23885_gpio_clear(dev, GPIO_2);
++              msleep(100);            
++              cx23885_gpio_set(dev, GPIO_2);
++              break;
++      case CX23885_BOARD_DVBSKY_S952:
++      case CX23885_BOARD_DVBSKY_T9580:
++              cx_write(MC417_CTL, 0x00000037);/* enable GPIO3-18 pins */
++              
++              cx23885_gpio_enable(dev, GPIO_2, 1);
++              cx23885_gpio_enable(dev, GPIO_11, 1);
++              
++              cx23885_gpio_clear(dev, GPIO_2);
++              cx23885_gpio_clear(dev, GPIO_11);
++              msleep(100);            
++              cx23885_gpio_set(dev, GPIO_2);
++              cx23885_gpio_set(dev, GPIO_11); 
++              break;
++      case CX23885_BOARD_DVBSKY_S950_CI:
++      case CX23885_BOARD_DVBSKY_C2800E_CI:
++              /* GPIO-0 INTA from CiMax, input
++                 GPIO-1 reset CiMax, output, high active
++                 GPIO-2 reset demod, output, low active
++                 GPIO-3 to GPIO-10 data/addr for CAM
++                 GPIO-11 ~CS0 to CiMax1
++                 GPIO-12 ~CS1 to CiMax2
++                 GPIO-13 ADL0 load LSB addr
++                 GPIO-14 ADL1 load MSB addr
++                 GPIO-15 ~RDY from CiMax
++                 GPIO-17 ~RD to CiMax
++                 GPIO-18 ~WR to CiMax
++               */
++              cx_set(GP0_IO, 0x00060002); /* GPIO 1/2 as output */
++              cx_clear(GP0_IO, 0x00010004); /*GPIO 0 as input*/
++              mdelay(100);/* reset delay */
++              cx_set(GP0_IO, 0x00060004); /* GPIO as out, reset high */
++              cx_clear(GP0_IO, 0x00010002);
++              cx_write(MC417_CTL, 0x00000037);/* enable GPIO3-18 pins */
++              /* GPIO-15 IN as ~ACK, rest as OUT */
++              cx_write(MC417_OEN, 0x00001000);
++              /* ~RD, ~WR high; ADL0, ADL1 low; ~CS0, ~CS1 high */
++              cx_write(MC417_RWD, 0x0000c300);
++              /* enable irq */
++              cx_write(GPIO_ISM, 0x00000000);/* INTERRUPTS active low*/
++              break;
+       }
+ }
++static int cx23885_ir_patch(struct i2c_adapter *i2c, u8 reg, u8 mask)
++{
++      struct i2c_msg msgs[2];
++      u8 tx_buf[2], rx_buf[1];
++      /* Write register address */
++      tx_buf[0] = reg;
++      msgs[0].addr = 0x4c;
++      msgs[0].flags = 0;
++      msgs[0].len = 1;
++      msgs[0].buf = (char *) tx_buf;
++      /* Read data from register */
++      msgs[1].addr = 0x4c;
++      msgs[1].flags = I2C_M_RD;
++      msgs[1].len = 1;
++      msgs[1].buf = (char *) rx_buf;  
++      
++      i2c_transfer(i2c, msgs, 2);
++
++      tx_buf[0] = reg;
++      tx_buf[1] = rx_buf[0] | mask;
++      msgs[0].addr = 0x4c;
++      msgs[0].flags = 0;
++      msgs[0].len = 2;
++      msgs[0].buf = (char *) tx_buf;
++      
++      return i2c_transfer(i2c, msgs, 1);
++}
++
+ int cx23885_ir_init(struct cx23885_dev *dev)
+ {
+       static struct v4l2_subdev_io_pin_config ir_rxtx_pin_cfg[] = {
+@@ -1482,6 +1609,23 @@
+               v4l2_subdev_call(dev->sd_cx25840, core, s_io_pin_config,
+                                ir_rx_pin_cfg_count, ir_rx_pin_cfg);
+               break;
++      case CX23885_BOARD_BST_PS8512:
++      case CX23885_BOARD_DVBSKY_S950:
++      case CX23885_BOARD_DVBSKY_S952:
++      case CX23885_BOARD_DVBSKY_S950_CI:
++      case CX23885_BOARD_DVBSKY_C2800E_CI:
++      case CX23885_BOARD_DVBSKY_T9580:
++              dev->sd_ir = cx23885_find_hw(dev, CX23885_HW_AV_CORE);
++              if (dev->sd_ir == NULL) {
++                      ret = -ENODEV;
++                      break;
++              }
++              v4l2_subdev_call(dev->sd_cx25840, core, s_io_pin_config,
++                               ir_rx_pin_cfg_count, ir_rx_pin_cfg);
++                               
++              cx23885_ir_patch(&(dev->i2c_bus[2].i2c_adap),0x1f,0x80);
++              cx23885_ir_patch(&(dev->i2c_bus[2].i2c_adap),0x23,0x80);
++              break;
+       case CX23885_BOARD_HAUPPAUGE_HVR1250:
+               if (!enable_885_ir)
+                       break;
+@@ -1511,9 +1655,15 @@
+               cx23888_ir_remove(dev);
+               dev->sd_ir = NULL;
+               break;
++      case CX23885_BOARD_BST_PS8512:
++      case CX23885_BOARD_DVBSKY_S950:
++      case CX23885_BOARD_DVBSKY_S952:
++      case CX23885_BOARD_DVBSKY_S950_CI:
++      case CX23885_BOARD_DVBSKY_C2800E_CI:
++      case CX23885_BOARD_DVBSKY_T9580:                
+       case CX23885_BOARD_TERRATEC_CINERGY_T_PCIE_DUAL:
+       case CX23885_BOARD_TEVII_S470:
+-      case CX23885_BOARD_HAUPPAUGE_HVR1250:
++      case CX23885_BOARD_HAUPPAUGE_HVR1250:   
+       case CX23885_BOARD_MYGICA_X8507:
+               cx23885_irq_remove(dev, PCI_MSK_AV_CORE);
+               /* sd_ir is a duplicate pointer to the AV Core, just clear it */
+@@ -1556,6 +1706,12 @@
+               if (dev->sd_ir)
+                       cx23885_irq_add_enable(dev, PCI_MSK_IR);
+               break;
++      case CX23885_BOARD_BST_PS8512:
++      case CX23885_BOARD_DVBSKY_S950:
++      case CX23885_BOARD_DVBSKY_S952:
++      case CX23885_BOARD_DVBSKY_S950_CI:
++      case CX23885_BOARD_DVBSKY_C2800E_CI:
++      case CX23885_BOARD_DVBSKY_T9580:                
+       case CX23885_BOARD_TERRATEC_CINERGY_T_PCIE_DUAL:
+       case CX23885_BOARD_TEVII_S470:
+       case CX23885_BOARD_HAUPPAUGE_HVR1250:
+@@ -1657,6 +1813,10 @@
+               ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */
+               ts1->src_sel_val   = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
+               break;
++      case CX23885_BOARD_BST_PS8512:
++      case CX23885_BOARD_DVBSKY_S950:
++      case CX23885_BOARD_DVBSKY_S950_CI:
++      case CX23885_BOARD_DVBSKY_C2800E_CI:
+       case CX23885_BOARD_TEVII_S470:
+       case CX23885_BOARD_TEVII_S471:
+       case CX23885_BOARD_DVBWORLD_2005:
+@@ -1694,6 +1854,22 @@
+               ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */
+               ts1->src_sel_val   = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
+               break;
++      case CX23885_BOARD_DVBSKY_S952:
++              ts1->gen_ctrl_val  = 0x5; /* Parallel */
++              ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */
++              ts1->src_sel_val   = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
++              ts2->gen_ctrl_val  = 0xe; /* Serial bus + punctured clock */
++              ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */
++              ts2->src_sel_val   = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
++              break;
++      case CX23885_BOARD_DVBSKY_T9580:
++              ts1->gen_ctrl_val  = 0x5; /* Parallel */
++              ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */
++              ts1->src_sel_val   = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
++              ts2->gen_ctrl_val  = 0x8; /* Serial bus */
++              ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */
++              ts2->src_sel_val   = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
++              break;          
+       case CX23885_BOARD_HAUPPAUGE_HVR1250:
+       case CX23885_BOARD_HAUPPAUGE_HVR1500:
+       case CX23885_BOARD_HAUPPAUGE_HVR1500Q:
+@@ -1749,6 +1925,12 @@
+       case CX23885_BOARD_MPX885:
+       case CX23885_BOARD_MYGICA_X8507:
+       case CX23885_BOARD_TERRATEC_CINERGY_T_PCIE_DUAL:
++      case CX23885_BOARD_BST_PS8512:
++      case CX23885_BOARD_DVBSKY_S950:
++      case CX23885_BOARD_DVBSKY_S952:
++      case CX23885_BOARD_DVBSKY_S950_CI:
++      case CX23885_BOARD_DVBSKY_C2800E_CI:
++      case CX23885_BOARD_DVBSKY_T9580:
+       case CX23885_BOARD_AVERMEDIA_HC81R:
+               dev->sd_cx25840 = v4l2_i2c_new_subdev(&dev->v4l2_dev,
+                               &dev->i2c_bus[2].i2c_adap,
+diff -urN a/drivers/media/pci/cx23885/cx23885-core.c b/drivers/media/pci/cx23885/cx23885-core.c
+--- a/drivers/media/pci/cx23885/cx23885-core.c 2013-04-29 08:36:01.000000000 +0800
++++ b/drivers/media/pci/cx23885/cx23885-core.c 2013-05-03 17:36:31.000000000 +0800
+@@ -1909,6 +1909,10 @@
+                       (pci_status & PCI_MSK_GPIO0))
+               handled += altera_ci_irq(dev);
++      if (cx23885_boards[dev->board].ci_type == 3 &&
++                      (pci_status & PCI_MSK_GPIO0))
++              handled += dvbsky_ci_slot_status(dev);
++              
+       if (ts1_status) {
+               if (cx23885_boards[dev->board].portb == CX23885_MPEG_DVB)
+                       handled += cx23885_irq_ts(ts1, ts1_status);
+@@ -2144,6 +2148,8 @@
+               cx23885_irq_add_enable(dev, PCI_MSK_GPIO1 | PCI_MSK_GPIO0);
+               break;
+       case CX23885_BOARD_NETUP_DUAL_DVB_T_C_CI_RF:
++      case CX23885_BOARD_DVBSKY_S950_CI:
++      case CX23885_BOARD_DVBSKY_C2800E_CI:
+               cx23885_irq_add_enable(dev, PCI_MSK_GPIO0);
+               break;
+       }
+diff -urN a/drivers/media/pci/cx23885/cx23885-dvb.c b/drivers/media/pci/cx23885/cx23885-dvb.c
+--- a/drivers/media/pci/cx23885/cx23885-dvb.c  2013-04-29 08:36:01.000000000 +0800
++++ b/drivers/media/pci/cx23885/cx23885-dvb.c  2013-05-03 17:38:34.000000000 +0800
+@@ -51,6 +51,8 @@
+ #include "stv6110.h"
+ #include "lnbh24.h"
+ #include "cx24116.h"
++#include "m88ds3103.h"
++#include "m88dc2800.h"
+ #include "cimax2.h"
+ #include "lgs8gxx.h"
+ #include "netup-eeprom.h"
+@@ -64,8 +66,8 @@
+ #include "stv0367.h"
+ #include "drxk.h"
+ #include "mt2063.h"
+-#include "stv090x.h"
+-#include "stb6100.h"
++#include "stv090x.h"\r
++#include "stb6100.h"\r
+ #include "stb6100_cfg.h"
+ #include "tda10071.h"
+ #include "a8293.h"
+@@ -500,42 +502,130 @@
+       .if_khz = 5380,
+ };
+-static struct stv090x_config prof_8000_stv090x_config = {
+-      .device                 = STV0903,
+-      .demod_mode             = STV090x_SINGLE,
+-      .clk_mode               = STV090x_CLK_EXT,
+-      .xtal                   = 27000000,
+-      .address                = 0x6A,
+-      .ts1_mode               = STV090x_TSMODE_PARALLEL_PUNCTURED,
+-      .repeater_level         = STV090x_RPTLEVEL_64,
+-      .adc1_range             = STV090x_ADC_2Vpp,
+-      .diseqc_envelope_mode   = false,
+-
+-      .tuner_get_frequency    = stb6100_get_frequency,
+-      .tuner_set_frequency    = stb6100_set_frequency,
+-      .tuner_set_bandwidth    = stb6100_set_bandwidth,
+-      .tuner_get_bandwidth    = stb6100_get_bandwidth,
+-};
+-static struct stb6100_config prof_8000_stb6100_config = {
+-      .tuner_address = 0x60,
+-      .refclock = 27000000,
+-};
+-
+-static int p8000_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage)
++/* bst control */
++int bst_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage)
+ {
+       struct cx23885_tsport *port = fe->dvb->priv;
+       struct cx23885_dev *dev = port->dev;
++      
++      cx23885_gpio_enable(dev, GPIO_1, 1);
++      cx23885_gpio_enable(dev, GPIO_0, 1);
++
++      switch (voltage) {
++      case SEC_VOLTAGE_13:
++              cx23885_gpio_set(dev, GPIO_1);
++              cx23885_gpio_clear(dev, GPIO_0);
++              break;
++      case SEC_VOLTAGE_18:
++              cx23885_gpio_set(dev, GPIO_1);
++              cx23885_gpio_set(dev, GPIO_0);
++              break;
++      case SEC_VOLTAGE_OFF:
++              cx23885_gpio_clear(dev, GPIO_1);
++              cx23885_gpio_clear(dev, GPIO_0);
++              break;
++      }
++      return 0;
++}
+-      if (voltage == SEC_VOLTAGE_18)
+-              cx_write(MC417_RWD, 0x00001e00);
+-      else if (voltage == SEC_VOLTAGE_13)
+-              cx_write(MC417_RWD, 0x00001a00);
+-      else
+-              cx_write(MC417_RWD, 0x00001800);
++int dvbsky_set_voltage_sec(struct dvb_frontend *fe, fe_sec_voltage_t voltage)
++{
++      struct cx23885_tsport *port = fe->dvb->priv;
++      struct cx23885_dev *dev = port->dev;
++      
++      cx23885_gpio_enable(dev, GPIO_12, 1);
++      cx23885_gpio_enable(dev, GPIO_13, 1);
++
++      switch (voltage) {
++      case SEC_VOLTAGE_13:
++              cx23885_gpio_set(dev, GPIO_13);
++              cx23885_gpio_clear(dev, GPIO_12);
++              break;
++      case SEC_VOLTAGE_18:
++              cx23885_gpio_set(dev, GPIO_13);
++              cx23885_gpio_set(dev, GPIO_12);
++              break;
++      case SEC_VOLTAGE_OFF:
++              cx23885_gpio_clear(dev, GPIO_13);
++              cx23885_gpio_clear(dev, GPIO_12);
++              break;
++      }
+       return 0;
+ }
++/* bestunar single dvb-s2 */
++static struct m88ds3103_config bst_ds3103_config = {
++      .demod_address = 0x68,
++      .ci_mode = 0,
++      .pin_ctrl = 0x82,
++      .ts_mode = 0,
++      .set_voltage = bst_set_voltage,
++};
++/* DVBSKY dual dvb-s2 */
++static struct m88ds3103_config dvbsky_ds3103_config_pri = {
++      .demod_address = 0x68,
++      .ci_mode = 0,
++      .pin_ctrl = 0x82,
++      .ts_mode = 0,
++      .set_voltage = bst_set_voltage, 
++};
++static struct m88ds3103_config dvbsky_ds3103_config_sec = {
++      .demod_address = 0x68,
++      .ci_mode = 0,
++      .pin_ctrl = 0x82,
++      .ts_mode = 1,
++      .set_voltage = dvbsky_set_voltage_sec,  
++};
++
++static struct m88ds3103_config dvbsky_ds3103_ci_config = {
++      .demod_address = 0x68,
++      .ci_mode = 2,
++      .pin_ctrl = 0x82,
++      .ts_mode = 0,
++};
++
++static struct m88dc2800_config dvbsky_dc2800_config = {
++      .demod_address = 0x1c,
++      .ts_mode = 3,   
++};
++
++static struct stv090x_config prof_8000_stv090x_config = {\r
++        .device                 = STV0903,\r
++        .demod_mode             = STV090x_SINGLE,\r
++        .clk_mode               = STV090x_CLK_EXT,\r
++        .xtal                   = 27000000,\r
++        .address                = 0x6A,\r
++        .ts1_mode               = STV090x_TSMODE_PARALLEL_PUNCTURED,\r
++        .repeater_level         = STV090x_RPTLEVEL_64,\r
++        .adc1_range             = STV090x_ADC_2Vpp,\r
++        .diseqc_envelope_mode   = false,\r
++\r
++        .tuner_get_frequency    = stb6100_get_frequency,\r
++        .tuner_set_frequency    = stb6100_set_frequency,\r
++        .tuner_set_bandwidth    = stb6100_set_bandwidth,\r
++        .tuner_get_bandwidth    = stb6100_get_bandwidth,\r
++};\r
++\r
++static struct stb6100_config prof_8000_stb6100_config = {\r
++      .tuner_address = 0x60,\r
++      .refclock = 27000000,\r
++};\r
++\r
++static int p8000_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage)\r
++{\r
++      struct cx23885_tsport *port = fe->dvb->priv;\r
++      struct cx23885_dev *dev = port->dev;\r
++\r
++      if (voltage == SEC_VOLTAGE_18)\r
++              cx_write(MC417_RWD, 0x00001e00);\r
++      else if (voltage == SEC_VOLTAGE_13)\r
++              cx_write(MC417_RWD, 0x00001a00);\r
++      else\r
++              cx_write(MC417_RWD, 0x00001800);\r
++      return 0;\r
++}
++
+ static int cx23885_dvb_set_frontend(struct dvb_frontend *fe)
+ {
+       struct dtv_frontend_properties *p = &fe->dtv_property_cache;
+@@ -1250,23 +1340,79 @@
+                                       &tevii_ds3000_config,
+                                       &i2c_bus->i2c_adap);
+               break;
+-      case CX23885_BOARD_PROF_8000:
+-              i2c_bus = &dev->i2c_bus[0];
++      case CX23885_BOARD_BST_PS8512:
++      case CX23885_BOARD_DVBSKY_S950:
++              i2c_bus = &dev->i2c_bus[1];     
++              fe0->dvb.frontend = dvb_attach(m88ds3103_attach,
++                                      &bst_ds3103_config,
++                                      &i2c_bus->i2c_adap);
++              break;  
++                      
++      case CX23885_BOARD_DVBSKY_S952:
++              switch (port->nr) {
++              /* port B */
++              case 1:
++                      i2c_bus = &dev->i2c_bus[1];
++                      fe0->dvb.frontend = dvb_attach(m88ds3103_attach,
++                                              &dvbsky_ds3103_config_pri,
++                                              &i2c_bus->i2c_adap);
++                      break;
++              /* port C */
++              case 2:
++                      i2c_bus = &dev->i2c_bus[0];
++                      fe0->dvb.frontend = dvb_attach(m88ds3103_attach,
++                                              &dvbsky_ds3103_config_sec,
++                                              &i2c_bus->i2c_adap);    
++                      break;
++              }
++              break;
+-              fe0->dvb.frontend = dvb_attach(stv090x_attach,
+-                                              &prof_8000_stv090x_config,
+-                                              &i2c_bus->i2c_adap,
+-                                              STV090x_DEMODULATOR_0);
+-              if (fe0->dvb.frontend != NULL) {
+-                      if (!dvb_attach(stb6100_attach,
+-                                      fe0->dvb.frontend,
+-                                      &prof_8000_stb6100_config,
+-                                      &i2c_bus->i2c_adap))
+-                              goto frontend_detach;
++      case CX23885_BOARD_DVBSKY_S950_CI:
++              i2c_bus = &dev->i2c_bus[1];     
++              fe0->dvb.frontend = dvb_attach(m88ds3103_attach,
++                                      &dvbsky_ds3103_ci_config,
++                                      &i2c_bus->i2c_adap);
++              break;
++                              
++      case CX23885_BOARD_DVBSKY_C2800E_CI:
++              i2c_bus = &dev->i2c_bus[1];     
++              fe0->dvb.frontend = dvb_attach(m88dc2800_attach,
++                                      &dvbsky_dc2800_config,
++                                      &i2c_bus->i2c_adap);
++              break;
+-                      fe0->dvb.frontend->ops.set_voltage = p8000_set_voltage;
++      case CX23885_BOARD_DVBSKY_T9580:
++              switch (port->nr) {
++              /* port B */
++              case 1:
++                      i2c_bus = &dev->i2c_bus[1];
++                      fe0->dvb.frontend = dvb_attach(m88ds3103_attach,
++                                              &dvbsky_ds3103_config_pri,
++                                              &i2c_bus->i2c_adap);
++                      break;
++              /* port C */
++              case 2:
++                      break;
+               }
+               break;
++                              
++      case CX23885_BOARD_PROF_8000:\r
++              i2c_bus = &dev->i2c_bus[0];\r
++\r
++              fe0->dvb.frontend = dvb_attach(stv090x_attach,\r
++                                              &prof_8000_stv090x_config,\r
++                                              &i2c_bus->i2c_adap,\r
++                                              STV090x_DEMODULATOR_0);\r
++              if (fe0->dvb.frontend != NULL) {\r
++                      if (!dvb_attach(stb6100_attach,\r
++                                      fe0->dvb.frontend,\r
++                                      &prof_8000_stb6100_config,\r
++                                      &i2c_bus->i2c_adap))\r
++                              goto frontend_detach;\r
++\r
++                      fe0->dvb.frontend->ops.set_voltage = p8000_set_voltage;\r
++              }\r
++              break;
+       case CX23885_BOARD_HAUPPAUGE_HVR4400:
+               i2c_bus = &dev->i2c_bus[0];
+               fe0->dvb.frontend = dvb_attach(tda10071_attach,
+@@ -1325,7 +1471,7 @@
+               printk(KERN_INFO "NetUP Dual DVB-S2 CI card port%d MAC=%pM\n",
+                       port->nr, port->frontends.adapter.proposed_mac);
+-              netup_ci_init(port);
++              netup_ci_init(port, false);
+               break;
+               }
+       case CX23885_BOARD_NETUP_DUAL_DVB_T_C_CI_RF: {
+@@ -1352,6 +1498,41 @@
+               memcpy(port->frontends.adapter.proposed_mac, eeprom + 0xa0, 6);
+               break;
+               }
++      case CX23885_BOARD_BST_PS8512:
++      case CX23885_BOARD_DVBSKY_S950:
++      case CX23885_BOARD_DVBSKY_S952:
++      case CX23885_BOARD_DVBSKY_T9580:{
++              u8 eeprom[256]; /* 24C02 i2c eeprom */
++
++              if(port->nr > 2)
++                      break;
++
++              dev->i2c_bus[0].i2c_client.addr = 0xa0 >> 1;
++              tveeprom_read(&dev->i2c_bus[0].i2c_client, eeprom, sizeof(eeprom));
++              printk(KERN_INFO "DVBSKY PCIe MAC= %pM\n", eeprom + 0xc0+(port->nr-1)*8);
++              memcpy(port->frontends.adapter.proposed_mac, eeprom + 0xc0 + 
++                      (port->nr-1)*8, 6);
++              break;
++              }
++      case CX23885_BOARD_DVBSKY_S950_CI: {
++              u8 eeprom[256]; /* 24C02 i2c eeprom */
++
++              if(port->nr > 2)
++                      break;
++
++              dev->i2c_bus[0].i2c_client.addr = 0xa0 >> 1;
++              tveeprom_read(&dev->i2c_bus[0].i2c_client, eeprom, sizeof(eeprom));
++              printk(KERN_INFO "DVBSKY PCIe MAC= %pM\n", eeprom + 0xc0+(port->nr-1)*8);
++              memcpy(port->frontends.adapter.proposed_mac, eeprom + 0xc0 + 
++                      (port->nr-1)*8, 6);
++                      
++              netup_ci_init(port, true);
++              break;
++              }
++      case CX23885_BOARD_DVBSKY_C2800E_CI: {
++              netup_ci_init(port, true);
++              break;
++              }               
+       }
+       return ret;
+@@ -1434,6 +1615,8 @@
+       switch (port->dev->board) {
+       case CX23885_BOARD_NETUP_DUAL_DVBS2_CI:
++      case CX23885_BOARD_DVBSKY_S950_CI:
++      case CX23885_BOARD_DVBSKY_C2800E_CI:
+               netup_ci_exit(port);
+               break;
+       case CX23885_BOARD_NETUP_DUAL_DVB_T_C_CI_RF:
+diff -urN a/drivers/media/pci/cx23885/cx23885.h b/drivers/media/pci/cx23885/cx23885.h
+--- a/drivers/media/pci/cx23885/cx23885.h      2013-04-29 08:36:01.000000000 +0800
++++ b/drivers/media/pci/cx23885/cx23885.h      2013-05-03 17:14:20.000000000 +0800
+@@ -94,6 +94,14 @@
+ #define CX23885_BOARD_HAUPPAUGE_HVR4400        38
+ #define CX23885_BOARD_AVERMEDIA_HC81R          39
++#define CX23885_BOARD_BASE_INDEX             40
++#define CX23885_BOARD_BST_PS8512             (CX23885_BOARD_BASE_INDEX)
++#define CX23885_BOARD_DVBSKY_S952            (CX23885_BOARD_BASE_INDEX+1)
++#define CX23885_BOARD_DVBSKY_S950            (CX23885_BOARD_BASE_INDEX+2)
++#define CX23885_BOARD_DVBSKY_S950_CI         (CX23885_BOARD_BASE_INDEX+3)
++#define CX23885_BOARD_DVBSKY_C2800E_CI               (CX23885_BOARD_BASE_INDEX+4)
++#define CX23885_BOARD_DVBSKY_T9580           (CX23885_BOARD_BASE_INDEX+5)
++
+ #define GPIO_0 0x00000001
+ #define GPIO_1 0x00000002
+ #define GPIO_2 0x00000004
+@@ -231,7 +239,7 @@
+        */
+       u32                     clk_freq;
+       struct cx23885_input    input[MAX_CX23885_INPUT];
+-      int                     ci_type; /* for NetUP */
++      int                     ci_type; /* 1 and 2 for NetUP, 3 for DVBSky. */
+       /* Force bottom field first during DMA (888 workaround) */
+       u32                     force_bff;
+ };
+diff -urN a/drivers/media/pci/cx23885/cx23885-input.c b/drivers/media/pci/cx23885/cx23885-input.c
+--- a/drivers/media/pci/cx23885/cx23885-input.c        2013-04-29 08:36:01.000000000 +0800
++++ b/drivers/media/pci/cx23885/cx23885-input.c        2013-05-03 17:42:09.000000000 +0800
+@@ -89,6 +89,12 @@
+       case CX23885_BOARD_TERRATEC_CINERGY_T_PCIE_DUAL:
+       case CX23885_BOARD_TEVII_S470:
+       case CX23885_BOARD_HAUPPAUGE_HVR1250:
++      case CX23885_BOARD_BST_PS8512:
++      case CX23885_BOARD_DVBSKY_S950:
++      case CX23885_BOARD_DVBSKY_S952:
++      case CX23885_BOARD_DVBSKY_S950_CI:
++      case CX23885_BOARD_DVBSKY_C2800E_CI:
++      case CX23885_BOARD_DVBSKY_T9580:
+       case CX23885_BOARD_MYGICA_X8507:
+               /*
+                * The only boards we handle right now.  However other boards
+@@ -141,6 +147,12 @@
+       case CX23885_BOARD_HAUPPAUGE_HVR1850:
+       case CX23885_BOARD_HAUPPAUGE_HVR1290:
+       case CX23885_BOARD_HAUPPAUGE_HVR1250:
++      case CX23885_BOARD_BST_PS8512:
++      case CX23885_BOARD_DVBSKY_S950:
++      case CX23885_BOARD_DVBSKY_S952:
++      case CX23885_BOARD_DVBSKY_S950_CI:
++      case CX23885_BOARD_DVBSKY_C2800E_CI:
++      case CX23885_BOARD_DVBSKY_T9580:
+       case CX23885_BOARD_MYGICA_X8507:
+               /*
+                * The IR controller on this board only returns pulse widths.
+@@ -291,6 +303,18 @@
+               /* A guess at the remote */
+               rc_map = RC_MAP_TEVII_NEC;
+               break;
++      case CX23885_BOARD_BST_PS8512:
++      case CX23885_BOARD_DVBSKY_S950:
++      case CX23885_BOARD_DVBSKY_S952:
++      case CX23885_BOARD_DVBSKY_S950_CI:
++      case CX23885_BOARD_DVBSKY_C2800E_CI:
++      case CX23885_BOARD_DVBSKY_T9580:
++              /* Integrated CX2388[58] IR controller */
++              driver_type = RC_DRIVER_IR_RAW;
++              allowed_protos = RC_BIT_ALL;
++              /* A guess at the remote */
++              rc_map = RC_MAP_DVBSKY;
++              break;
+       case CX23885_BOARD_MYGICA_X8507:
+               /* Integrated CX23885 IR controller */
+               driver_type = RC_DRIVER_IR_RAW;
+diff -urN a/drivers/media/pci/cx23885/Kconfig b/drivers/media/pci/cx23885/Kconfig
+--- a/drivers/media/pci/cx23885/Kconfig        2013-04-29 08:36:01.000000000 +0800
++++ b/drivers/media/pci/cx23885/Kconfig        2013-05-03 17:43:05.000000000 +0800
+@@ -23,6 +23,8 @@
+       select DVB_STB6100 if MEDIA_SUBDRV_AUTOSELECT
+       select DVB_STV6110 if MEDIA_SUBDRV_AUTOSELECT
+       select DVB_CX24116 if MEDIA_SUBDRV_AUTOSELECT
++      select DVB_M88DS3103 if MEDIA_SUBDRV_AUTOSELECT
++      select DVB_M88DC2800 if MEDIA_SUBDRV_AUTOSELECT
+       select DVB_STV0900 if MEDIA_SUBDRV_AUTOSELECT
+       select DVB_DS3000 if MEDIA_SUBDRV_AUTOSELECT
+       select DVB_TS2020 if MEDIA_SUBDRV_AUTOSELECT
+diff -urN a/drivers/media/pci/cx88/cx88-cards.c b/drivers/media/pci/cx88/cx88-cards.c
+--- a/drivers/media/pci/cx88/cx88-cards.c      2013-04-29 08:36:01.000000000 +0800
++++ b/drivers/media/pci/cx88/cx88-cards.c      2013-05-03 17:06:55.000000000 +0800
+@@ -2309,6 +2309,18 @@
+               } },
+               .mpeg           = CX88_MPEG_DVB,
+       },
++      [CX88_BOARD_BST_PS8312] = {
++              .name           = "Bestunar PS8312 DVB-S/S2",
++              .tuner_type     = UNSET,
++              .radio_type     = UNSET,
++              .tuner_addr     = ADDR_UNSET,
++              .radio_addr     = ADDR_UNSET,
++              .input          = { {
++                      .type   = CX88_VMUX_DVB,
++                      .vmux   = 0,
++              } },
++              .mpeg           = CX88_MPEG_DVB,
++      },
+ };
+ /* ------------------------------------------------------------------ */
+@@ -2813,6 +2825,10 @@
+               .subvendor = 0x1822,
+               .subdevice = 0x0023,
+               .card      = CX88_BOARD_TWINHAN_VP1027_DVBS,
++      }, {
++              .subvendor = 0x14f1,
++              .subdevice = 0x8312,
++              .card      = CX88_BOARD_BST_PS8312,
+       },
+ };
+@@ -3547,6 +3563,12 @@
+               cx_write(MO_SRST_IO, 1);
+               msleep(100);
+               break;
++      case  CX88_BOARD_BST_PS8312:
++              cx_write(MO_GP1_IO, 0x808000);
++              msleep(100);
++              cx_write(MO_GP1_IO, 0x808080);
++              msleep(100);
++              break;
+       } /*end switch() */
+diff -urN a/drivers/media/pci/cx88/cx88-dvb.c b/drivers/media/pci/cx88/cx88-dvb.c
+--- a/drivers/media/pci/cx88/cx88-dvb.c        2013-04-29 08:36:01.000000000 +0800
++++ b/drivers/media/pci/cx88/cx88-dvb.c        2013-05-03 17:09:09.000000000 +0800
+@@ -54,6 +54,7 @@
+ #include "stv0288.h"
+ #include "stb6000.h"
+ #include "cx24116.h"
++#include "m88ds3103.h"
+ #include "stv0900.h"
+ #include "stb6100.h"
+ #include "stb6100_proc.h"
+@@ -459,6 +460,56 @@
+               return core->prev_set_voltage(fe, voltage);
+       return 0;
+ }
++/*CX88_BOARD_BST_PS8312*/
++static int bst_dvbs_set_voltage(struct dvb_frontend *fe,
++                                    fe_sec_voltage_t voltage)
++{
++      struct cx8802_dev *dev= fe->dvb->priv;
++      struct cx88_core *core = dev->core;
++
++      cx_write(MO_GP1_IO, 0x111111);
++      switch (voltage) {
++              case SEC_VOLTAGE_13:
++                      cx_write(MO_GP1_IO, 0x020200);
++                      break;
++              case SEC_VOLTAGE_18:
++                      cx_write(MO_GP1_IO, 0x020202);
++                      break;
++              case SEC_VOLTAGE_OFF:
++                      cx_write(MO_GP1_IO, 0x111100);
++                      break;
++      }
++
++      if (core->prev_set_voltage)
++              return core->prev_set_voltage(fe, voltage);
++      return 0;
++}
++
++static int bst_dvbs_set_voltage_v2(struct dvb_frontend *fe,
++                                    fe_sec_voltage_t voltage)
++{
++      struct cx8802_dev *dev= fe->dvb->priv;
++      struct cx88_core *core = dev->core;
++
++      cx_write(MO_GP1_IO, 0x111101);
++      switch (voltage) {
++              case SEC_VOLTAGE_13:
++                      cx_write(MO_GP1_IO, 0x020200);
++                      break;
++              case SEC_VOLTAGE_18:
++
++                      cx_write(MO_GP1_IO, 0x020202);
++                      break;
++              case SEC_VOLTAGE_OFF:
++
++                      cx_write(MO_GP1_IO, 0x111110);
++                      break;
++      }
++
++      if (core->prev_set_voltage)
++              return core->prev_set_voltage(fe, voltage);
++      return 0;
++}
+ static int vp1027_set_voltage(struct dvb_frontend *fe,
+                                   fe_sec_voltage_t voltage)
+@@ -706,6 +757,11 @@
+       .clk_out_div = 1,
+ };
++static struct m88ds3103_config dvbsky_ds3103_config = {
++      .demod_address = 0x68,
++      .set_ts_params = ds3000_set_ts_param,
++};
++
+ static const struct stv0900_config prof_7301_stv0900_config = {
+       .demod_address = 0x6a,
+ /*    demod_mode = 0,*/
+@@ -1477,6 +1533,35 @@
+                               &tevii_ts2020_config, &core->i2c_adap);
+                       fe0->dvb.frontend->ops.set_voltage =
+                                                       tevii_dvbs_set_voltage;
++                }             
++                break;
++      case CX88_BOARD_BST_PS8312:
++              fe0->dvb.frontend = dvb_attach(m88ds3103_attach,
++                                              &dvbsky_ds3103_config,
++                                              &core->i2c_adap);
++              if (fe0->dvb.frontend != NULL){
++                      int ret;
++                      u8 b0[] = { 0x60 };
++                      u8 b1[2] = { 0 };
++                      struct i2c_msg msg[] = {
++                              {
++                              .addr = 0x50,
++                              .flags = 0,
++                              .buf = b0,
++                              .len = 1
++                              }, {
++                              .addr = 0x50,
++                              .flags = I2C_M_RD,
++                              .buf = b1,
++                              .len = 2
++                              }
++                      };
++                      ret = i2c_transfer(&core->i2c_adap, msg, 2);
++                      printk("PS8312: config = %02x, %02x", b1[0],b1[1]);
++                      if(b1[0] == 0xaa)
++                              fe0->dvb.frontend->ops.set_voltage = bst_dvbs_set_voltage_v2;
++                      else                    
++                              fe0->dvb.frontend->ops.set_voltage = bst_dvbs_set_voltage;
+               }
+               break;
+       case CX88_BOARD_OMICOM_SS4_PCI:
+diff -urN a/drivers/media/pci/cx88/cx88.h b/drivers/media/pci/cx88/cx88.h
+--- a/drivers/media/pci/cx88/cx88.h    2013-04-29 08:36:01.000000000 +0800
++++ b/drivers/media/pci/cx88/cx88.h    2013-05-03 17:05:57.000000000 +0800
+@@ -238,6 +238,7 @@
+ #define CX88_BOARD_WINFAST_DTV1800H_XC4000 88
+ #define CX88_BOARD_WINFAST_TV2000_XP_GLOBAL_6F36 89
+ #define CX88_BOARD_WINFAST_TV2000_XP_GLOBAL_6F43 90
++#define CX88_BOARD_BST_PS8312              91
+ enum cx88_itype {
+       CX88_VMUX_COMPOSITE1 = 1,
+diff -urN a/drivers/media/pci/cx88/cx88-input.c b/drivers/media/pci/cx88/cx88-input.c
+--- a/drivers/media/pci/cx88/cx88-input.c      2013-04-29 08:36:01.000000000 +0800
++++ b/drivers/media/pci/cx88/cx88-input.c      2013-01-26 14:52:03.000000000 +0800
+@@ -419,6 +419,10 @@
+               rc_type          = RC_BIT_NEC;
+               ir->sampling     = 0xff00; /* address */
+               break;
++      case CX88_BOARD_BST_PS8312:
++              ir_codes         = RC_MAP_DVBSKY;
++              ir->sampling     = 0xff00; /* address */
++              break;
+       }
+       if (!ir_codes) {
+diff -urN a/drivers/media/pci/cx88/Kconfig b/drivers/media/pci/cx88/Kconfig
+--- a/drivers/media/pci/cx88/Kconfig   2013-04-29 08:36:01.000000000 +0800
++++ b/drivers/media/pci/cx88/Kconfig   2013-05-03 17:10:41.000000000 +0800
+@@ -57,6 +57,7 @@
+       select DVB_ISL6421 if MEDIA_SUBDRV_AUTOSELECT
+       select DVB_S5H1411 if MEDIA_SUBDRV_AUTOSELECT
+       select DVB_CX24116 if MEDIA_SUBDRV_AUTOSELECT
++      select DVB_M88DS3103 if MEDIA_SUBDRV_AUTOSELECT
+       select DVB_STV0299 if MEDIA_SUBDRV_AUTOSELECT
+       select DVB_STV0288 if MEDIA_SUBDRV_AUTOSELECT
+       select DVB_STB6000 if MEDIA_SUBDRV_AUTOSELECT
+diff -urN a/drivers/media/rc/keymaps/Makefile b/drivers/media/rc/keymaps/Makefile
+--- a/drivers/media/rc/keymaps/Makefile        2013-04-29 08:36:01.000000000 +0800
++++ b/drivers/media/rc/keymaps/Makefile        2013-05-03 17:43:41.000000000 +0800
+@@ -27,6 +27,7 @@
+                       rc-dm1105-nec.o \
+                       rc-dntv-live-dvb-t.o \
+                       rc-dntv-live-dvbt-pro.o \
++                      rc-dvbsky.o \
+                       rc-em-terratec.o \
+                       rc-encore-enltv2.o \
+                       rc-encore-enltv.o \
+diff -urN a/drivers/media/rc/keymaps/rc-dvbsky.c b/drivers/media/rc/keymaps/rc-dvbsky.c
+--- a/drivers/media/rc/keymaps/rc-dvbsky.c     1970-01-01 08:00:00.000000000 +0800
++++ b/drivers/media/rc/keymaps/rc-dvbsky.c     2013-01-26 14:52:49.000000000 +0800
+@@ -0,0 +1,78 @@
++/* rc-dvbsky.c - Keytable for Dvbsky Remote Controllers
++ *
++ * keymap imported from ir-keymaps.c
++ *
++ *
++ * Copyright (c) 2010-2012 by Nibble Max <nibble.max@gmail.com>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ */
++
++#include <media/rc-map.h>
++#include <linux/module.h>
++/*
++ * This table contains the complete RC5 code, instead of just the data part
++ */
++
++static struct rc_map_table rc5_dvbsky[] = {
++      { 0x0000, KEY_0 },
++      { 0x0001, KEY_1 },
++      { 0x0002, KEY_2 },
++      { 0x0003, KEY_3 },
++      { 0x0004, KEY_4 },
++      { 0x0005, KEY_5 },
++      { 0x0006, KEY_6 },
++      { 0x0007, KEY_7 },
++      { 0x0008, KEY_8 },
++      { 0x0009, KEY_9 },
++      { 0x000a, KEY_MUTE },
++      { 0x000d, KEY_OK },
++      { 0x000b, KEY_STOP },
++      { 0x000c, KEY_EXIT },
++      { 0x000e, KEY_CAMERA }, /*Snap shot*/
++      { 0x000f, KEY_SUBTITLE }, /*PIP*/
++      { 0x0010, KEY_VOLUMEUP },
++      { 0x0011, KEY_VOLUMEDOWN },
++      { 0x0012, KEY_FAVORITES },
++      { 0x0013, KEY_LIST }, /*Info*/
++      { 0x0016, KEY_PAUSE },
++      { 0x0017, KEY_PLAY },
++      { 0x001f, KEY_RECORD },
++      { 0x0020, KEY_CHANNELDOWN },
++      { 0x0021, KEY_CHANNELUP },
++      { 0x0025, KEY_POWER2 },
++      { 0x0026, KEY_REWIND },
++      { 0x0027, KEY_FASTFORWARD },
++      { 0x0029, KEY_LAST },
++      { 0x002b, KEY_MENU },
++      { 0x002c, KEY_EPG },
++      { 0x002d, KEY_ZOOM },
++};
++
++static struct rc_map_list rc5_dvbsky_map = {
++      .map = {
++              .scan    = rc5_dvbsky,
++              .size    = ARRAY_SIZE(rc5_dvbsky),
++              .rc_type = RC_TYPE_RC5,
++              .name    = RC_MAP_DVBSKY,
++      }
++};
++
++static int __init init_rc_map_rc5_dvbsky(void)
++{
++      return rc_map_register(&rc5_dvbsky_map);
++}
++
++static void __exit exit_rc_map_rc5_dvbsky(void)
++{
++      rc_map_unregister(&rc5_dvbsky_map);
++}
++
++module_init(init_rc_map_rc5_dvbsky)
++module_exit(exit_rc_map_rc5_dvbsky)
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Nibble Max <nibble.max@gmail.com>");
+diff -urN a/drivers/media/usb/dvb-usb-v2/dvbsky.c b/drivers/media/usb/dvb-usb-v2/dvbsky.c
+--- a/drivers/media/usb/dvb-usb-v2/dvbsky.c    1970-01-01 08:00:00.000000000 +0800
++++ b/drivers/media/usb/dvb-usb-v2/dvbsky.c    2013-05-03 17:47:38.000000000 +0800
+@@ -0,0 +1,665 @@
++/*
++ * Driver for DVBSky USB2.0 receiver
++ *
++ * Copyright (C) 2013 Max nibble <nibble.max@gmail.com>
++ *
++ * CIMax code is copied and modified from:
++ * CIMax2(R) SP2 driver in conjunction with NetUp Dual DVB-S2 CI card
++ * Copyright (C) 2009 NetUP Inc.
++ * Copyright (C) 2009 Igor M. Liplianin <liplianin@netup.ru>
++ * Copyright (C) 2009 Abylay Ospan <aospan@netup.ru>
++ *
++ *    This program is free software; you can redistribute it and/or modify
++ *    it under the terms of the GNU General Public License as published by
++ *    the Free Software Foundation; either version 2 of the License, or
++ *    (at your option) any later version.
++ *
++ *    This program is distributed in the hope that it will be useful,
++ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
++ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ *    GNU General Public License for more details.
++ *
++ *    You should have received a copy of the GNU General Public License
++ *    along with this program; if not, write to the Free Software
++ *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++ */
++
++#include "dvb_ca_en50221.h"
++#include "dvb_usb.h"
++#include "m88ds3103.h"
++
++static int dvbsky_debug;
++module_param(dvbsky_debug, int, 0644);
++MODULE_PARM_DESC(dvbsky_debug, "Activates dvbsky usb debugging (default:0)");
++
++#define DVBSKY_CI_CTL         0x04
++#define DVBSKY_CI_RD          1
++
++#define dprintk(args...) \
++      do { \
++              if (dvbsky_debug) \
++                      printk(KERN_INFO "dvbsky_usb: " args); \
++      } while (0)
++
++DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
++
++struct dvbsky_state {
++      struct mutex stream_mutex;
++      u8 has_ci;
++      u8 ci_attached;
++      struct dvb_ca_en50221 ci;
++      unsigned long next_status_checked_time;
++      u8 ci_i2c_addr;
++      u8 current_ci_flag;
++      int ci_status;
++};
++
++static int dvbsky_stream_ctrl(struct dvb_usb_device *d, u8 onoff)
++{
++      struct dvbsky_state *state = d_to_priv(d);
++      int ret;
++      u8 obuf_pre[3] = { 0x37, 0, 0 };
++      u8 obuf_post[3] = { 0x36, 3, 0 };
++      dprintk("%s() -off \n", __func__);
++      mutex_lock(&state->stream_mutex);
++      ret = dvb_usbv2_generic_write(d, obuf_pre, 3);
++      if (!ret && onoff) {
++              msleep(10);
++              ret = dvb_usbv2_generic_write(d, obuf_post, 3);
++              dprintk("%s() -on \n", __func__);
++      }
++      mutex_unlock(&state->stream_mutex);
++      return ret;
++}
++
++/* CI opertaions */
++static int dvbsky_ci_read_i2c(struct i2c_adapter *i2c_adap, u8 addr, u8 reg,
++                                              u8 *buf, int len)
++{
++      int ret;
++      struct i2c_msg msg[] = {
++              {
++                      .addr   = addr,
++                      .flags  = 0,
++                      .buf    = &reg,
++                      .len    = 1
++              }, {
++                      .addr   = addr,
++                      .flags  = I2C_M_RD,
++                      .buf    = buf,
++                      .len    = len
++              }
++      };
++      
++      ret = i2c_transfer(i2c_adap, msg, 2);
++      
++      if (ret != 2) {
++              dprintk("%s: error, Reg = 0x%02x, Status = %d\n", __func__, reg, ret);
++              return -1;
++      }
++      return 0;
++}
++
++static int dvbsky_ci_write_i2c(struct i2c_adapter *i2c_adap, u8 addr, u8 reg,
++                                              u8 *buf, int len)
++{
++      int ret;
++      u8 buffer[len + 1];
++
++      struct i2c_msg msg = {
++              .addr   = addr,
++              .flags  = 0,
++              .buf    = &buffer[0],
++              .len    = len + 1
++      };
++
++      buffer[0] = reg;
++      memcpy(&buffer[1], buf, len);
++
++      ret = i2c_transfer(i2c_adap, &msg, 1);
++
++      if (ret != 1) {
++              dprintk("%s: error, Reg=[0x%02x], Status=%d\n", __func__, reg, ret);
++              return -1;
++      }
++      return 0;
++}
++
++static int dvbsky_ci_op_cam(struct dvb_ca_en50221 *ci, int slot,
++                              u8 flag, u8 read, int addr, u8 data)
++{
++      struct dvb_usb_device *d = ci->data;
++      struct dvbsky_state *state = d_to_priv(d);      
++      u8 store;
++      int ret;
++      u8 command[4], respond[2], command_size, respond_size;
++
++      /*dprintk("%s()\n", __func__);*/
++      if (0 != slot)
++              return -EINVAL;
++
++      if (state->current_ci_flag != flag) {
++              ret = dvbsky_ci_read_i2c(&d->i2c_adap, state->ci_i2c_addr,
++                              0, &store, 1);
++              if (ret != 0)
++                      return ret;
++
++              store &= ~0x0c;
++              store |= flag;
++
++              ret = dvbsky_ci_write_i2c(&d->i2c_adap, state->ci_i2c_addr,
++                              0, &store, 1);
++              if (ret != 0)
++                      return ret;
++      }
++      state->current_ci_flag = flag;
++
++      command[1] = (u8)((addr >> 8) & 0xff); /*high part of address*/
++      command[2] = (u8)(addr & 0xff); /*low part of address*/
++      if (read) {
++              command[0] = 0x71;
++              command_size = 3;
++              respond_size = 2;
++      } else {
++              command[0] = 0x70;
++              command[3] = data;
++              command_size = 4;
++              respond_size = 1;
++      }
++      ret = dvb_usbv2_generic_rw(d, command, command_size, respond, respond_size);
++
++      return (read) ? respond[1] : 0;
++}
++
++static int dvbsky_ci_read_attribute_mem(struct dvb_ca_en50221 *ci,
++                                              int slot, int addr)
++{
++      return dvbsky_ci_op_cam(ci, slot, 0, DVBSKY_CI_RD, addr, 0);
++}
++
++static int dvbsky_ci_write_attribute_mem(struct dvb_ca_en50221 *ci,
++                                              int slot, int addr, u8 data)
++{
++      return dvbsky_ci_op_cam(ci, slot, 0, 0, addr, data);
++}
++
++static int dvbsky_ci_read_cam_ctl(struct dvb_ca_en50221 *ci, int slot, u8 addr)
++{
++      return dvbsky_ci_op_cam(ci, slot, DVBSKY_CI_CTL, DVBSKY_CI_RD, addr, 0);
++}
++
++static int dvbsky_ci_write_cam_ctl(struct dvb_ca_en50221 *ci, int slot,
++                                                      u8 addr, u8 data)
++{
++      return dvbsky_ci_op_cam(ci, slot, DVBSKY_CI_CTL, 0, addr, data);
++}
++
++static int dvbsky_ci_slot_reset(struct dvb_ca_en50221 *ci, int slot)
++{
++      struct dvb_usb_device *d = ci->data;
++      struct dvbsky_state *state = d_to_priv(d);
++      u8 buf =  0x80;
++      int ret;
++      dprintk("%s() slot=%d\n", __func__, slot);
++
++      if (0 != slot)
++              return -EINVAL;
++
++      udelay(500);
++      ret = dvbsky_ci_write_i2c(&d->i2c_adap, state->ci_i2c_addr,
++                                                      0, &buf, 1);
++
++      if (ret != 0)
++              return ret;
++
++      udelay(500);
++
++      buf = 0x00;
++      ret = dvbsky_ci_write_i2c(&d->i2c_adap, state->ci_i2c_addr,
++                                                      0, &buf, 1);
++      msleep(1000);
++      dprintk("%s() slot=%d complete\n", __func__, slot);
++      return 0;
++
++}
++
++static int dvbsky_ci_slot_shutdown(struct dvb_ca_en50221 *ci, int slot)
++{
++      /* not implemented */
++      dprintk("%s()\n", __func__);
++      return 0;
++}
++
++static int dvbsky_ci_slot_ts_enable(struct dvb_ca_en50221 *ci, int slot)
++{
++      struct dvb_usb_device *d = ci->data;
++      struct dvbsky_state *state = d_to_priv(d);
++      u8 buf;
++      int ret;
++
++      dprintk("%s()\n", __func__);
++      if (0 != slot)
++              return -EINVAL;
++
++      dvbsky_ci_read_i2c(&d->i2c_adap, state->ci_i2c_addr,
++                      0, &buf, 1);
++      buf |= 0x60;
++
++      ret = dvbsky_ci_write_i2c(&d->i2c_adap, state->ci_i2c_addr,
++                                                      0, &buf, 1);
++      return ret;
++}
++
++static int dvbsky_ci_poll_slot_status(struct dvb_ca_en50221 *ci, int slot,
++      int open)
++{
++      struct dvb_usb_device *d = ci->data;
++      struct dvbsky_state *state = d_to_priv(d);
++      int ret = 0;
++      u8 buf = 0;
++      /*dprintk("%s()\n", __func__);*/
++
++      /* CAM module INSERT/REMOVE processing. slow operation because of i2c
++       * transfers */
++      if (time_after(jiffies, state->next_status_checked_time)) {
++              ret = dvbsky_ci_read_i2c(&d->i2c_adap, state->ci_i2c_addr,
++                              0, &buf, 1);
++
++              /*dprintk("%s() status=%x\n", __func__, buf);*/
++              
++              state->next_status_checked_time = jiffies
++                      + msecs_to_jiffies(1000);
++
++              if (ret != 0)
++                      return 0;
++
++              if (buf & 1) {
++                      state->ci_status = DVB_CA_EN50221_POLL_CAM_PRESENT |
++                              DVB_CA_EN50221_POLL_CAM_READY;
++              }
++              else
++                      state->ci_status = 0;
++      }
++      /*dprintk("%s() ret=%x\n", __func__, state->ci_status);*/
++      return state->ci_status;
++}
++
++static int dvbsky_ci_init(struct dvb_usb_device *d)
++{
++      struct dvbsky_state *state = d_to_priv(d);
++      int ret;
++      u8 cimax_init[34] = {
++              0x00, /* module A control*/
++              0x00, /* auto select mask high A */
++              0x00, /* auto select mask low A */
++              0x00, /* auto select pattern high A */
++              0x00, /* auto select pattern low A */
++              0x44, /* memory access time A */
++              0x00, /* invert input A */
++              0x00, /* RFU */
++              0x00, /* RFU */
++              0x00, /* module B control*/
++              0x00, /* auto select mask high B */
++              0x00, /* auto select mask low B */
++              0x00, /* auto select pattern high B */
++              0x00, /* auto select pattern low B */
++              0x44, /* memory access time B */
++              0x00, /* invert input B */
++              0x00, /* RFU */
++              0x00, /* RFU */
++              0x00, /* auto select mask high Ext */
++              0x00, /* auto select mask low Ext */
++              0x00, /* auto select pattern high Ext */
++              0x00, /* auto select pattern low Ext */
++              0x00, /* RFU */
++              0x02, /* destination - module A */
++              0x01, /* power on (use it like store place) */
++              0x00, /* RFU */
++              0x00, /* int status read only */
++              0x00, /* Max: Disable the interrupt in USB solution.*/
++              0x05, /* EXTINT=active-high, INT=push-pull */
++              0x00, /* USCG1 */
++              0x04, /* ack active low */
++              0x00, /* LOCK = 0 */
++              0x22, /* serial mode, rising in, rising out, MSB first*/
++              0x00  /* synchronization */
++      };      
++      dprintk("%s()\n", __func__);
++      state->current_ci_flag = 0xff;
++      state->ci_status = 0;
++      state->next_status_checked_time = jiffies + msecs_to_jiffies(1000);
++      state->ci_i2c_addr = 0x40;
++
++      state->ci.owner               = THIS_MODULE;
++      state->ci.read_attribute_mem  = dvbsky_ci_read_attribute_mem;
++      state->ci.write_attribute_mem = dvbsky_ci_write_attribute_mem;
++      state->ci.read_cam_control    = dvbsky_ci_read_cam_ctl;
++      state->ci.write_cam_control   = dvbsky_ci_write_cam_ctl;
++      state->ci.slot_reset          = dvbsky_ci_slot_reset;
++      state->ci.slot_shutdown       = dvbsky_ci_slot_shutdown;
++      state->ci.slot_ts_enable      = dvbsky_ci_slot_ts_enable;
++      state->ci.poll_slot_status    = dvbsky_ci_poll_slot_status;
++      state->ci.data                = d;
++
++      ret = dvbsky_ci_write_i2c(&d->i2c_adap, state->ci_i2c_addr,
++                                              0, &cimax_init[0], 34);
++      /* lock registers */
++      ret |= dvbsky_ci_write_i2c(&d->i2c_adap, state->ci_i2c_addr,
++                                              0x1f, &cimax_init[0x18], 1);
++      /* power on slots */
++      ret |= dvbsky_ci_write_i2c(&d->i2c_adap, state->ci_i2c_addr,
++                                              0x18, &cimax_init[0x18], 1);
++      if (0 != ret)
++              return ret;
++              
++      ret = dvb_ca_en50221_init(&d->adapter[0].dvb_adap, &state->ci, 0, 1);
++      if (ret)
++              return ret;
++      state->ci_attached = 1;
++      dprintk("%s() complete.\n", __func__);
++      return 0;
++}
++
++static void dvbsky_ci_release(struct dvb_usb_device *d)
++{
++      struct dvbsky_state *state = d_to_priv(d);
++
++      /* detach CI */
++      if (state->ci_attached)
++              dvb_ca_en50221_release(&state->ci);
++
++      return;
++}
++
++static int dvbsky_streaming_ctrl(struct dvb_frontend *fe, int onoff)
++{
++      struct dvb_usb_device *d = fe_to_d(fe);
++      /*dprintk("%s() %d\n", __func__, onoff);*/
++      return dvbsky_stream_ctrl(d, (onoff == 0) ? 0 : 1);
++}
++
++/* GPIO */
++static int dvbsky_gpio_ctrl(struct dvb_usb_device *d, u8 gport, u8 value)
++{
++      u8 obuf[64], ibuf[64];
++      obuf[0] = 0x0e;
++      obuf[1] = gport;
++      obuf[2] = value;
++      return dvb_usbv2_generic_rw(d, obuf, 3, ibuf, 1);
++}
++
++/* I2C */
++static int dvbsky_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msg[],
++      int num)
++{
++      struct dvb_usb_device *d = i2c_get_adapdata(adap);
++      int ret = 0;
++      u8 ibuf[64], obuf[64]; 
++
++      if (mutex_lock_interruptible(&d->i2c_mutex) < 0)
++              return -EAGAIN;
++
++      if (num > 2) {
++              printk(KERN_ERR "dvbsky_usb: too many i2c messages[%d] than 2.", num);
++              ret = -EOPNOTSUPP;
++              goto i2c_error;
++      }
++              
++      if(num == 1) {
++              if (msg[0].len > 60) {
++                      printk(KERN_ERR "dvbsky_usb: too many i2c bytes[%d] than 60.", msg[0].len);
++                      ret = -EOPNOTSUPP;
++                      goto i2c_error;
++              }
++              if (msg[0].flags & I2C_M_RD) {
++                      /* single read */
++                      obuf[0] = 0x09;
++                      obuf[1] = 0;
++                      obuf[2] = msg[0].len;
++                      obuf[3] = msg[0].addr;
++                      ret = dvb_usbv2_generic_rw(d, obuf, 4, ibuf, msg[0].len + 1);
++                      /*dprintk("%s(): read status = %d\n", __func__, ibuf[0]);*/
++                      if (!ret)
++                              memcpy(msg[0].buf, &ibuf[1], msg[0].len);
++              } else {
++                      /* write */
++                      obuf[0] = 0x08;
++                      obuf[1] = msg[0].addr;
++                      obuf[2] = msg[0].len;
++                      memcpy(&obuf[3], msg[0].buf, msg[0].len);
++                      ret = dvb_usbv2_generic_rw(d, obuf, msg[0].len + 3, ibuf, 1);
++                      /*dprintk("%s(): write status = %d\n", __func__, ibuf[0]);*/
++              }
++      } else {
++              if ((msg[0].len > 60) || (msg[1].len > 60)) {
++                      printk(KERN_ERR "dvbsky_usb: too many i2c bytes[w-%d][r-%d] than 60.", msg[0].len, msg[1].len);
++                      ret = -EOPNOTSUPP;
++                      goto i2c_error;
++              }
++              /* write then read */
++              obuf[0] = 0x09;
++              obuf[1] = msg[0].len;
++              obuf[2] = msg[1].len;
++              obuf[3] = msg[0].addr;
++              memcpy(&obuf[4], msg[0].buf, msg[0].len);
++              ret = dvb_usbv2_generic_rw(d, obuf, msg[0].len + 4, ibuf, msg[1].len + 1);
++              /*dprintk("%s(): write then read status = %d\n", __func__, ibuf[0]);*/
++              if (!ret)
++                      memcpy(msg[1].buf, &ibuf[1], msg[1].len);
++      }
++i2c_error:
++      mutex_unlock(&d->i2c_mutex);
++      return (ret) ? ret : num;
++}
++
++static u32 dvbsky_i2c_func(struct i2c_adapter *adapter)
++{
++      return I2C_FUNC_I2C;
++}
++
++static struct i2c_algorithm dvbsky_i2c_algo = {
++      .master_xfer   = dvbsky_i2c_xfer,
++      .functionality = dvbsky_i2c_func,
++};
++
++#if IS_ENABLED(CONFIG_RC_CORE)
++static int dvbsky_rc_query(struct dvb_usb_device *d)
++{
++      u32 code = 0xffff;
++      u8 obuf[2], ibuf[2], toggle;
++      int ret;
++      obuf[0] = 0x10;
++      ret = dvb_usbv2_generic_rw(d, obuf, 1, ibuf, 2);
++      if(ret == 0)
++              code = (ibuf[0] << 8) | ibuf[1];
++
++      if (code != 0xffff) {
++              dprintk("rc code: %x", code);
++              toggle = (code & 0x800) ? 1 : 0;
++              code &= 0x3f;
++              rc_keydown(d->rc_dev, code, toggle);
++      }
++      return 0;
++}
++
++static int dvbsky_get_rc_config(struct dvb_usb_device *d, struct dvb_usb_rc *rc)
++{
++      rc->allowed_protos = RC_BIT_RC5;
++      rc->query          = dvbsky_rc_query;
++      rc->interval       = 300;
++      return 0;
++}
++#else
++      #define dvbsky_get_rc_config NULL
++#endif
++
++static int dvbsky_sync_ctrl(struct dvb_frontend *fe)
++{
++      struct dvb_usb_device *d = fe_to_d(fe);
++      return dvbsky_stream_ctrl(d, 1);
++}
++
++static int dvbsky_usb_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage)
++{
++      struct dvb_usb_device *d = fe_to_d(fe);
++      u8 value;
++
++      if (voltage == SEC_VOLTAGE_OFF)
++              value = 0;
++      else
++              value = 1;
++      return dvbsky_gpio_ctrl(d, 0x80, value);
++}
++
++static int dvbsky_read_mac_addr(struct dvb_usb_adapter *adap, u8 mac[6])
++{
++      struct dvb_usb_device *d = adap_to_d(adap);
++      u8 obuf[] = { 0x1e, 0x00 };
++      u8 ibuf[6] = { 0 };
++      struct i2c_msg msg[] = {
++              {
++                      .addr = 0x51,
++                      .flags = 0,
++                      .buf = obuf,
++                      .len = 2,
++              }, {
++                      .addr = 0x51,
++                      .flags = I2C_M_RD,
++                      .buf = ibuf,
++                      .len = 6,
++
++              }
++      };
++      
++      if (i2c_transfer(&d->i2c_adap, msg, 2) == 2)
++              memcpy(mac, ibuf, 6);
++
++      printk(KERN_INFO "dvbsky_usb MAC address=%pM\n", mac);
++      
++      return 0;
++}
++
++static struct m88ds3103_config dvbsky_usb_ds3103_config = {
++      .demod_address = 0x68,
++      .ci_mode = 1,
++      .pin_ctrl = 0x83,
++      .ts_mode = 0,
++      .start_ctrl = dvbsky_sync_ctrl,
++      .set_voltage = dvbsky_usb_set_voltage,
++};
++
++static int dvbsky_s960_attach(struct dvb_usb_adapter *adap)
++{
++      struct dvbsky_state *state = adap_to_priv(adap);
++      struct dvb_usb_device *d = adap_to_d(adap);
++      int ret = 0;
++      
++      dprintk("%s()\n", __func__);
++
++      dvbsky_gpio_ctrl(d, 0x04, 1);
++              
++      dvbsky_gpio_ctrl(d, 0x83, 0);
++      msleep(50);
++      dvbsky_gpio_ctrl(d, 0x83, 1);
++      msleep(20);
++      
++      adap->fe[0] = dvb_attach(m88ds3103_attach,
++                              &dvbsky_usb_ds3103_config,
++                              &d->i2c_adap);
++      if (!adap->fe[0]) {
++              printk(KERN_ERR "dvbsky_s960_attach fail.");
++              ret = -ENODEV;
++      }
++      
++      state->has_ci = 0;
++
++      return ret;
++}
++
++static int dvbsky_identify_state(struct dvb_usb_device *d, const char **name)
++{
++      return WARM;
++}
++
++static int dvbsky_init(struct dvb_usb_device *d)
++{
++      struct dvbsky_state *state = d_to_priv(d);
++      int ret;
++
++      /* use default interface */
++      ret = usb_set_interface(d->udev, 0, 0);
++      if (ret)
++              return ret;
++
++      mutex_init(&state->stream_mutex);
++      
++      /* attach CI */
++      if (state->has_ci) {
++              dvbsky_gpio_ctrl(d, 0xc0, 1);
++              msleep(100);
++              dvbsky_gpio_ctrl(d, 0xc0, 0);
++              msleep(50);
++              state->ci_attached = 0;
++              ret = dvbsky_ci_init(d);
++              if (ret)
++                      return ret;
++      }
++      return 0;
++}
++
++static void dvbsky_exit(struct dvb_usb_device *d)
++{
++      return dvbsky_ci_release(d);
++}
++
++/* DVB USB Driver stuff */
++static struct dvb_usb_device_properties dvbsky_s960_props = {
++      .driver_name = KBUILD_MODNAME,
++      .owner = THIS_MODULE,
++      .adapter_nr = adapter_nr,
++      .size_of_priv = sizeof(struct dvbsky_state),
++
++      .generic_bulk_ctrl_endpoint = 0x01,
++      .generic_bulk_ctrl_endpoint_response = 0x81,
++
++      .i2c_algo         = &dvbsky_i2c_algo,
++      .frontend_attach  = dvbsky_s960_attach,
++      .init             = dvbsky_init,
++      .get_rc_config    = dvbsky_get_rc_config,
++      .streaming_ctrl   = dvbsky_streaming_ctrl,
++      .identify_state   = dvbsky_identify_state,
++      .exit             = dvbsky_exit,
++      .read_mac_address = dvbsky_read_mac_addr,
++
++      .num_adapters = 1,
++      .adapter = {
++              {
++                      .stream = DVB_USB_STREAM_BULK(0x82, 8, 4096),
++              }
++      }
++};
++
++static const struct usb_device_id dvbsky_id_table[] = {
++      { DVB_USB_DEVICE(0x0572, 0x6831,
++              &dvbsky_s960_props, "DVBSky S960/S860", RC_MAP_DVBSKY) },
++      { }
++};
++MODULE_DEVICE_TABLE(usb, dvbsky_id_table);
++
++static struct usb_driver dvbsky_usb_driver = {
++      .name = KBUILD_MODNAME,
++      .id_table = dvbsky_id_table,
++      .probe = dvb_usbv2_probe,
++      .disconnect = dvb_usbv2_disconnect,
++      .suspend = dvb_usbv2_suspend,
++      .resume = dvb_usbv2_resume,
++      .reset_resume = dvb_usbv2_reset_resume,
++      .no_dynamic_id = 1,
++      .soft_unbind = 1,
++};
++
++module_usb_driver(dvbsky_usb_driver);
++
++MODULE_AUTHOR("Max nibble <nibble.max@gmail.com>");
++MODULE_DESCRIPTION("Driver for DVBSky USB2.0");
++MODULE_LICENSE("GPL");
+diff -urN a/drivers/media/usb/dvb-usb-v2/Kconfig b/drivers/media/usb/dvb-usb-v2/Kconfig
+--- a/drivers/media/usb/dvb-usb-v2/Kconfig     2013-04-29 08:36:01.000000000 +0800
++++ b/drivers/media/usb/dvb-usb-v2/Kconfig     2013-05-03 17:45:35.000000000 +0800
+@@ -149,3 +149,10 @@
+       help
+         Say Y here to support the Realtek RTL28xxU DVB USB receiver.
++config DVB_USB_DVBSKY
++      tristate "DVBSky USB2.0 support"
++      depends on DVB_USB_V2
++      select DVB_M88DS3103 if MEDIA_SUBDRV_AUTOSELECT
++      help
++        Say Y here to support the USB receivers from DVBSky.
++
+diff -urN a/drivers/media/usb/dvb-usb-v2/Makefile b/drivers/media/usb/dvb-usb-v2/Makefile
+--- a/drivers/media/usb/dvb-usb-v2/Makefile    2013-04-29 08:36:01.000000000 +0800
++++ b/drivers/media/usb/dvb-usb-v2/Makefile    2013-02-17 12:03:00.000000000 +0800
+@@ -43,6 +43,9 @@
+ dvb-usb-rtl28xxu-objs := rtl28xxu.o
+ obj-$(CONFIG_DVB_USB_RTL28XXU) += dvb-usb-rtl28xxu.o
++dvb-usb-dvbsky-objs := dvbsky.o
++obj-$(CONFIG_DVB_USB_DVBSKY) += dvb-usb-dvbsky.o
++
+ ccflags-y += -I$(srctree)/drivers/media/dvb-core
+ ccflags-y += -I$(srctree)/drivers/media/dvb-frontends
+ ccflags-y += -I$(srctree)/drivers/media/tuners
+diff -urN a/include/media/rc-map.h b/include/media/rc-map.h
+--- a/include/media/rc-map.h   2013-04-29 08:36:01.000000000 +0800
++++ b/include/media/rc-map.h   2013-05-03 17:02:46.000000000 +0800
+@@ -118,6 +118,7 @@
+ #define RC_MAP_DM1105_NEC                "rc-dm1105-nec"
+ #define RC_MAP_DNTV_LIVE_DVBT_PRO        "rc-dntv-live-dvbt-pro"
+ #define RC_MAP_DNTV_LIVE_DVB_T           "rc-dntv-live-dvb-t"
++#define RC_MAP_DVBSKY                    "rc-dvbsky"
+ #define RC_MAP_EMPTY                     "rc-empty"
+ #define RC_MAP_EM_TERRATEC               "rc-em-terratec"
+ #define RC_MAP_ENCORE_ENLTV2             "rc-encore-enltv2"
diff --git a/src/patches/net-tools-1.60-kernel_headers-3.patch b/src/patches/net-tools-1.60-kernel_headers-3.patch
new file mode 100644 (file)
index 0000000..89988f0
--- /dev/null
@@ -0,0 +1,55 @@
+diff -Naur net-tools-1.60.org/hostname.c net-tools-1.60/hostname.c
+--- net-tools-1.60.org/hostname.c      2001-04-08 19:04:23.000000000 +0200
++++ net-tools-1.60/hostname.c  2013-08-26 11:56:50.131844273 +0200
+@@ -42,10 +42,16 @@
+ #include "config.h"
+ #include "version.h"
+ #include "../intl.h"
++#include <linux/version.h>
+ #if HAVE_AFDECnet
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 0)
+ #include <netdnet/dn.h>
+ #endif
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0)
++#include <linux/dn.h>
++#endif
++#endif
+ char *Release = RELEASE, *Version = "hostname 1.100 (2001-04-14)";
+diff -Naur net-tools-1.60.org/lib/tr.c net-tools-1.60/lib/tr.c
+--- net-tools-1.60.org/lib/tr.c        2000-02-20 22:46:45.000000000 +0100
++++ net-tools-1.60/lib/tr.c    2013-08-26 11:57:33.675175033 +0200
+@@ -20,7 +20,7 @@
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #include <net/if_arp.h>
+-#include <linux/if_tr.h>
++#include <netinet/if_tr.h>
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <errno.h>
+diff -Naur net-tools-1.60.org/lib/x25_sr.c net-tools-1.60/lib/x25_sr.c
+--- net-tools-1.60.org/lib/x25_sr.c    2000-05-20 15:38:10.000000000 +0200
++++ net-tools-1.60/lib/x25_sr.c        2013-08-26 11:56:50.131844273 +0200
+@@ -22,6 +22,7 @@
+ #include <sys/socket.h>
+ #include <sys/ioctl.h>
+ #include <linux/x25.h>
++#include <linux/version.h>
+ #include <ctype.h>
+ #include <errno.h>
+ #include <netdb.h>
+@@ -77,7 +78,11 @@
+   rt.sigdigits=sigdigits;
+   /* x25_route_struct.address isn't type struct sockaddr_x25, Why? */
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
+   memcpy(&rt.address, &sx25.sx25_addr, sizeof(x25_address));
++#else
++  memcpy(&rt.address, &sx25.sx25_addr, sizeof(struct x25_address));
++#endif
+   while (*args) {
+       if (!strcmp(*args,"device") || !strcmp(*args,"dev")) {
diff --git a/src/patches/netfilter_layer7_2.22_kernel3.10-no_proc_interface.patch b/src/patches/netfilter_layer7_2.22_kernel3.10-no_proc_interface.patch
new file mode 100644 (file)
index 0000000..5ffdd49
--- /dev/null
@@ -0,0 +1,2166 @@
+diff -Naur linux-3.10.5.org/include/linux/netfilter/xt_layer7.h linux-3.10.5/include/linux/netfilter/xt_layer7.h
+--- linux-3.10.5.org/include/linux/netfilter/xt_layer7.h       1970-01-01 01:00:00.000000000 +0100
++++ linux-3.10.5/include/linux/netfilter/xt_layer7.h   2013-08-07 06:16:14.260806739 +0200
+@@ -0,0 +1,13 @@
++#ifndef _XT_LAYER7_H
++#define _XT_LAYER7_H
++
++#define MAX_PATTERN_LEN 8192
++#define MAX_PROTOCOL_LEN 256
++
++struct xt_layer7_info {
++    char protocol[MAX_PROTOCOL_LEN];
++    char pattern[MAX_PATTERN_LEN];
++    u_int8_t invert;
++};
++
++#endif /* _XT_LAYER7_H */
+diff -Naur linux-3.10.5.org/include/net/netfilter/nf_conntrack.h linux-3.10.5/include/net/netfilter/nf_conntrack.h
+--- linux-3.10.5.org/include/net/netfilter/nf_conntrack.h      2013-08-04 10:51:49.000000000 +0200
++++ linux-3.10.5/include/net/netfilter/nf_conntrack.h  2013-08-07 06:16:14.280806062 +0200
+@@ -105,6 +105,22 @@
+       struct net *ct_net;
+ #endif
++#if defined(CONFIG_NETFILTER_XT_MATCH_LAYER7) || \
++ defined(CONFIG_NETFILTER_XT_MATCH_LAYER7_MODULE)
++      struct {
++              /*
++               * e.g. "http". NULL before decision. "unknown" after decision
++               * if no match.
++               */
++              char *app_proto;
++              /*
++               * application layer data so far. NULL after match decision.
++               */
++              char *app_data;
++              unsigned int app_data_len;
++      } layer7;
++#endif
++
+       /* Storage reserved for other modules, must be the last member */
+       union nf_conntrack_proto proto;
+ };
+diff -Naur linux-3.10.5.org/net/netfilter/Kconfig linux-3.10.5/net/netfilter/Kconfig
+--- linux-3.10.5.org/net/netfilter/Kconfig     2013-08-04 10:51:49.000000000 +0200
++++ linux-3.10.5/net/netfilter/Kconfig 2013-08-07 06:16:14.310805048 +0200
+@@ -1205,6 +1205,26 @@
+         To compile it as a module, choose M here.  If unsure, say N.
++config NETFILTER_XT_MATCH_LAYER7
++      tristate '"layer7" match support'
++      depends on NETFILTER_XTABLES
++      depends on IP_NF_CONNTRACK || NF_CONNTRACK
++      help
++        Say Y if you want to be able to classify connections (and their
++        packets) based on regular expression matching of their application
++        layer data.   This is one way to classify applications such as
++        peer-to-peer filesharing systems that do not always use the same
++        port.
++
++        To compile it as a module, choose M here.  If unsure, say N.
++
++config NETFILTER_XT_MATCH_LAYER7_DEBUG
++        bool 'Layer 7 debugging output'
++        depends on NETFILTER_XT_MATCH_LAYER7
++        help
++          Say Y to get lots of debugging output.
++
++
+ config NETFILTER_XT_MATCH_STATISTIC
+       tristate '"statistic" match support'
+       depends on NETFILTER_ADVANCED
+diff -Naur linux-3.10.5.org/net/netfilter/Makefile linux-3.10.5/net/netfilter/Makefile
+--- linux-3.10.5.org/net/netfilter/Makefile    2013-08-04 10:51:49.000000000 +0200
++++ linux-3.10.5/net/netfilter/Makefile        2013-08-07 06:16:14.320804710 +0200
+@@ -134,6 +134,7 @@
+ obj-$(CONFIG_NETFILTER_XT_MATCH_SCTP) += xt_sctp.o
+ obj-$(CONFIG_NETFILTER_XT_MATCH_SOCKET) += xt_socket.o
+ obj-$(CONFIG_NETFILTER_XT_MATCH_STATE) += xt_state.o
++obj-$(CONFIG_NETFILTER_XT_MATCH_LAYER7) += xt_layer7.o
+ obj-$(CONFIG_NETFILTER_XT_MATCH_STATISTIC) += xt_statistic.o
+ obj-$(CONFIG_NETFILTER_XT_MATCH_STRING) += xt_string.o
+ obj-$(CONFIG_NETFILTER_XT_MATCH_TCPMSS) += xt_tcpmss.o
+diff -Naur linux-3.10.5.org/net/netfilter/nf_conntrack_core.c linux-3.10.5/net/netfilter/nf_conntrack_core.c
+--- linux-3.10.5.org/net/netfilter/nf_conntrack_core.c 2013-08-04 10:51:49.000000000 +0200
++++ linux-3.10.5/net/netfilter/nf_conntrack_core.c     2013-08-07 06:20:34.941991510 +0200
+@@ -1,3 +1,6 @@
++
++
++
+ /* Connection state tracking for netfilter.  This is separated from,
+    but required by, the NAT layer; it can also be used by an iptables
+    extension. */
+@@ -224,6 +227,13 @@
+        * too. */
+       nf_ct_remove_expectations(ct);
++      #if defined(CONFIG_NETFILTER_XT_MATCH_LAYER7) || defined(CONFIG_NETFILTER_XT_MATCH_LAYER7_MODULE)
++      if(ct->layer7.app_proto)
++              kfree(ct->layer7.app_proto);
++      if(ct->layer7.app_data)
++      kfree(ct->layer7.app_data);
++      #endif
++
+       /* We overload first tuple to link into unconfirmed or dying list.*/
+       BUG_ON(hlist_nulls_unhashed(&ct->tuplehash[IP_CT_DIR_ORIGINAL].hnnode));
+       hlist_nulls_del_rcu(&ct->tuplehash[IP_CT_DIR_ORIGINAL].hnnode);
+diff -Naur linux-3.10.5.org/net/netfilter/nf_conntrack_standalone.c linux-3.10.5/net/netfilter/nf_conntrack_standalone.c
+--- linux-3.10.5.org/net/netfilter/nf_conntrack_standalone.c   2013-08-04 10:51:49.000000000 +0200
++++ linux-3.10.5/net/netfilter/nf_conntrack_standalone.c       2013-08-07 06:16:14.380802681 +0200
+@@ -240,6 +240,12 @@
+       if (ct_show_delta_time(s, ct))
+               goto release;
++#if defined(CONFIG_NETFILTER_XT_MATCH_LAYER7) || defined(CONFIG_NETFILTER_XT_MATCH_LAYER7_MODULE)
++      if(ct->layer7.app_proto &&
++           seq_printf(s, "l7proto=%s ", ct->layer7.app_proto))
++              return -ENOSPC;
++#endif
++
+       if (seq_printf(s, "use=%u\n", atomic_read(&ct->ct_general.use)))
+               goto release;
+diff -Naur linux-3.10.5.org/net/netfilter/regexp/regexp.c linux-3.10.5/net/netfilter/regexp/regexp.c
+--- linux-3.10.5.org/net/netfilter/regexp/regexp.c     1970-01-01 01:00:00.000000000 +0100
++++ linux-3.10.5/net/netfilter/regexp/regexp.c 2013-08-07 06:16:14.410801666 +0200
+@@ -0,0 +1,1197 @@
++/*
++ * regcomp and regexec -- regsub and regerror are elsewhere
++ * @(#)regexp.c       1.3 of 18 April 87
++ *
++ *    Copyright (c) 1986 by University of Toronto.
++ *    Written by Henry Spencer.  Not derived from licensed software.
++ *
++ *    Permission is granted to anyone to use this software for any
++ *    purpose on any computer system, and to redistribute it freely,
++ *    subject to the following restrictions:
++ *
++ *    1. The author is not responsible for the consequences of use of
++ *            this software, no matter how awful, even if they arise
++ *            from defects in it.
++ *
++ *    2. The origin of this software must not be misrepresented, either
++ *            by explicit claim or by omission.
++ *
++ *    3. Altered versions must be plainly marked as such, and must not
++ *            be misrepresented as being the original software.
++ *
++ * Beware that some of this code is subtly aware of the way operator
++ * precedence is structured in regular expressions.  Serious changes in
++ * regular-expression syntax might require a total rethink.
++ *
++ * This code was modified by Ethan Sommer to work within the kernel
++ * (it now uses kmalloc etc..)
++ *
++ * Modified slightly by Matthew Strait to use more modern C.
++ */
++
++#include "regexp.h"
++#include "regmagic.h"
++
++/* added by ethan and matt.  Lets it work in both kernel and user space.
++(So iptables can use it, for instance.)  Yea, it goes both ways... */
++#if __KERNEL__
++  #define malloc(foo) kmalloc(foo,GFP_ATOMIC)
++#else
++  #define printk(format,args...) printf(format,##args)
++#endif
++
++void regerror(char * s)
++{
++        printk("<3>Regexp: %s\n", s);
++        /* NOTREACHED */
++}
++
++/*
++ * The "internal use only" fields in regexp.h are present to pass info from
++ * compile to execute that permits the execute phase to run lots faster on
++ * simple cases.  They are:
++ *
++ * regstart   char that must begin a match; '\0' if none obvious
++ * reganch    is the match anchored (at beginning-of-line only)?
++ * regmust    string (pointer into program) that match must include, or NULL
++ * regmlen    length of regmust string
++ *
++ * Regstart and reganch permit very fast decisions on suitable starting points
++ * for a match, cutting down the work a lot.  Regmust permits fast rejection
++ * of lines that cannot possibly match.  The regmust tests are costly enough
++ * that regcomp() supplies a regmust only if the r.e. contains something
++ * potentially expensive (at present, the only such thing detected is * or +
++ * at the start of the r.e., which can involve a lot of backup).  Regmlen is
++ * supplied because the test in regexec() needs it and regcomp() is computing
++ * it anyway.
++ */
++
++/*
++ * Structure for regexp "program".  This is essentially a linear encoding
++ * of a nondeterministic finite-state machine (aka syntax charts or
++ * "railroad normal form" in parsing technology).  Each node is an opcode
++ * plus a "next" pointer, possibly plus an operand.  "Next" pointers of
++ * all nodes except BRANCH implement concatenation; a "next" pointer with
++ * a BRANCH on both ends of it is connecting two alternatives.  (Here we
++ * have one of the subtle syntax dependencies:  an individual BRANCH (as
++ * opposed to a collection of them) is never concatenated with anything
++ * because of operator precedence.)  The operand of some types of node is
++ * a literal string; for others, it is a node leading into a sub-FSM.  In
++ * particular, the operand of a BRANCH node is the first node of the branch.
++ * (NB this is *not* a tree structure:  the tail of the branch connects
++ * to the thing following the set of BRANCHes.)  The opcodes are:
++ */
++
++/* definition number  opnd?   meaning */
++#define       END     0       /* no   End of program. */
++#define       BOL     1       /* no   Match "" at beginning of line. */
++#define       EOL     2       /* no   Match "" at end of line. */
++#define       ANY     3       /* no   Match any one character. */
++#define       ANYOF   4       /* str  Match any character in this string. */
++#define       ANYBUT  5       /* str  Match any character not in this string. */
++#define       BRANCH  6       /* node Match this alternative, or the next... */
++#define       BACK    7       /* no   Match "", "next" ptr points backward. */
++#define       EXACTLY 8       /* str  Match this string. */
++#define       NOTHING 9       /* no   Match empty string. */
++#define       STAR    10      /* node Match this (simple) thing 0 or more times. */
++#define       PLUS    11      /* node Match this (simple) thing 1 or more times. */
++#define       OPEN    20      /* no   Mark this point in input as start of #n. */
++                      /*      OPEN+1 is number 1, etc. */
++#define       CLOSE   30      /* no   Analogous to OPEN. */
++
++/*
++ * Opcode notes:
++ *
++ * BRANCH     The set of branches constituting a single choice are hooked
++ *            together with their "next" pointers, since precedence prevents
++ *            anything being concatenated to any individual branch.  The
++ *            "next" pointer of the last BRANCH in a choice points to the
++ *            thing following the whole choice.  This is also where the
++ *            final "next" pointer of each individual branch points; each
++ *            branch starts with the operand node of a BRANCH node.
++ *
++ * BACK               Normal "next" pointers all implicitly point forward; BACK
++ *            exists to make loop structures possible.
++ *
++ * STAR,PLUS  '?', and complex '*' and '+', are implemented as circular
++ *            BRANCH structures using BACK.  Simple cases (one character
++ *            per match) are implemented with STAR and PLUS for speed
++ *            and to minimize recursive plunges.
++ *
++ * OPEN,CLOSE ...are numbered at compile time.
++ */
++
++/*
++ * A node is one char of opcode followed by two chars of "next" pointer.
++ * "Next" pointers are stored as two 8-bit pieces, high order first.  The
++ * value is a positive offset from the opcode of the node containing it.
++ * An operand, if any, simply follows the node.  (Note that much of the
++ * code generation knows about this implicit relationship.)
++ *
++ * Using two bytes for the "next" pointer is vast overkill for most things,
++ * but allows patterns to get big without disasters.
++ */
++#define       OP(p)   (*(p))
++#define       NEXT(p) (((*((p)+1)&0377)<<8) + (*((p)+2)&0377))
++#define       OPERAND(p)      ((p) + 3)
++
++/*
++ * See regmagic.h for one further detail of program structure.
++ */
++
++
++/*
++ * Utility definitions.
++ */
++#ifndef CHARBITS
++#define       UCHARAT(p)      ((int)*(unsigned char *)(p))
++#else
++#define       UCHARAT(p)      ((int)*(p)&CHARBITS)
++#endif
++
++#define       FAIL(m) { regerror(m); return(NULL); }
++#define       ISMULT(c)       ((c) == '*' || (c) == '+' || (c) == '?')
++#define       META    "^$.[()|?+*\\"
++
++/*
++ * Flags to be passed up and down.
++ */
++#define       HASWIDTH        01      /* Known never to match null string. */
++#define       SIMPLE          02      /* Simple enough to be STAR/PLUS operand. */
++#define       SPSTART         04      /* Starts with * or +. */
++#define       WORST           0       /* Worst case. */
++
++/*
++ * Global work variables for regcomp().
++ */
++struct match_globals {
++char *reginput;               /* String-input pointer. */
++char *regbol;         /* Beginning of input, for ^ check. */
++char **regstartp;     /* Pointer to startp array. */
++char **regendp;               /* Ditto for endp. */
++char *regparse;               /* Input-scan pointer. */
++int regnpar;          /* () count. */
++char regdummy;
++char *regcode;                /* Code-emit pointer; &regdummy = don't. */
++long regsize;         /* Code size. */
++};
++
++/*
++ * Forward declarations for regcomp()'s friends.
++ */
++#ifndef STATIC
++#define       STATIC  static
++#endif
++STATIC char *reg(struct match_globals *g, int paren,int *flagp);
++STATIC char *regbranch(struct match_globals *g, int *flagp);
++STATIC char *regpiece(struct match_globals *g, int *flagp);
++STATIC char *regatom(struct match_globals *g, int *flagp);
++STATIC char *regnode(struct match_globals *g, char op);
++STATIC char *regnext(struct match_globals *g, char *p);
++STATIC void regc(struct match_globals *g, char b);
++STATIC void reginsert(struct match_globals *g, char op, char *opnd);
++STATIC void regtail(struct match_globals *g, char *p, char *val);
++STATIC void regoptail(struct match_globals *g, char *p, char *val);
++
++
++__kernel_size_t my_strcspn(const char *s1,const char *s2)
++{
++        char *scan1;
++        char *scan2;
++        int count;
++
++        count = 0;
++        for (scan1 = (char *)s1; *scan1 != '\0'; scan1++) {
++                for (scan2 = (char *)s2; *scan2 != '\0';)       /* ++ moved down. */
++                        if (*scan1 == *scan2++)
++                                return(count);
++                count++;
++        }
++        return(count);
++}
++
++/*
++ - regcomp - compile a regular expression into internal code
++ *
++ * We can't allocate space until we know how big the compiled form will be,
++ * but we can't compile it (and thus know how big it is) until we've got a
++ * place to put the code.  So we cheat:  we compile it twice, once with code
++ * generation turned off and size counting turned on, and once "for real".
++ * This also means that we don't allocate space until we are sure that the
++ * thing really will compile successfully, and we never have to move the
++ * code and thus invalidate pointers into it.  (Note that it has to be in
++ * one piece because free() must be able to free it all.)
++ *
++ * Beware that the optimization-preparation code in here knows about some
++ * of the structure of the compiled regexp.
++ */
++regexp *
++regcomp(char *exp,int *patternsize)
++{
++      register regexp *r;
++      register char *scan;
++      register char *longest;
++      register int len;
++      int flags;
++      struct match_globals g;
++      
++      /* commented out by ethan
++         extern char *malloc();
++      */
++
++      if (exp == NULL)
++              FAIL("NULL argument");
++
++      /* First pass: determine size, legality. */
++      g.regparse = exp;
++      g.regnpar = 1;
++      g.regsize = 0L;
++      g.regcode = &g.regdummy;
++      regc(&g, MAGIC);
++      if (reg(&g, 0, &flags) == NULL)
++              return(NULL);
++
++      /* Small enough for pointer-storage convention? */
++      if (g.regsize >= 32767L)                /* Probably could be 65535L. */
++              FAIL("regexp too big");
++
++      /* Allocate space. */
++      *patternsize=sizeof(regexp) + (unsigned)g.regsize;
++      r = (regexp *)malloc(sizeof(regexp) + (unsigned)g.regsize);
++      if (r == NULL)
++              FAIL("out of space");
++
++      /* Second pass: emit code. */
++      g.regparse = exp;
++      g.regnpar = 1;
++      g.regcode = r->program;
++      regc(&g, MAGIC);
++      if (reg(&g, 0, &flags) == NULL)
++              return(NULL);
++
++      /* Dig out information for optimizations. */
++      r->regstart = '\0';     /* Worst-case defaults. */
++      r->reganch = 0;
++      r->regmust = NULL;
++      r->regmlen = 0;
++      scan = r->program+1;                    /* First BRANCH. */
++      if (OP(regnext(&g, scan)) == END) {             /* Only one top-level choice. */
++              scan = OPERAND(scan);
++
++              /* Starting-point info. */
++              if (OP(scan) == EXACTLY)
++                      r->regstart = *OPERAND(scan);
++              else if (OP(scan) == BOL)
++                      r->reganch++;
++
++              /*
++               * If there's something expensive in the r.e., find the
++               * longest literal string that must appear and make it the
++               * regmust.  Resolve ties in favor of later strings, since
++               * the regstart check works with the beginning of the r.e.
++               * and avoiding duplication strengthens checking.  Not a
++               * strong reason, but sufficient in the absence of others.
++               */
++              if (flags&SPSTART) {
++                      longest = NULL;
++                      len = 0;
++                      for (; scan != NULL; scan = regnext(&g, scan))
++                              if (OP(scan) == EXACTLY && strlen(OPERAND(scan)) >= len) {
++                                      longest = OPERAND(scan);
++                                      len = strlen(OPERAND(scan));
++                              }
++                      r->regmust = longest;
++                      r->regmlen = len;
++              }
++      }
++
++      return(r);
++}
++
++/*
++ - reg - regular expression, i.e. main body or parenthesized thing
++ *
++ * Caller must absorb opening parenthesis.
++ *
++ * Combining parenthesis handling with the base level of regular expression
++ * is a trifle forced, but the need to tie the tails of the branches to what
++ * follows makes it hard to avoid.
++ */
++static char *
++reg(struct match_globals *g, int paren, int *flagp /* Parenthesized? */ )
++{
++      register char *ret;
++      register char *br;
++      register char *ender;
++      register int parno = 0; /* 0 makes gcc happy */
++      int flags;
++
++      *flagp = HASWIDTH;      /* Tentatively. */
++
++      /* Make an OPEN node, if parenthesized. */
++      if (paren) {
++              if (g->regnpar >= NSUBEXP)
++                      FAIL("too many ()");
++              parno = g->regnpar;
++              g->regnpar++;
++              ret = regnode(g, OPEN+parno);
++      } else
++              ret = NULL;
++
++      /* Pick up the branches, linking them together. */
++      br = regbranch(g, &flags);
++      if (br == NULL)
++              return(NULL);
++      if (ret != NULL)
++              regtail(g, ret, br);    /* OPEN -> first. */
++      else
++              ret = br;
++      if (!(flags&HASWIDTH))
++              *flagp &= ~HASWIDTH;
++      *flagp |= flags&SPSTART;
++      while (*g->regparse == '|') {
++              g->regparse++;
++              br = regbranch(g, &flags);
++              if (br == NULL)
++                      return(NULL);
++              regtail(g, ret, br);    /* BRANCH -> BRANCH. */
++              if (!(flags&HASWIDTH))
++                      *flagp &= ~HASWIDTH;
++              *flagp |= flags&SPSTART;
++      }
++
++      /* Make a closing node, and hook it on the end. */
++      ender = regnode(g, (paren) ? CLOSE+parno : END);        
++      regtail(g, ret, ender);
++
++      /* Hook the tails of the branches to the closing node. */
++      for (br = ret; br != NULL; br = regnext(g, br))
++              regoptail(g, br, ender);
++
++      /* Check for proper termination. */
++      if (paren && *g->regparse++ != ')') {
++              FAIL("unmatched ()");
++      } else if (!paren && *g->regparse != '\0') {
++              if (*g->regparse == ')') {
++                      FAIL("unmatched ()");
++              } else
++                      FAIL("junk on end");    /* "Can't happen". */
++              /* NOTREACHED */
++      }
++
++      return(ret);
++}
++
++/*
++ - regbranch - one alternative of an | operator
++ *
++ * Implements the concatenation operator.
++ */
++static char *
++regbranch(struct match_globals *g, int *flagp)
++{
++      register char *ret;
++      register char *chain;
++      register char *latest;
++      int flags;
++
++      *flagp = WORST;         /* Tentatively. */
++
++      ret = regnode(g, BRANCH);
++      chain = NULL;
++      while (*g->regparse != '\0' && *g->regparse != '|' && *g->regparse != ')') {
++              latest = regpiece(g, &flags);
++              if (latest == NULL)
++                      return(NULL);
++              *flagp |= flags&HASWIDTH;
++              if (chain == NULL)      /* First piece. */
++                      *flagp |= flags&SPSTART;
++              else
++                      regtail(g, chain, latest);
++              chain = latest;
++      }
++      if (chain == NULL)      /* Loop ran zero times. */
++              (void) regnode(g, NOTHING);
++
++      return(ret);
++}
++
++/*
++ - regpiece - something followed by possible [*+?]
++ *
++ * Note that the branching code sequences used for ? and the general cases
++ * of * and + are somewhat optimized:  they use the same NOTHING node as
++ * both the endmarker for their branch list and the body of the last branch.
++ * It might seem that this node could be dispensed with entirely, but the
++ * endmarker role is not redundant.
++ */
++static char *
++regpiece(struct match_globals *g, int *flagp)
++{
++      register char *ret;
++      register char op;
++      register char *next;
++      int flags;
++
++      ret = regatom(g, &flags);
++      if (ret == NULL)
++              return(NULL);
++
++      op = *g->regparse;
++      if (!ISMULT(op)) {
++              *flagp = flags;
++              return(ret);
++      }
++
++      if (!(flags&HASWIDTH) && op != '?')
++              FAIL("*+ operand could be empty");
++      *flagp = (op != '+') ? (WORST|SPSTART) : (WORST|HASWIDTH);
++
++      if (op == '*' && (flags&SIMPLE))
++              reginsert(g, STAR, ret);
++      else if (op == '*') {
++              /* Emit x* as (x&|), where & means "self". */
++              reginsert(g, BRANCH, ret);                      /* Either x */
++              regoptail(g, ret, regnode(g, BACK));            /* and loop */
++              regoptail(g, ret, ret);                 /* back */
++              regtail(g, ret, regnode(g, BRANCH));            /* or */
++              regtail(g, ret, regnode(g, NOTHING));           /* null. */
++      } else if (op == '+' && (flags&SIMPLE))
++              reginsert(g, PLUS, ret);
++      else if (op == '+') {
++              /* Emit x+ as x(&|), where & means "self". */
++              next = regnode(g, BRANCH);                      /* Either */
++              regtail(g, ret, next);
++              regtail(g, regnode(g, BACK), ret);              /* loop back */
++              regtail(g, next, regnode(g, BRANCH));           /* or */
++              regtail(g, ret, regnode(g, NOTHING));           /* null. */
++      } else if (op == '?') {
++              /* Emit x? as (x|) */
++              reginsert(g, BRANCH, ret);                      /* Either x */
++              regtail(g, ret, regnode(g, BRANCH));            /* or */
++              next = regnode(g, NOTHING);             /* null. */
++              regtail(g, ret, next);
++              regoptail(g, ret, next);
++      }
++      g->regparse++;
++      if (ISMULT(*g->regparse))
++              FAIL("nested *?+");
++
++      return(ret);
++}
++
++/*
++ - regatom - the lowest level
++ *
++ * Optimization:  gobbles an entire sequence of ordinary characters so that
++ * it can turn them into a single node, which is smaller to store and
++ * faster to run.  Backslashed characters are exceptions, each becoming a
++ * separate node; the code is simpler that way and it's not worth fixing.
++ */
++static char *
++regatom(struct match_globals *g, int *flagp)
++{
++      register char *ret;
++      int flags;
++
++      *flagp = WORST;         /* Tentatively. */
++
++      switch (*g->regparse++) {
++      case '^':
++              ret = regnode(g, BOL);
++              break;
++      case '$':
++              ret = regnode(g, EOL);
++              break;
++      case '.':
++              ret = regnode(g, ANY);
++              *flagp |= HASWIDTH|SIMPLE;
++              break;
++      case '[': {
++                      register int class;
++                      register int classend;
++
++                      if (*g->regparse == '^') {      /* Complement of range. */
++                              ret = regnode(g, ANYBUT);
++                              g->regparse++;
++                      } else
++                              ret = regnode(g, ANYOF);
++                      if (*g->regparse == ']' || *g->regparse == '-')
++                              regc(g, *g->regparse++);
++                      while (*g->regparse != '\0' && *g->regparse != ']') {
++                              if (*g->regparse == '-') {
++                                      g->regparse++;
++                                      if (*g->regparse == ']' || *g->regparse == '\0')
++                                              regc(g, '-');
++                                      else {
++                                              class = UCHARAT(g->regparse-2)+1;
++                                              classend = UCHARAT(g->regparse);
++                                              if (class > classend+1)
++                                                      FAIL("invalid [] range");
++                                              for (; class <= classend; class++)
++                                                      regc(g, class);
++                                              g->regparse++;
++                                      }
++                              } else
++                                      regc(g, *g->regparse++);
++                      }
++                      regc(g, '\0');
++                      if (*g->regparse != ']')
++                              FAIL("unmatched []");
++                      g->regparse++;
++                      *flagp |= HASWIDTH|SIMPLE;
++              }
++              break;
++      case '(':
++              ret = reg(g, 1, &flags);
++              if (ret == NULL)
++                      return(NULL);
++              *flagp |= flags&(HASWIDTH|SPSTART);
++              break;
++      case '\0':
++      case '|':
++      case ')':
++              FAIL("internal urp");   /* Supposed to be caught earlier. */
++              break;
++      case '?':
++      case '+':
++      case '*':
++              FAIL("?+* follows nothing");
++              break;
++      case '\\':
++              if (*g->regparse == '\0')
++                      FAIL("trailing \\");
++              ret = regnode(g, EXACTLY);
++              regc(g, *g->regparse++);
++              regc(g, '\0');
++              *flagp |= HASWIDTH|SIMPLE;
++              break;
++      default: {
++                      register int len;
++                      register char ender;
++
++                      g->regparse--;
++                      len = my_strcspn((const char *)g->regparse, (const char *)META);
++                      if (len <= 0)
++                              FAIL("internal disaster");
++                      ender = *(g->regparse+len);
++                      if (len > 1 && ISMULT(ender))
++                              len--;          /* Back off clear of ?+* operand. */
++                      *flagp |= HASWIDTH;
++                      if (len == 1)
++                              *flagp |= SIMPLE;
++                      ret = regnode(g, EXACTLY);
++                      while (len > 0) {
++                              regc(g, *g->regparse++);
++                              len--;
++                      }
++                      regc(g, '\0');
++              }
++              break;
++      }
++
++      return(ret);
++}
++
++/*
++ - regnode - emit a node
++ */
++static char *                 /* Location. */
++regnode(struct match_globals *g, char op)
++{
++      register char *ret;
++      register char *ptr;
++
++      ret = g->regcode;
++      if (ret == &g->regdummy) {
++              g->regsize += 3;
++              return(ret);
++      }
++
++      ptr = ret;
++      *ptr++ = op;
++      *ptr++ = '\0';          /* Null "next" pointer. */
++      *ptr++ = '\0';
++      g->regcode = ptr;
++
++      return(ret);
++}
++
++/*
++ - regc - emit (if appropriate) a byte of code
++ */
++static void
++regc(struct match_globals *g, char b)
++{
++      if (g->regcode != &g->regdummy)
++              *g->regcode++ = b;
++      else
++              g->regsize++;
++}
++
++/*
++ - reginsert - insert an operator in front of already-emitted operand
++ *
++ * Means relocating the operand.
++ */
++static void
++reginsert(struct match_globals *g, char op, char* opnd)
++{
++      register char *src;
++      register char *dst;
++      register char *place;
++
++      if (g->regcode == &g->regdummy) {
++              g->regsize += 3;
++              return;
++      }
++
++      src = g->regcode;
++      g->regcode += 3;
++      dst = g->regcode;
++      while (src > opnd)
++              *--dst = *--src;
++
++      place = opnd;           /* Op node, where operand used to be. */
++      *place++ = op;
++      *place++ = '\0';
++      *place++ = '\0';
++}
++
++/*
++ - regtail - set the next-pointer at the end of a node chain
++ */
++static void
++regtail(struct match_globals *g, char *p, char *val)
++{
++      register char *scan;
++      register char *temp;
++      register int offset;
++
++      if (p == &g->regdummy)
++              return;
++
++      /* Find last node. */
++      scan = p;
++      for (;;) {
++              temp = regnext(g, scan);
++              if (temp == NULL)
++                      break;
++              scan = temp;
++      }
++
++      if (OP(scan) == BACK)
++              offset = scan - val;
++      else
++              offset = val - scan;
++      *(scan+1) = (offset>>8)&0377;
++      *(scan+2) = offset&0377;
++}
++
++/*
++ - regoptail - regtail on operand of first argument; nop if operandless
++ */
++static void
++regoptail(struct match_globals *g, char *p, char *val)
++{
++      /* "Operandless" and "op != BRANCH" are synonymous in practice. */
++      if (p == NULL || p == &g->regdummy || OP(p) != BRANCH)
++              return;
++      regtail(g, OPERAND(p), val);
++}
++
++/*
++ * regexec and friends
++ */
++
++
++/*
++ * Forwards.
++ */
++STATIC int regtry(struct match_globals *g, regexp *prog, char *string);
++STATIC int regmatch(struct match_globals *g, char *prog);
++STATIC int regrepeat(struct match_globals *g, char *p);
++
++#ifdef DEBUG
++int regnarrate = 0;
++void regdump();
++STATIC char *regprop(char *op);
++#endif
++
++/*
++ - regexec - match a regexp against a string
++ */
++int
++regexec(regexp *prog, char *string)
++{
++      register char *s;
++      struct match_globals g;
++
++      /* Be paranoid... */
++      if (prog == NULL || string == NULL) {
++              printk("<3>Regexp: NULL parameter\n");
++              return(0);
++      }
++
++      /* Check validity of program. */
++      if (UCHARAT(prog->program) != MAGIC) {
++              printk("<3>Regexp: corrupted program\n");
++              return(0);
++      }
++
++      /* If there is a "must appear" string, look for it. */
++      if (prog->regmust != NULL) {
++              s = string;
++              while ((s = strchr(s, prog->regmust[0])) != NULL) {
++                      if (strncmp(s, prog->regmust, prog->regmlen) == 0)
++                              break;  /* Found it. */
++                      s++;
++              }
++              if (s == NULL)  /* Not present. */
++                      return(0);
++      }
++
++      /* Mark beginning of line for ^ . */
++      g.regbol = string;
++
++      /* Simplest case:  anchored match need be tried only once. */
++      if (prog->reganch)
++              return(regtry(&g, prog, string));
++
++      /* Messy cases:  unanchored match. */
++      s = string;
++      if (prog->regstart != '\0')
++              /* We know what char it must start with. */
++              while ((s = strchr(s, prog->regstart)) != NULL) {
++                      if (regtry(&g, prog, s))
++                              return(1);
++                      s++;
++              }
++      else
++              /* We don't -- general case. */
++              do {
++                      if (regtry(&g, prog, s))
++                              return(1);
++              } while (*s++ != '\0');
++
++      /* Failure. */
++      return(0);
++}
++
++/*
++ - regtry - try match at specific point
++ */
++static int                    /* 0 failure, 1 success */
++regtry(struct match_globals *g, regexp *prog, char *string)
++{
++      register int i;
++      register char **sp;
++      register char **ep;
++
++      g->reginput = string;
++      g->regstartp = prog->startp;
++      g->regendp = prog->endp;
++
++      sp = prog->startp;
++      ep = prog->endp;
++      for (i = NSUBEXP; i > 0; i--) {
++              *sp++ = NULL;
++              *ep++ = NULL;
++      }
++      if (regmatch(g, prog->program + 1)) {
++              prog->startp[0] = string;
++              prog->endp[0] = g->reginput;
++              return(1);
++      } else
++              return(0);
++}
++
++/*
++ - regmatch - main matching routine
++ *
++ * Conceptually the strategy is simple:  check to see whether the current
++ * node matches, call self recursively to see whether the rest matches,
++ * and then act accordingly.  In practice we make some effort to avoid
++ * recursion, in particular by going through "ordinary" nodes (that don't
++ * need to know whether the rest of the match failed) by a loop instead of
++ * by recursion.
++ */
++static int                    /* 0 failure, 1 success */
++regmatch(struct match_globals *g, char *prog)
++{
++      register char *scan = prog; /* Current node. */
++      char *next;                 /* Next node. */
++
++#ifdef DEBUG
++      if (scan != NULL && regnarrate)
++              fprintf(stderr, "%s(\n", regprop(scan));
++#endif
++      while (scan != NULL) {
++#ifdef DEBUG
++              if (regnarrate)
++                      fprintf(stderr, "%s...\n", regprop(scan));
++#endif
++              next = regnext(g, scan);
++
++              switch (OP(scan)) {
++              case BOL:
++                      if (g->reginput != g->regbol)
++                              return(0);
++                      break;
++              case EOL:
++                      if (*g->reginput != '\0')
++                              return(0);
++                      break;
++              case ANY:
++                      if (*g->reginput == '\0')
++                              return(0);
++                      g->reginput++;
++                      break;
++              case EXACTLY: {
++                              register int len;
++                              register char *opnd;
++
++                              opnd = OPERAND(scan);
++                              /* Inline the first character, for speed. */
++                              if (*opnd != *g->reginput)
++                                      return(0);
++                              len = strlen(opnd);
++                              if (len > 1 && strncmp(opnd, g->reginput, len) != 0)
++                                      return(0);
++                              g->reginput += len;
++                      }
++                      break;
++              case ANYOF:
++                      if (*g->reginput == '\0' || strchr(OPERAND(scan), *g->reginput) == NULL)
++                              return(0);
++                      g->reginput++;
++                      break;
++              case ANYBUT:
++                      if (*g->reginput == '\0' || strchr(OPERAND(scan), *g->reginput) != NULL)
++                              return(0);
++                      g->reginput++;
++                      break;
++              case NOTHING:
++              case BACK:
++                      break;
++              case OPEN+1:
++              case OPEN+2:
++              case OPEN+3:
++              case OPEN+4:
++              case OPEN+5:
++              case OPEN+6:
++              case OPEN+7:
++              case OPEN+8:
++              case OPEN+9: {
++                              register int no;
++                              register char *save;
++
++                              no = OP(scan) - OPEN;
++                              save = g->reginput;
++
++                              if (regmatch(g, next)) {
++                                      /*
++                                       * Don't set startp if some later
++                                       * invocation of the same parentheses
++                                       * already has.
++                                       */
++                                      if (g->regstartp[no] == NULL)
++                                              g->regstartp[no] = save;
++                                      return(1);
++                              } else
++                                      return(0);
++                      }
++                      break;
++              case CLOSE+1:
++              case CLOSE+2:
++              case CLOSE+3:
++              case CLOSE+4:
++              case CLOSE+5:
++              case CLOSE+6:
++              case CLOSE+7:
++              case CLOSE+8:
++              case CLOSE+9:
++                      {
++                              register int no;
++                              register char *save;
++
++                              no = OP(scan) - CLOSE;
++                              save = g->reginput;
++
++                              if (regmatch(g, next)) {
++                                      /*
++                                       * Don't set endp if some later
++                                       * invocation of the same parentheses
++                                       * already has.
++                                       */
++                                      if (g->regendp[no] == NULL)
++                                              g->regendp[no] = save;
++                                      return(1);
++                              } else
++                                      return(0);
++                      }
++                      break;
++              case BRANCH: {
++                              register char *save;
++
++                              if (OP(next) != BRANCH)         /* No choice. */
++                                      next = OPERAND(scan);   /* Avoid recursion. */
++                              else {
++                                      do {
++                                              save = g->reginput;
++                                              if (regmatch(g, OPERAND(scan)))
++                                                      return(1);
++                                              g->reginput = save;
++                                              scan = regnext(g, scan);
++                                      } while (scan != NULL && OP(scan) == BRANCH);
++                                      return(0);
++                                      /* NOTREACHED */
++                              }
++                      }
++                      break;
++              case STAR:
++              case PLUS: {
++                              register char nextch;
++                              register int no;
++                              register char *save;
++                              register int min;
++
++                              /*
++                               * Lookahead to avoid useless match attempts
++                               * when we know what character comes next.
++                               */
++                              nextch = '\0';
++                              if (OP(next) == EXACTLY)
++                                      nextch = *OPERAND(next);
++                              min = (OP(scan) == STAR) ? 0 : 1;
++                              save = g->reginput;
++                              no = regrepeat(g, OPERAND(scan));
++                              while (no >= min) {
++                                      /* If it could work, try it. */
++                                      if (nextch == '\0' || *g->reginput == nextch)
++                                              if (regmatch(g, next))
++                                                      return(1);
++                                      /* Couldn't or didn't -- back up. */
++                                      no--;
++                                      g->reginput = save + no;
++                              }
++                              return(0);
++                      }
++                      break;
++              case END:
++                      return(1);      /* Success! */
++                      break;
++              default:
++                      printk("<3>Regexp: memory corruption\n");
++                      return(0);
++                      break;
++              }
++
++              scan = next;
++      }
++
++      /*
++       * We get here only if there's trouble -- normally "case END" is
++       * the terminating point.
++       */
++      printk("<3>Regexp: corrupted pointers\n");
++      return(0);
++}
++
++/*
++ - regrepeat - repeatedly match something simple, report how many
++ */
++static int
++regrepeat(struct match_globals *g, char *p)
++{
++      register int count = 0;
++      register char *scan;
++      register char *opnd;
++
++      scan = g->reginput;
++      opnd = OPERAND(p);
++      switch (OP(p)) {
++      case ANY:
++              count = strlen(scan);
++              scan += count;
++              break;
++      case EXACTLY:
++              while (*opnd == *scan) {
++                      count++;
++                      scan++;
++              }
++              break;
++      case ANYOF:
++              while (*scan != '\0' && strchr(opnd, *scan) != NULL) {
++                      count++;
++                      scan++;
++              }
++              break;
++      case ANYBUT:
++              while (*scan != '\0' && strchr(opnd, *scan) == NULL) {
++                      count++;
++                      scan++;
++              }
++              break;
++      default:                /* Oh dear.  Called inappropriately. */
++              printk("<3>Regexp: internal foulup\n");
++              count = 0;      /* Best compromise. */
++              break;
++      }
++      g->reginput = scan;
++
++      return(count);
++}
++
++/*
++ - regnext - dig the "next" pointer out of a node
++ */
++static char*
++regnext(struct match_globals *g, char *p)
++{
++      register int offset;
++
++      if (p == &g->regdummy)
++              return(NULL);
++
++      offset = NEXT(p);
++      if (offset == 0)
++              return(NULL);
++
++      if (OP(p) == BACK)
++              return(p-offset);
++      else
++              return(p+offset);
++}
++
++#ifdef DEBUG
++
++STATIC char *regprop();
++
++/*
++ - regdump - dump a regexp onto stdout in vaguely comprehensible form
++ */
++void
++regdump(regexp *r)
++{
++      register char *s;
++      register char op = EXACTLY;     /* Arbitrary non-END op. */
++      register char *next;
++      /* extern char *strchr(); */
++
++
++      s = r->program + 1;
++      while (op != END) {     /* While that wasn't END last time... */
++              op = OP(s);
++              printf("%2d%s", s-r->program, regprop(s));      /* Where, what. */
++              next = regnext(s);
++              if (next == NULL)               /* Next ptr. */
++                      printf("(0)");
++              else
++                      printf("(%d)", (s-r->program)+(next-s));
++              s += 3;
++              if (op == ANYOF || op == ANYBUT || op == EXACTLY) {
++                      /* Literal string, where present. */
++                      while (*s != '\0') {
++                              putchar(*s);
++                              s++;
++                      }
++                      s++;
++              }
++              putchar('\n');
++      }
++
++      /* Header fields of interest. */
++      if (r->regstart != '\0')
++              printf("start `%c' ", r->regstart);
++      if (r->reganch)
++              printf("anchored ");
++      if (r->regmust != NULL)
++              printf("must have \"%s\"", r->regmust);
++      printf("\n");
++}
++
++/*
++ - regprop - printable representation of opcode
++ */
++static char *
++regprop(char *op)
++{
++#define BUFLEN 50
++      register char *p;
++      static char buf[BUFLEN];
++
++      strcpy(buf, ":");
++
++      switch (OP(op)) {
++      case BOL:
++              p = "BOL";
++              break;
++      case EOL:
++              p = "EOL";
++              break;
++      case ANY:
++              p = "ANY";
++              break;
++      case ANYOF:
++              p = "ANYOF";
++              break;
++      case ANYBUT:
++              p = "ANYBUT";
++              break;
++      case BRANCH:
++              p = "BRANCH";
++              break;
++      case EXACTLY:
++              p = "EXACTLY";
++              break;
++      case NOTHING:
++              p = "NOTHING";
++              break;
++      case BACK:
++              p = "BACK";
++              break;
++      case END:
++              p = "END";
++              break;
++      case OPEN+1:
++      case OPEN+2:
++      case OPEN+3:
++      case OPEN+4:
++      case OPEN+5:
++      case OPEN+6:
++      case OPEN+7:
++      case OPEN+8:
++      case OPEN+9:
++              snprintf(buf+strlen(buf),BUFLEN-strlen(buf), "OPEN%d", OP(op)-OPEN);
++              p = NULL;
++              break;
++      case CLOSE+1:
++      case CLOSE+2:
++      case CLOSE+3:
++      case CLOSE+4:
++      case CLOSE+5:
++      case CLOSE+6:
++      case CLOSE+7:
++      case CLOSE+8:
++      case CLOSE+9:
++              snprintf(buf+strlen(buf),BUFLEN-strlen(buf), "CLOSE%d", OP(op)-CLOSE);
++              p = NULL;
++              break;
++      case STAR:
++              p = "STAR";
++              break;
++      case PLUS:
++              p = "PLUS";
++              break;
++      default:
++              printk("<3>Regexp: corrupted opcode\n");
++              break;
++      }
++      if (p != NULL)
++              strncat(buf, p, BUFLEN-strlen(buf));
++      return(buf);
++}
++#endif
++
++
+diff -Naur linux-3.10.5.org/net/netfilter/regexp/regexp.h linux-3.10.5/net/netfilter/regexp/regexp.h
+--- linux-3.10.5.org/net/netfilter/regexp/regexp.h     1970-01-01 01:00:00.000000000 +0100
++++ linux-3.10.5/net/netfilter/regexp/regexp.h 2013-08-07 06:16:14.430800990 +0200
+@@ -0,0 +1,41 @@
++/*
++ * Definitions etc. for regexp(3) routines.
++ *
++ * Caveat:  this is V8 regexp(3) [actually, a reimplementation thereof],
++ * not the System V one.
++ */
++
++#ifndef REGEXP_H
++#define REGEXP_H
++
++
++/*
++http://www.opensource.apple.com/darwinsource/10.3/expect-1/expect/expect.h ,
++which contains a version of this library, says:
++
++ *
++ * NSUBEXP must be at least 10, and no greater than 117 or the parser
++ * will not work properly.
++ *
++
++However, it looks rather like this library is limited to 10.  If you think
++otherwise, let us know.
++*/
++
++#define NSUBEXP  10
++typedef struct regexp {
++      char *startp[NSUBEXP];
++      char *endp[NSUBEXP];
++      char regstart;          /* Internal use only. */
++      char reganch;           /* Internal use only. */
++      char *regmust;          /* Internal use only. */
++      int regmlen;            /* Internal use only. */
++      char program[1];        /* Unwarranted chumminess with compiler. */
++} regexp;
++
++regexp * regcomp(char *exp, int *patternsize);
++int regexec(regexp *prog, char *string);
++void regsub(regexp *prog, char *source, char *dest);
++void regerror(char *s);
++
++#endif
+diff -Naur linux-3.10.5.org/net/netfilter/regexp/regmagic.h linux-3.10.5/net/netfilter/regexp/regmagic.h
+--- linux-3.10.5.org/net/netfilter/regexp/regmagic.h   1970-01-01 01:00:00.000000000 +0100
++++ linux-3.10.5/net/netfilter/regexp/regmagic.h       2013-08-07 06:16:14.450800314 +0200
+@@ -0,0 +1,5 @@
++/*
++ * The first byte of the regexp internal "program" is actually this magic
++ * number; the start node begins in the second byte.
++ */
++#define       MAGIC   0234
+diff -Naur linux-3.10.5.org/net/netfilter/regexp/regsub.c linux-3.10.5/net/netfilter/regexp/regsub.c
+--- linux-3.10.5.org/net/netfilter/regexp/regsub.c     1970-01-01 01:00:00.000000000 +0100
++++ linux-3.10.5/net/netfilter/regexp/regsub.c 2013-08-07 06:16:14.450800314 +0200
+@@ -0,0 +1,95 @@
++/*
++ * regsub
++ * @(#)regsub.c       1.3 of 2 April 86
++ *
++ *    Copyright (c) 1986 by University of Toronto.
++ *    Written by Henry Spencer.  Not derived from licensed software.
++ *
++ *    Permission is granted to anyone to use this software for any
++ *    purpose on any computer system, and to redistribute it freely,
++ *    subject to the following restrictions:
++ *
++ *    1. The author is not responsible for the consequences of use of
++ *            this software, no matter how awful, even if they arise
++ *            from defects in it.
++ *
++ *    2. The origin of this software must not be misrepresented, either
++ *            by explicit claim or by omission.
++ *
++ *    3. Altered versions must be plainly marked as such, and must not
++ *            be misrepresented as being the original software.
++ *
++ *
++ * This code was modified by Ethan Sommer to work within the kernel
++ * (it now uses kmalloc etc..)
++ *
++ */
++#include "regexp.h"
++#include "regmagic.h"
++#include <linux/string.h>
++
++
++#ifndef CHARBITS
++#define       UCHARAT(p)      ((int)*(unsigned char *)(p))
++#else
++#define       UCHARAT(p)      ((int)*(p)&CHARBITS)
++#endif
++
++#if 0
++//void regerror(char * s)
++//{
++//        printk("regexp(3): %s", s);
++//        /* NOTREACHED */
++//}
++#endif
++
++/*
++ - regsub - perform substitutions after a regexp match
++ */
++void
++regsub(regexp * prog, char * source, char * dest)
++{
++      register char *src;
++      register char *dst;
++      register char c;
++      register int no;
++      register int len;
++      
++      /* Not necessary and gcc doesn't like it -MLS */
++      /*extern char *strncpy();*/
++
++      if (prog == NULL || source == NULL || dest == NULL) {
++              regerror("NULL parm to regsub");
++              return;
++      }
++      if (UCHARAT(prog->program) != MAGIC) {
++              regerror("damaged regexp fed to regsub");
++              return;
++      }
++
++      src = source;
++      dst = dest;
++      while ((c = *src++) != '\0') {
++              if (c == '&')
++                      no = 0;
++              else if (c == '\\' && '0' <= *src && *src <= '9')
++                      no = *src++ - '0';
++              else
++                      no = -1;
++
++              if (no < 0) {   /* Ordinary character. */
++                      if (c == '\\' && (*src == '\\' || *src == '&'))
++                              c = *src++;
++                      *dst++ = c;
++              } else if (prog->startp[no] != NULL && prog->endp[no] != NULL) {
++                      len = prog->endp[no] - prog->startp[no];
++                      (void) strncpy(dst, prog->startp[no], len);
++                      dst += len;
++                      if (len != 0 && *(dst-1) == '\0') {     /* strncpy hit NUL. */
++                              regerror("damaged match string");
++                              return;
++                      }
++              }
++      }
++      *dst++ = '\0';
++}
+diff -Naur linux-3.10.5.org/net/netfilter/xt_layer7.c linux-3.10.5/net/netfilter/xt_layer7.c
+--- linux-3.10.5.org/net/netfilter/xt_layer7.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.10.5/net/netfilter/xt_layer7.c     2013-08-07 06:16:14.490798961 +0200
+@@ -0,0 +1,684 @@
++/*
++  Kernel module to match application layer (OSI layer 7) data in connections.
++
++  http://l7-filter.sf.net
++
++  (C) 2003-2009 Matthew Strait and Ethan Sommer.
++
++  This program is free software; you can redistribute it and/or
++  modify it under the terms of the GNU General Public License
++  as published by the Free Software Foundation; either version
++  2 of the License, or (at your option) any later version.
++  http://www.gnu.org/licenses/gpl.txt
++
++  Based on ipt_string.c (C) 2000 Emmanuel Roger <winfield@freegates.be>,
++  xt_helper.c (C) 2002 Harald Welte and cls_layer7.c (C) 2003 Matthew Strait,
++  Ethan Sommer, Justin Levandoski.
++*/
++
++#include <linux/spinlock.h>
++#include <linux/version.h>
++#include <net/ip.h>
++#include <net/tcp.h>
++#include <linux/module.h>
++#include <linux/skbuff.h>
++#include <linux/netfilter.h>
++#include <net/netfilter/nf_conntrack.h>
++#include <net/netfilter/nf_conntrack_core.h>
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27)
++#include <net/netfilter/nf_conntrack_extend.h>
++#include <net/netfilter/nf_conntrack_acct.h>
++#endif
++#include <linux/netfilter/x_tables.h>
++#include <linux/netfilter/xt_layer7.h>
++#include <linux/ctype.h>
++#include <linux/proc_fs.h>
++
++#include "regexp/regexp.c"
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Matthew Strait <quadong@users.sf.net>, Ethan Sommer <sommere@users.sf.net>");
++MODULE_DESCRIPTION("iptables application layer match module");
++MODULE_ALIAS("ipt_layer7");
++MODULE_VERSION("2.22ipfire");
++
++static int maxdatalen = 2048; // this is the default
++module_param(maxdatalen, int, 0444);
++MODULE_PARM_DESC(maxdatalen, "maximum bytes of data looked at by l7-filter");
++#ifdef CONFIG_NETFILTER_XT_MATCH_LAYER7_DEBUG
++      #define DPRINTK(format,args...) printk(format,##args)
++#else
++      #define DPRINTK(format,args...)
++#endif
++
++/* Number of packets whose data we look at.
++This can be modified through /proc/net/layer7_numpackets */
++static int num_packets = 10;
++
++static struct pattern_cache {
++      char * regex_string;
++      regexp * pattern;
++      struct pattern_cache * next;
++} * first_pattern_cache = NULL;
++
++DEFINE_SPINLOCK(l7_lock);
++
++static int total_acct_packets(struct nf_conn *ct)
++{
++#if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 26)
++      BUG_ON(ct == NULL);
++      return (ct->counters[IP_CT_DIR_ORIGINAL].packets + ct->counters[IP_CT_DIR_REPLY].packets);
++#else
++      struct nf_conn_counter *acct;
++
++      BUG_ON(ct == NULL);
++      acct = nf_conn_acct_find(ct);
++      if (!acct)
++              return 0;
++      return ( atomic64_read(&acct[IP_CT_DIR_ORIGINAL].packets) + atomic64_read(&acct[IP_CT_DIR_REPLY].packets) );
++#endif
++}
++
++#ifdef CONFIG_IP_NF_MATCH_LAYER7_DEBUG
++/* Converts an unfriendly string into a friendly one by
++replacing unprintables with periods and all whitespace with " ". */
++static char * friendly_print(unsigned char * s)
++{
++      char * f = kmalloc(strlen(s) + 1, GFP_ATOMIC);
++      int i;
++
++      if(!f) {
++              if (net_ratelimit())
++                      printk(KERN_ERR "layer7: out of memory in "
++                                      "friendly_print, bailing.\n");
++              return NULL;
++      }
++
++      for(i = 0; i < strlen(s); i++){
++              if(isprint(s[i]) && s[i] < 128) f[i] = s[i];
++              else if(isspace(s[i]))          f[i] = ' ';
++              else                            f[i] = '.';
++      }
++      f[i] = '\0';
++      return f;
++}
++
++static char dec2hex(int i)
++{
++      switch (i) {
++              case 0 ... 9:
++                      return (i + '0');
++                      break;
++              case 10 ... 15:
++                      return (i - 10 + 'a');
++                      break;
++              default:
++                      if (net_ratelimit())
++                              printk("layer7: Problem in dec2hex\n");
++                      return '\0';
++      }
++}
++
++static char * hex_print(unsigned char * s)
++{
++      char * g = kmalloc(strlen(s)*3 + 1, GFP_ATOMIC);
++      int i;
++
++      if(!g) {
++             if (net_ratelimit())
++                      printk(KERN_ERR "layer7: out of memory in hex_print, "
++                                      "bailing.\n");
++             return NULL;
++      }
++
++      for(i = 0; i < strlen(s); i++) {
++              g[i*3    ] = dec2hex(s[i]/16);
++              g[i*3 + 1] = dec2hex(s[i]%16);
++              g[i*3 + 2] = ' ';
++      }
++      g[i*3] = '\0';
++
++      return g;
++}
++#endif // DEBUG
++
++/* Use instead of regcomp.  As we expect to be seeing the same regexps over and
++over again, it make sense to cache the results. */
++static regexp * compile_and_cache(const char * regex_string, 
++                                  const char * protocol)
++{
++      struct pattern_cache * node               = first_pattern_cache;
++      struct pattern_cache * last_pattern_cache = first_pattern_cache;
++      struct pattern_cache * tmp;
++      unsigned int len;
++
++      while (node != NULL) {
++              if (!strcmp(node->regex_string, regex_string))
++              return node->pattern;
++
++              last_pattern_cache = node;/* points at the last non-NULL node */
++              node = node->next;
++      }
++
++      /* If we reach the end of the list, then we have not yet cached
++         the pattern for this regex. Let's do that now.
++         Be paranoid about running out of memory to avoid list corruption. */
++      tmp = kmalloc(sizeof(struct pattern_cache), GFP_ATOMIC);
++
++      if(!tmp) {
++              if (net_ratelimit())
++                      printk(KERN_ERR "layer7: out of memory in "
++                                      "compile_and_cache, bailing.\n");
++              return NULL;
++      }
++
++      tmp->regex_string  = kmalloc(strlen(regex_string) + 1, GFP_ATOMIC);
++      tmp->pattern       = kmalloc(sizeof(struct regexp),    GFP_ATOMIC);
++      tmp->next = NULL;
++
++      if(!tmp->regex_string || !tmp->pattern) {
++              if (net_ratelimit())
++                      printk(KERN_ERR "layer7: out of memory in "
++                                      "compile_and_cache, bailing.\n");
++              kfree(tmp->regex_string);
++              kfree(tmp->pattern);
++              kfree(tmp);
++              return NULL;
++      }
++
++      /* Ok.  The new node is all ready now. */
++      node = tmp;
++
++      if(first_pattern_cache == NULL) /* list is empty */
++              first_pattern_cache = node; /* make node the beginning */
++      else
++              last_pattern_cache->next = node; /* attach node to the end */
++
++      /* copy the string and compile the regex */
++      len = strlen(regex_string);
++      DPRINTK("layer7: about to compile this: \"%s\"\n", regex_string);
++      node->pattern = regcomp((char *)regex_string, &len);
++      if ( !node->pattern ) {
++              if (net_ratelimit())
++                      printk(KERN_ERR "layer7: Error compiling regexp "
++                                      "\"%s\" (%s)\n", 
++                                      regex_string, protocol);
++              /* pattern is now cached as NULL, so we won't try again. */
++      }
++
++      strcpy(node->regex_string, regex_string);
++      return node->pattern;
++}
++
++static int can_handle(const struct sk_buff *skb)
++{
++      if(!ip_hdr(skb)) /* not IP */
++              return 0;
++      if(ip_hdr(skb)->protocol != IPPROTO_TCP &&
++         ip_hdr(skb)->protocol != IPPROTO_UDP &&
++         ip_hdr(skb)->protocol != IPPROTO_ICMP)
++              return 0;
++      return 1;
++}
++
++/* Returns offset the into the skb->data that the application data starts */
++static int app_data_offset(const struct sk_buff *skb)
++{
++      /* In case we are ported somewhere (ebtables?) where ip_hdr(skb)
++      isn't set, this can be gotten from 4*(skb->data[0] & 0x0f) as well. */
++      int ip_hl = 4*ip_hdr(skb)->ihl;
++
++      if( ip_hdr(skb)->protocol == IPPROTO_TCP ) {
++              /* 12 == offset into TCP header for the header length field.
++              Can't get this with skb->h.th->doff because the tcphdr
++              struct doesn't get set when routing (this is confirmed to be
++              true in Netfilter as well as QoS.) */
++              int tcp_hl = 4*(skb->data[ip_hl + 12] >> 4);
++
++              return ip_hl + tcp_hl;
++      } else if( ip_hdr(skb)->protocol == IPPROTO_UDP  ) {
++              return ip_hl + 8; /* UDP header is always 8 bytes */
++      } else if( ip_hdr(skb)->protocol == IPPROTO_ICMP ) {
++              return ip_hl + 8; /* ICMP header is 8 bytes */
++      } else {
++              if (net_ratelimit())
++                      printk(KERN_ERR "layer7: tried to handle unknown "
++                                      "protocol!\n");
++              return ip_hl + 8; /* something reasonable */
++      }
++}
++
++/* handles whether there's a match when we aren't appending data anymore */
++static int match_no_append(struct nf_conn * conntrack, 
++                           struct nf_conn * master_conntrack, 
++                           enum ip_conntrack_info ctinfo,
++                           enum ip_conntrack_info master_ctinfo,
++                           const struct xt_layer7_info * info)
++{
++      /* If we're in here, throw the app data away */
++      if(master_conntrack->layer7.app_data != NULL) {
++
++      #ifdef CONFIG_IP_NF_MATCH_LAYER7_DEBUG
++              if(!master_conntrack->layer7.app_proto) {
++                      char * f = 
++                        friendly_print(master_conntrack->layer7.app_data);
++                      char * g = 
++                        hex_print(master_conntrack->layer7.app_data);
++                      DPRINTK("\nl7-filter gave up after %d bytes "
++                              "(%d packets):\n%s\n",
++                              strlen(f), total_acct_packets(master_conntrack), f);
++                      kfree(f);
++                      DPRINTK("In hex: %s\n", g);
++                      kfree(g);
++              }
++      #endif
++
++              kfree(master_conntrack->layer7.app_data);
++              master_conntrack->layer7.app_data = NULL; /* don't free again */
++      }
++
++      if(master_conntrack->layer7.app_proto){
++              /* Here child connections set their .app_proto (for /proc) */
++              if(!conntrack->layer7.app_proto) {
++                      conntrack->layer7.app_proto = 
++                        kmalloc(strlen(master_conntrack->layer7.app_proto)+1, 
++                          GFP_ATOMIC);
++                      if(!conntrack->layer7.app_proto){
++                              if (net_ratelimit())
++                                      printk(KERN_ERR "layer7: out of memory "
++                                                      "in match_no_append, "
++                                                      "bailing.\n");
++                              return 1;
++                      }
++                      strcpy(conntrack->layer7.app_proto, 
++                              master_conntrack->layer7.app_proto);
++              }
++
++              return (!strcmp(master_conntrack->layer7.app_proto, 
++                              info->protocol));
++      }
++      else {
++              /* If not classified, set to "unknown" to distinguish from
++              connections that are still being tested. */
++              master_conntrack->layer7.app_proto = 
++                      kmalloc(strlen("unknown")+1, GFP_ATOMIC);
++              if(!master_conntrack->layer7.app_proto){
++                      if (net_ratelimit())
++                              printk(KERN_ERR "layer7: out of memory in "
++                                              "match_no_append, bailing.\n");
++                      return 1;
++              }
++              strcpy(master_conntrack->layer7.app_proto, "unknown");
++              return 0;
++      }
++}
++
++/* add the new app data to the conntrack.  Return number of bytes added. */
++static int add_data(struct nf_conn * master_conntrack,
++                    char * app_data, int appdatalen)
++{
++      int length = 0, i;
++      int oldlength = master_conntrack->layer7.app_data_len;
++
++      /* This is a fix for a race condition by Deti Fliegl. However, I'm not 
++         clear on whether the race condition exists or whether this really 
++         fixes it.  I might just be being dense... Anyway, if it's not really 
++         a fix, all it does is waste a very small amount of time. */
++      if(!master_conntrack->layer7.app_data) return 0;
++
++      /* Strip nulls. Make everything lower case (our regex lib doesn't
++      do case insensitivity).  Add it to the end of the current data. */
++      for(i = 0; i < maxdatalen-oldlength-1 &&
++                 i < appdatalen; i++) {
++              if(app_data[i] != '\0') {
++                      /* the kernel version of tolower mungs 'upper ascii' */
++                      master_conntrack->layer7.app_data[length+oldlength] =
++                              isascii(app_data[i])? 
++                                      tolower(app_data[i]) : app_data[i];
++                      length++;
++              }
++      }
++
++      master_conntrack->layer7.app_data[length+oldlength] = '\0';
++      master_conntrack->layer7.app_data_len = length + oldlength;
++
++      return length;
++}
++
++/* taken from drivers/video/modedb.c */
++static int my_atoi(const char *s)
++{
++      int val = 0;
++
++      for (;; s++) {
++              switch (*s) {
++                      case '0'...'9':
++                      val = 10*val+(*s-'0');
++                      break;
++              default:
++                      return val;
++              }
++      }
++}
++
++/* write out num_packets to userland. */
++static int layer7_read_proc(char* page, char ** start, off_t off, int count,
++                            int* eof, void * data)
++{
++      if(num_packets > 99 && net_ratelimit())
++              printk(KERN_ERR "layer7: NOT REACHED. num_packets too big\n");
++
++      page[0] = num_packets/10 + '0';
++      page[1] = num_packets%10 + '0';
++      page[2] = '\n';
++      page[3] = '\0';
++
++      *eof=1;
++
++      return 3;
++}
++
++/* Read in num_packets from userland */
++static int layer7_write_proc(struct file* file, const char* buffer,
++                             unsigned long count, void *data)
++{
++      char * foo = kmalloc(count, GFP_ATOMIC);
++
++      if(!foo){
++              if (net_ratelimit())
++                      printk(KERN_ERR "layer7: out of memory, bailing. "
++                                      "num_packets unchanged.\n");
++              return count;
++      }
++
++      if(copy_from_user(foo, buffer, count)) {
++              return -EFAULT;
++      }
++
++
++      num_packets = my_atoi(foo);
++      kfree (foo);
++
++      /* This has an arbitrary limit to make the math easier. I'm lazy.
++      But anyway, 99 is a LOT! If you want more, you're doing it wrong! */
++      if(num_packets > 99) {
++              printk(KERN_WARNING "layer7: num_packets can't be > 99.\n");
++              num_packets = 99;
++      } else if(num_packets < 1) {
++              printk(KERN_WARNING "layer7: num_packets can't be < 1.\n");
++              num_packets = 1;
++      }
++
++      return count;
++}
++
++static bool
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35)
++match(const struct sk_buff *skbin, struct xt_action_param *par)
++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28)
++match(const struct sk_buff *skbin, const struct xt_match_param *par)
++#else
++match(const struct sk_buff *skbin,
++      const struct net_device *in,
++      const struct net_device *out,
++      const struct xt_match *match,
++      const void *matchinfo,
++      int offset,
++      unsigned int protoff,
++      bool *hotdrop)
++#endif
++{
++      /* sidestep const without getting a compiler warning... */
++      struct sk_buff * skb = (struct sk_buff *)skbin; 
++
++      const struct xt_layer7_info * info = 
++      #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28)
++              par->matchinfo;
++      #else
++              matchinfo;
++      #endif
++
++      enum ip_conntrack_info master_ctinfo, ctinfo;
++      struct nf_conn *master_conntrack, *conntrack;
++      unsigned char * app_data;
++      unsigned int pattern_result, appdatalen;
++      regexp * comppattern;
++
++      /* Be paranoid/incompetent - lock the entire match function. */
++      spin_lock_bh(&l7_lock);
++
++      if(!can_handle(skb)){
++              DPRINTK("layer7: This is some protocol I can't handle.\n");
++              spin_unlock_bh(&l7_lock);
++              return info->invert;
++      }
++
++      /* Treat parent & all its children together as one connection, except
++      for the purpose of setting conntrack->layer7.app_proto in the actual
++      connection. This makes /proc/net/ip_conntrack more satisfying. */
++      if(!(conntrack = nf_ct_get(skb, &ctinfo)) ||
++         !(master_conntrack=nf_ct_get(skb,&master_ctinfo))){
++              DPRINTK("layer7: couldn't get conntrack.\n");
++              spin_unlock_bh(&l7_lock);
++              return info->invert;
++      }
++
++      /* Try to get a master conntrack (and its master etc) for FTP, etc. */
++      while (master_ct(master_conntrack) != NULL)
++              master_conntrack = master_ct(master_conntrack);
++
++      /* if we've classified it or seen too many packets */
++      if(total_acct_packets(master_conntrack) > num_packets ||
++         master_conntrack->layer7.app_proto) {
++
++              pattern_result = match_no_append(conntrack, master_conntrack, 
++                                               ctinfo, master_ctinfo, info);
++
++              /* skb->cb[0] == seen. Don't do things twice if there are 
++              multiple l7 rules. I'm not sure that using cb for this purpose 
++              is correct, even though it says "put your private variables 
++              there". But it doesn't look like it is being used for anything
++              else in the skbs that make it here. */
++              skb->cb[0] = 1; /* marking it seen here's probably irrelevant */
++
++              spin_unlock_bh(&l7_lock);
++              return (pattern_result ^ info->invert);
++      }
++
++      if(skb_is_nonlinear(skb)){
++              if(skb_linearize(skb) != 0){
++                      if (net_ratelimit())
++                              printk(KERN_ERR "layer7: failed to linearize "
++                                              "packet, bailing.\n");
++                      spin_unlock_bh(&l7_lock);
++                      return info->invert;
++              }
++      }
++
++      /* now that the skb is linearized, it's safe to set these. */
++      app_data = skb->data + app_data_offset(skb);
++      appdatalen = skb_tail_pointer(skb) - app_data;
++
++      /* the return value gets checked later, when we're ready to use it */
++      comppattern = compile_and_cache(info->pattern, info->protocol);
++
++      /* On the first packet of a connection, allocate space for app data */
++      if(total_acct_packets(master_conntrack) == 1 && !skb->cb[0] && 
++         !master_conntrack->layer7.app_data){
++              master_conntrack->layer7.app_data = 
++                      kmalloc(maxdatalen, GFP_ATOMIC);
++              if(!master_conntrack->layer7.app_data){
++                      if (net_ratelimit())
++                              printk(KERN_ERR "layer7: out of memory in "
++                                              "match, bailing.\n");
++                      spin_unlock_bh(&l7_lock);
++                      return info->invert;
++              }
++
++              master_conntrack->layer7.app_data[0] = '\0';
++      }
++
++      /* Can be here, but unallocated, if numpackets is increased near
++      the beginning of a connection */
++      if(master_conntrack->layer7.app_data == NULL){
++              spin_unlock_bh(&l7_lock);
++              return info->invert; /* unmatched */
++      }
++
++      if(!skb->cb[0]){
++              int newbytes;
++              newbytes = add_data(master_conntrack, app_data, appdatalen);
++
++              if(newbytes == 0) { /* didn't add any data */
++                      skb->cb[0] = 1;
++                      /* Didn't match before, not going to match now */
++                      spin_unlock_bh(&l7_lock);
++                      return info->invert;
++              }
++      }
++
++      /* If looking for "unknown", then never match.  "Unknown" means that
++      we've given up; we're still trying with these packets. */
++      if(!strcmp(info->protocol, "unknown")) {
++              pattern_result = 0;
++      /* If looking for "unset", then always match. "Unset" means that we
++      haven't yet classified the connection. */
++      } else if(!strcmp(info->protocol, "unset")) {
++              pattern_result = 2;
++              DPRINTK("layer7: matched unset: not yet classified "
++                      "(%d/%d packets)\n",
++                        total_acct_packets(master_conntrack), num_packets);
++      /* If the regexp failed to compile, don't bother running it */
++      } else if(comppattern && 
++                regexec(comppattern, master_conntrack->layer7.app_data)){
++              DPRINTK("layer7: matched %s\n", info->protocol);
++              pattern_result = 1;
++      } else pattern_result = 0;
++
++      if(pattern_result == 1) {
++              master_conntrack->layer7.app_proto = 
++                      kmalloc(strlen(info->protocol)+1, GFP_ATOMIC);
++              if(!master_conntrack->layer7.app_proto){
++                      if (net_ratelimit())
++                              printk(KERN_ERR "layer7: out of memory in "
++                                              "match, bailing.\n");
++                      spin_unlock_bh(&l7_lock);
++                      return (pattern_result ^ info->invert);
++              }
++              strcpy(master_conntrack->layer7.app_proto, info->protocol);
++      } else if(pattern_result > 1) { /* cleanup from "unset" */
++              pattern_result = 1;
++      }
++
++      /* mark the packet seen */
++      skb->cb[0] = 1;
++
++      spin_unlock_bh(&l7_lock);
++      return (pattern_result ^ info->invert);
++}
++
++// load nf_conntrack_ipv4
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35)
++static int
++#else
++static bool
++#endif
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28)
++check(const struct xt_mtchk_param *par)
++{
++        if (nf_ct_l3proto_try_module_get(par->match->family) < 0) {
++                printk(KERN_WARNING "can't load conntrack support for "
++                                    "proto=%d\n", par->match->family);
++#else
++check(const char *tablename, const void *inf,
++               const struct xt_match *match, void *matchinfo,
++               unsigned int hook_mask)
++{
++        if (nf_ct_l3proto_try_module_get(match->family) < 0) {
++                printk(KERN_WARNING "can't load conntrack support for "
++                                    "proto=%d\n", match->family);
++#endif
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35)
++              return -EINVAL;
++      }
++      return 0;
++#else
++                return 0;
++        }
++      return 1;
++#endif
++}
++
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28)
++      static void destroy(const struct xt_mtdtor_param *par)
++      {
++              nf_ct_l3proto_module_put(par->match->family);
++      }
++#else
++      static void destroy(const struct xt_match *match, void *matchinfo)
++      {
++              nf_ct_l3proto_module_put(match->family);
++      }
++#endif
++
++static struct xt_match xt_layer7_match[] __read_mostly = {
++{
++      .name           = "layer7",
++      .family         = AF_INET,
++      .checkentry     = check,
++      .match          = match,
++      .destroy        = destroy,
++      .matchsize      = sizeof(struct xt_layer7_info),
++      .me             = THIS_MODULE
++}
++};
++
++static void layer7_cleanup_proc(void)
++{
++//    remove_proc_entry("layer7_numpackets", init_net.proc_net);
++}
++
++/* register the proc file */
++static void layer7_init_proc(void)
++{
++      struct proc_dir_entry* entry;
++//    entry = create_proc_entry("layer7_numpackets", 0644, init_net.proc_net);
++//    entry->read_proc = layer7_read_proc;
++//    entry->write_proc = layer7_write_proc;
++}
++
++static int __init xt_layer7_init(void)
++{
++      need_conntrack();
++
++      if (init_net.ct.sysctl_acct == 0) {
++              printk(KERN_WARNING "layer7: enabling nf_conntrack_acct\n");
++              init_net.ct.sysctl_acct = 1;
++      }
++
++      layer7_init_proc();
++      if(maxdatalen < 1) {
++              printk(KERN_WARNING "layer7: maxdatalen can't be < 1, "
++                      "using 1\n");
++              maxdatalen = 1;
++      }
++      /* This is not a hard limit.  It's just here to prevent people from
++      bringing their slow machines to a grinding halt. */
++      else if(maxdatalen > 65536) {
++              printk(KERN_WARNING "layer7: maxdatalen can't be > 65536, "
++                      "using 65536\n");
++              maxdatalen = 65536;
++      }
++      return xt_register_matches(xt_layer7_match,
++                                 ARRAY_SIZE(xt_layer7_match));
++}
++
++static void __exit xt_layer7_fini(void)
++{
++      layer7_cleanup_proc();
++      xt_unregister_matches(xt_layer7_match, ARRAY_SIZE(xt_layer7_match));
++}
++
++module_init(xt_layer7_init);
++module_exit(xt_layer7_fini);
similarity index 91%
rename from src/patches/strongswan-4.5.3_ipfire.patch
rename to src/patches/strongswan-5.0.2_ipfire.patch
index 2ba975b1d5012a13cd3577bd5cdb42f5b6dbff0d..6606095b1f3e61edad3c2d8af2df4642829fac14 100644 (file)
@@ -1,7 +1,8 @@
-diff -Naur strongswan-4.5.3.org/src/_updown/_updown.in strongswan-4.5.3/src/_updown/_updown.in
---- strongswan-4.5.3.org/src/_updown/_updown.in        2010-10-22 16:33:30.000000000 +0200
-+++ strongswan-4.5.3/src/_updown/_updown.in    2011-09-13 14:19:31.000000000 +0200
-@@ -183,6 +183,29 @@
+diff --git a/src/_updown/_updown.in b/src/_updown/_updown.in
+index 3a40e21..d9f3ea0 100644
+--- a/src/_updown/_updown.in
++++ b/src/_updown/_updown.in
+@@ -193,6 +193,29 @@ custom:*)         # custom parameters (see above CAUTION comment)
        ;;
  esac
  
@@ -31,7 +32,7 @@ diff -Naur strongswan-4.5.3.org/src/_updown/_updown.in strongswan-4.5.3/src/_upd
  # utility functions for route manipulation
  # Meddling with this stuff should not be necessary and requires great care.
  uproute() {
-@@ -387,12 +410,12 @@
+@@ -397,12 +420,12 @@ up-host:iptables)
        # connection to me, with (left/right)firewall=yes, coming up
        # This is used only by the default updown script, not by your custom
        # ones, so do not mess with it; see CAUTION comment up at top.
@@ -47,7 +48,7 @@ diff -Naur strongswan-4.5.3.org/src/_updown/_updown.in strongswan-4.5.3/src/_upd
        #
        # log IPsec host connection setup
        if [ $VPN_LOGGING ]
-@@ -400,10 +423,10 @@
+@@ -410,10 +433,10 @@ up-host:iptables)
          if [ "$PLUTO_PEER_CLIENT" = "$PLUTO_PEER/32" ]
          then
            logger -t $TAG -p $FAC_PRIO \
@@ -60,7 +61,7 @@ diff -Naur strongswan-4.5.3.org/src/_updown/_updown.in strongswan-4.5.3/src/_upd
          fi
        fi
        ;;
-@@ -411,12 +434,12 @@
+@@ -421,12 +444,12 @@ down-host:iptables)
        # connection to me, with (left/right)firewall=yes, going down
        # This is used only by the default updown script, not by your custom
        # ones, so do not mess with it; see CAUTION comment up at top.
@@ -76,7 +77,7 @@ diff -Naur strongswan-4.5.3.org/src/_updown/_updown.in strongswan-4.5.3/src/_upd
        #
        # log IPsec host connection teardown
        if [ $VPN_LOGGING ]
-@@ -424,10 +447,10 @@
+@@ -434,10 +457,10 @@ down-host:iptables)
          if [ "$PLUTO_PEER_CLIENT" = "$PLUTO_PEER/32" ]
          then
            logger -t $TAG -p $FAC_PRIO -- \
@@ -89,7 +90,7 @@ diff -Naur strongswan-4.5.3.org/src/_updown/_updown.in strongswan-4.5.3/src/_upd
          fi
        fi
        ;;
-@@ -437,10 +460,10 @@
+@@ -447,24 +470,24 @@ up-client:iptables)
        # ones, so do not mess with it; see CAUTION comment up at top.
        if [ "$PLUTO_PEER_CLIENT" != "$PLUTO_MY_SOURCEIP/32" ]
        then
@@ -101,9 +102,11 @@ diff -Naur strongswan-4.5.3.org/src/_updown/_updown.in strongswan-4.5.3/src/_upd
 +            -d $PLUTO_PEER_CLIENT $D_PEER_PORT $IPSEC_POLICY_OUT -j MARK --set-mark 50
 +        iptables -I IPSECFORWARD 1 -i $PLUTO_INTERFACE -p $PLUTO_MY_PROTOCOL \
              -s $PLUTO_PEER_CLIENT $S_PEER_PORT \
-             -d $PLUTO_MY_CLIENT $D_MY_PORT $IPSEC_POLICY_IN -j ACCEPT
+-            -d $PLUTO_MY_CLIENT $D_MY_PORT $IPSEC_POLICY_IN -j ACCEPT
++            -d $PLUTO_MY_CLIENT $D_MY_PORT $IPSEC_POLICY_IN -j RETURN
        fi
-@@ -449,12 +472,12 @@
+       #
+       # a virtual IP requires an INPUT and OUTPUT rule on the host
        # or sometimes host access via the internal IP is needed
        if [ -n "$PLUTO_MY_SOURCEIP" -o -n "$PLUTO_HOST_ACCESS" ]
        then
@@ -119,7 +122,7 @@ diff -Naur strongswan-4.5.3.org/src/_updown/_updown.in strongswan-4.5.3/src/_upd
        fi
        #
        # log IPsec client connection setup
-@@ -463,12 +486,51 @@
+@@ -473,12 +496,51 @@ up-client:iptables)
          if [ "$PLUTO_PEER_CLIENT" = "$PLUTO_PEER/32" ]
          then
            logger -t $TAG -p $FAC_PRIO \
@@ -173,7 +176,7 @@ diff -Naur strongswan-4.5.3.org/src/_updown/_updown.in strongswan-4.5.3/src/_upd
        ;;
  down-client:iptables)
        # connection to client subnet, with (left/right)firewall=yes, going down
-@@ -476,11 +538,11 @@
+@@ -486,28 +548,28 @@ down-client:iptables)
        # ones, so do not mess with it; see CAUTION comment up at top.
        if [ "$PLUTO_PEER_CLIENT" != "$PLUTO_MY_SOURCEIP/32" ]
        then
@@ -187,8 +190,11 @@ diff -Naur strongswan-4.5.3.org/src/_updown/_updown.in strongswan-4.5.3/src/_upd
 +        iptables -D IPSECFORWARD -i $PLUTO_INTERFACE -p $PLUTO_MY_PROTOCOL \
              -s $PLUTO_PEER_CLIENT $S_PEER_PORT \
              -d $PLUTO_MY_CLIENT $D_MY_PORT \
-                $IPSEC_POLICY_IN -j ACCEPT
-@@ -490,14 +552,14 @@
+-               $IPSEC_POLICY_IN -j ACCEPT
++               $IPSEC_POLICY_IN -j RETURN
+       fi
+       #
+       # a virtual IP requires an INPUT and OUTPUT rule on the host
        # or sometimes host access via the internal IP is needed
        if [ -n "$PLUTO_MY_SOURCEIP" -o -n "$PLUTO_HOST_ACCESS" ]
        then
@@ -206,7 +212,7 @@ diff -Naur strongswan-4.5.3.org/src/_updown/_updown.in strongswan-4.5.3/src/_upd
        fi
        #
        # log IPsec client connection teardown
-@@ -506,12 +568,51 @@
+@@ -516,12 +578,51 @@ down-client:iptables)
          if [ "$PLUTO_PEER_CLIENT" = "$PLUTO_PEER/32" ]
          then
            logger -t $TAG -p $FAC_PRIO -- \
@@ -260,7 +266,7 @@ diff -Naur strongswan-4.5.3.org/src/_updown/_updown.in strongswan-4.5.3/src/_upd
        ;;
  #
  # IPv6
-@@ -546,10 +647,10 @@
+@@ -556,10 +657,10 @@ up-host-v6:iptables)
        # connection to me, with (left/right)firewall=yes, coming up
        # This is used only by the default updown script, not by your custom
        # ones, so do not mess with it; see CAUTION comment up at top.
@@ -273,7 +279,7 @@ diff -Naur strongswan-4.5.3.org/src/_updown/_updown.in strongswan-4.5.3/src/_upd
            -s $PLUTO_ME $S_MY_PORT $IPSEC_POLICY_OUT \
            -d $PLUTO_PEER_CLIENT $D_PEER_PORT -j ACCEPT
        #
-@@ -570,10 +671,10 @@
+@@ -580,10 +681,10 @@ down-host-v6:iptables)
        # connection to me, with (left/right)firewall=yes, going down
        # This is used only by the default updown script, not by your custom
        # ones, so do not mess with it; see CAUTION comment up at top.
@@ -286,7 +292,7 @@ diff -Naur strongswan-4.5.3.org/src/_updown/_updown.in strongswan-4.5.3/src/_upd
            -s $PLUTO_ME $S_MY_PORT $IPSEC_POLICY_OUT \
            -d $PLUTO_PEER_CLIENT $D_PEER_PORT -j ACCEPT
        #
-@@ -596,10 +697,10 @@
+@@ -606,10 +707,10 @@ up-client-v6:iptables)
        # ones, so do not mess with it; see CAUTION comment up at top.
        if [ "$PLUTO_PEER_CLIENT" != "$PLUTO_MY_SOURCEIP/128" ]
        then
@@ -299,7 +305,7 @@ diff -Naur strongswan-4.5.3.org/src/_updown/_updown.in strongswan-4.5.3/src/_upd
              -s $PLUTO_PEER_CLIENT $S_PEER_PORT \
              -d $PLUTO_MY_CLIENT $D_MY_PORT $IPSEC_POLICY_IN -j ACCEPT
        fi
-@@ -608,10 +709,10 @@
+@@ -618,10 +719,10 @@ up-client-v6:iptables)
        # or sometimes host access via the internal IP is needed
        if [ -n "$PLUTO_MY_SOURCEIP" -o -n "$PLUTO_HOST_ACCESS" ]
        then
@@ -312,7 +318,7 @@ diff -Naur strongswan-4.5.3.org/src/_updown/_updown.in strongswan-4.5.3/src/_upd
              -s $PLUTO_MY_CLIENT $S_MY_PORT \
              -d $PLUTO_PEER_CLIENT $D_PEER_PORT $IPSEC_POLICY_OUT -j ACCEPT
        fi
-@@ -635,11 +736,11 @@
+@@ -645,11 +746,11 @@ down-client-v6:iptables)
        # ones, so do not mess with it; see CAUTION comment up at top.
        if [ "$PLUTO_PEER_CLIENT" != "$PLUTO_MY_SOURCEIP/128" ]
        then
@@ -326,7 +332,7 @@ diff -Naur strongswan-4.5.3.org/src/_updown/_updown.in strongswan-4.5.3/src/_upd
              -s $PLUTO_PEER_CLIENT $S_PEER_PORT \
              -d $PLUTO_MY_CLIENT $D_MY_PORT \
                 $IPSEC_POLICY_IN -j ACCEPT
-@@ -649,11 +750,11 @@
+@@ -659,11 +760,11 @@ down-client-v6:iptables)
        # or sometimes host access via the internal IP is needed
        if [ -n "$PLUTO_MY_SOURCEIP" -o -n "$PLUTO_HOST_ACCESS" ]
        then
diff --git a/src/patches/vim-7.2-fixes-4.patch b/src/patches/vim-7.2-fixes-4.patch
deleted file mode 100644 (file)
index d6c1bfd..0000000
+++ /dev/null
@@ -1,5414 +0,0 @@
-Submitted By:            Matt Burgess <matthew_at_linuxfromscratch_dot_org>
-Date:                    2008-12-06
-Initial Package Version: 7.2
-Upstream Status:         Already in upstream patch repo
-Origin:                  Upstream
-Description:             This patch is upstream patch numbers 1 thru 65.
-
-diff -Naur vim72.orig/Filelist vim72/Filelist
---- vim72.orig/Filelist        2008-07-06 19:02:23.000000000 +0100
-+++ vim72/Filelist     2008-12-06 11:37:48.000000000 +0000
-@@ -285,6 +285,7 @@
-               src/proto/os_win32.pro \
-               src/proto/os_mswin.pro \
-               src/testdir/Make_dos.mak \
-+              src/testdir/Make_ming.mak \
-               src/testdir/dos.vim \
-               src/uninstal.c \
-               src/vim.def \
-diff -Naur vim72.orig/runtime/doc/cmdline.txt vim72/runtime/doc/cmdline.txt
---- vim72.orig/runtime/doc/cmdline.txt 2008-08-09 15:22:59.000000000 +0100
-+++ vim72/runtime/doc/cmdline.txt      2008-12-06 11:37:49.000000000 +0000
-@@ -1,4 +1,4 @@
--*cmdline.txt*   For Vim version 7.2.  Last change: 2008 Jul 29
-+*cmdline.txt*   For Vim version 7.2.  Last change: 2008 Sep 18
-                 VIM REFERENCE MANUAL    by Bram Moolenaar
-@@ -157,6 +157,11 @@
-                               (doesn't work at the expression prompt; some
-                               things such as changing the buffer or current
-                               window are not allowed to avoid side effects)
-+                              When the result is a |List| the items are used
-+                              as lines.  They can have line breaks inside
-+                              too.
-+                              When the result is a Float it's automatically
-+                              converted to a String.
-               See |registers| about registers.  {not in Vi}
-               Implementation detail: When using the |expression| register
-               and invoking setcmdpos(), this sets the position before
-@@ -730,19 +735,29 @@
- In Ex commands, at places where a file name can be used, the following
- characters have a special meaning.  These can also be used in the expression
- function expand() |expand()|.
--      %       is replaced with the current file name                  *:_%*
--      #       is replaced with the alternate file name                *:_#*
-+      %       Is replaced with the current file name.           *:_%* *c_%*
-+      #       Is replaced with the alternate file name.         *:_#* *c_#*
-       #n      (where n is a number) is replaced with the file name of
--              buffer n.  "#0" is the same as "#"
--      ##      is replaced with all names in the argument list         *:_##*
-+              buffer n.  "#0" is the same as "#".
-+      ##      Is replaced with all names in the argument list   *:_##* *c_##*
-               concatenated, separated by spaces.  Each space in a name
-               is preceded with a backslash.
--Note that these give the file name as it was typed.  If an absolute path is
--needed (when using the file name from a different directory), you need to add
--":p".  See |filename-modifiers|.
-+      #<n     (where n is a number > 0) is replaced with old    *:_#<* *c_#<*
-+              file name n.  See |:oldfiles| or |v:oldfiles| to get the
-+              number.                                                 *E809*
-+              {only when compiled with the +eval and +viminfo features}
-+
-+Note that these, except "#<n", give the file name as it was typed.  If an
-+absolute path is needed (when using the file name from a different directory),
-+you need to add ":p".  See |filename-modifiers|.
-+
-+The "#<n" item returns an absolute path, but it will start with "~/" for files
-+below your home directory.
-+
- Note that backslashes are inserted before spaces, so that the command will
- correctly interpret the file name.  But this doesn't happen for shell
--commands.  For those you probably have to use quotes: >
-+commands.  For those you probably have to use quotes (this fails for files
-+that contain a quote and wildcards): >
-       :!ls "%"
-       :r !spell "%"
-diff -Naur vim72.orig/runtime/doc/eval.txt vim72/runtime/doc/eval.txt
---- vim72.orig/runtime/doc/eval.txt    2008-08-09 15:22:59.000000000 +0100
-+++ vim72/runtime/doc/eval.txt 2008-12-06 11:37:50.000000000 +0000
-@@ -1,4 +1,4 @@
--*eval.txt*    For Vim version 7.2.  Last change: 2008 Aug 09
-+*eval.txt*    For Vim version 7.2.  Last change: 2008 Nov 27
-                 VIM REFERENCE MANUAL    by Bram Moolenaar
-@@ -1484,6 +1484,17 @@
-               This is the screen column number, like with |virtcol()|.  The
-               value is zero when there was no mouse button click.
-+                                      *v:oldfiles* *oldfiles-variable*
-+v:oldfiles    List of file names that is loaded from the |viminfo| file on
-+              startup.  These are the files that Vim remembers marks for.
-+              The length of the List is limited by the ' argument of the
-+              'viminfo' option (default is 100).
-+              Also see |:oldfiles| and |c_#<|.
-+              The List can be modified, but this has no effect on what is
-+              stored in the |viminfo| file later.  If you use values other
-+              than String this will cause trouble.
-+              {only when compiled with the +viminfo feature}
-+
-                                       *v:operator* *operator-variable*
- v:operator    The last operator given in Normal mode.  This is a single
-               character except for commands starting with <g> or <z>,
-@@ -1695,7 +1706,7 @@
- exists( {expr})                       Number  TRUE if {expr} exists
- extend({expr1}, {expr2} [, {expr3}])
-                               List/Dict insert items of {expr2} into {expr1}
--expand( {expr})                       String  expand special keywords in {expr}
-+expand( {expr} [, {flag}])    String  expand special keywords in {expr}
- feedkeys( {string} [, {mode}])        Number  add key sequence to typeahead buffer
- filereadable( {file})         Number  TRUE if {file} is a readable file
- filewritable( {file})         Number  TRUE if {file} is a writable file
-@@ -1747,8 +1758,9 @@
- getwinposx()                  Number  X coord in pixels of GUI Vim window
- getwinposy()                  Number  Y coord in pixels of GUI Vim window
- getwinvar( {nr}, {varname})   any     variable {varname} in window {nr}
--glob( {expr})                 String  expand file wildcards in {expr}
--globpath( {path}, {expr})     String  do glob({expr}) for all dirs in {path}
-+glob( {expr} [, {flag}])      String  expand file wildcards in {expr}
-+globpath( {path}, {expr} [, {flag}])
-+                              String  do glob({expr}) for all dirs in {path}
- has( {feature})                       Number  TRUE if feature {feature} supported
- has_key( {dict}, {key})               Number  TRUE if {dict} has entry {key}
- haslocaldir()                 Number  TRUE if current window executed |:lcd|
-@@ -3275,14 +3287,16 @@
-                       :let list_is_on = getwinvar(2, '&list')
-                       :echo "myvar = " . getwinvar(1, 'myvar')
- <
--                                                      *glob()*
--glob({expr})  Expand the file wildcards in {expr}.  See |wildcards| for the
-+glob({expr} [, {flag}])                                       *glob()*
-+              Expand the file wildcards in {expr}.  See |wildcards| for the
-               use of special characters.
-               The result is a String.
-               When there are several matches, they are separated by <NL>
-               characters.
--              The 'wildignore' option applies: Names matching one of the
--              patterns in 'wildignore' will be skipped.
-+              Unless the optional {flag} argument is given and is non-zero,
-+              the 'suffixes' and 'wildignore' options apply: Names matching
-+              one of the patterns in 'wildignore' will be skipped and
-+              'suffixes' affect the ordering of matches.
-               If the expansion fails, the result is an empty string.
-               A name for a non-existing file is not included.
-@@ -3296,20 +3310,22 @@
-               See |expand()| for expanding special Vim variables.  See
-               |system()| for getting the raw output of an external command.
--globpath({path}, {expr})                              *globpath()*
-+globpath({path}, {expr} [, {flag}])                   *globpath()*
-               Perform glob() on all directories in {path} and concatenate
-               the results.  Example: >
-                       :echo globpath(&rtp, "syntax/c.vim")
- <             {path} is a comma-separated list of directory names.  Each
-               directory name is prepended to {expr} and expanded like with
--              glob().  A path separator is inserted when needed.
-+              |glob()|.  A path separator is inserted when needed.
-               To add a comma inside a directory name escape it with a
-               backslash.  Note that on MS-Windows a directory may have a
-               trailing backslash, remove it if you put a comma after it.
-               If the expansion fails for one of the directories, there is no
-               error message.
--              The 'wildignore' option applies: Names matching one of the
--              patterns in 'wildignore' will be skipped.
-+              Unless the optional {flag} argument is given and is non-zero,
-+              the 'suffixes' and 'wildignore' options apply: Names matching
-+              one of the patterns in 'wildignore' will be skipped and
-+              'suffixes' affect the ordering of matches.
-               The "**" item can be used to search in a directory tree.
-               For example, to find all "README.txt" files in the directories
-@@ -5332,10 +5348,12 @@
-               "fg"            foreground color (GUI: color name used to set
-                               the color, cterm: color number as a string,
-                               term: empty string)
--              "bg"            background color (like "fg")
-+              "bg"            background color (as with "fg")
-+              "sp"            special color (as with "fg") |highlight-guisp|
-               "fg#"           like "fg", but for the GUI and the GUI is
-                               running the name in "#RRGGBB" form
-               "bg#"           like "fg#" for "bg"
-+              "sp#"           like "fg#" for "sp"
-               "bold"          "1" if bold
-               "italic"        "1" if italic
-               "reverse"       "1" if reverse
-diff -Naur vim72.orig/runtime/doc/options.txt vim72/runtime/doc/options.txt
---- vim72.orig/runtime/doc/options.txt 2008-08-09 15:22:59.000000000 +0100
-+++ vim72/runtime/doc/options.txt      2008-12-06 11:37:50.000000000 +0000
-@@ -1,4 +1,4 @@
--*options.txt* For Vim version 7.2.  Last change: 2008 Aug 06
-+*options.txt* For Vim version 7.2.  Last change: 2008 Nov 25
-                 VIM REFERENCE MANUAL    by Bram Moolenaar
-@@ -7472,7 +7472,9 @@
-                       {not available when compiled without the |+wildignore|
-                       feature}
-       A list of file patterns.  A file that matches with one of these
--      patterns is ignored when completing file or directory names.
-+      patterns is ignored when completing file or directory names, and
-+      influences the result of |expand()|, |glob()| and |globpath()| unless
-+      a flag is passed to disable this.
-       The pattern is used like with |:autocmd|, see |autocmd-patterns|.
-       Also see 'suffixes'.
-       Example: >
-diff -Naur vim72.orig/runtime/doc/os_vms.txt vim72/runtime/doc/os_vms.txt
---- vim72.orig/runtime/doc/os_vms.txt  2008-08-09 15:23:00.000000000 +0100
-+++ vim72/runtime/doc/os_vms.txt       2008-12-06 11:37:48.000000000 +0000
-@@ -1,4 +1,4 @@
--*os_vms.txt*    For Vim version 7.2.  Last change: 2006 Nov 18
-+*os_vms.txt*    For Vim version 7.2.  Last change: 2008 Aug 19
-                 VIM REFERENCE MANUAL
-@@ -312,7 +312,7 @@
- 8. Useful notes                                               *vms-notes*
--8.1 backspace/delete
-+8.1 Backspace/delete
- 8.2 Filters
- 8.3 VMS file version numbers
- 8.4 Directory conversion
-@@ -326,8 +326,10 @@
- 8.12 diff-mode
- 8.13 Allow '$' in C keywords
- 8.14 VIMTUTOR for beginners
-+8.15 Slow start in console mode issue 
-+8.16 Common VIM directory - different architectures 
--8.1 backspace/delete
-+8.1 Backspace/delete
- There are backspace/delete key inconsistencies with VMS.
- :fixdel doesn't do the trick, but the solution is: >
-@@ -663,12 +665,130 @@
- (Thomas.R.Wyant III, Vim 6.1)
-+8.14 Slow start in console mode issue
-+
-+As GUI/GTK Vim works equally well in console mode, many administartors
-+deploy those executables system wide.
-+Unfortunately, on a remote slow connections GUI/GTK executables behave rather
-+slow when user wants to run Vim just in the console mode - because of X environment detection timeout.
-+
-+Luckily, there is a simple solution for that. Administrators need to deploy
-+both GUI/GTK build and just console build executables, like below: >
-+
-+    |- vim72
-+    |----- doc
-+    |----- syntax        
-+       vimrc    (system rc files)
-+       gvimrc
-+       gvim.exe (the remaned GUI or GTK built vim.exe)      
-+       vim.exe  (the console only executable) 
-+
-+Define system symbols like below in for ex in LOGIN.COM or SYLOGIN.COM: >
-+
-+      $ define/nolog VIM RF10:[UTIL.VIM72] ! where you VIM directory is
-+      $ vi*m  :== mcr VIM:VIM.EXE
-+      $ gvi*m :== mcr VIM:GVIM.EXE
-+      $ ! or you can try to spawn with
-+      $ gv*im :== spawn/nowait/input=NLA0 mcr VIM:GVIM.EXE -g -GEOMETRY 80x40
-+
-+
-+Like this, users that do not have X environment and want to use Vim just in 
-+console mode can avoid performance problems.
-+
-+(Zoltan Arpadffy, Vim 7.2)
-+
-+8.15 Common VIM directory - different architectures
-+
-+In a cluster that contains nodes with different architectures like below:
-+
-+$show cluster
-+View of Cluster from system ID 11655  node: TOR                                                                     18-AUG-2008 11:58:31
-++---------------------------------+
-+¦        SYSTEMS        ¦ MEMBERS ¦
-++-----------------------+---------¦
-+¦  NODE  ¦   SOFTWARE   ¦  STATUS ¦
-++--------+--------------+---------¦
-+¦ TOR    ¦ VMS V7.3-2   ¦ MEMBER  ¦
-+¦ TITAN2 ¦ VMS V8.3     ¦ MEMBER  ¦
-+¦ ODIN   ¦ VMS V7.3-2   ¦ MEMBER  ¦
-++---------------------------------+
-+
-+It is convinient to have a common VIM directory but execute different
-+executables. 
-+There are more solutions for this problem:
-+
-+solution 1. all executables in the same directory with different names
-+This is easily done with the following script that can be added
-+to the login.com or sylogin.com: >
-+
-+      $ if f$getsyi("NODE_HWTYPE") .eqs. "VAX"
-+      $ then
-+      $       say "VAX platform"
-+      $       vi*m:== mcr vim:VIM.EXE_VAX
-+      $ endif
-+      $ if f$getsyi("NODE_HWTYPE") .eqs. "ALPH"
-+      $ then
-+      $       say "ALPHA platform"
-+      $       vi*m :== mcr vim:VIM.EXE_AXP
-+      $ endif
-+      $ if f$getsyi("ARCH_NAME") .eqs. "IA64"
-+      $ then
-+      $      say "IA64 platform"
-+      $      vi*m :== mcr vim:VIM.EXE_IA64
-+      $ endif
-+
-+solution 2. different directories: >
-+
-+      $ if f$getsyi("NODE_HWTYPE") .eqs. "VAX"
-+      $ then
-+      $       say "VAX platform"
-+      $       define/nolog VIM RF10:[UTIL.VAX_EXE] ! VAX executables
-+      $ endif
-+      $ if f$getsyi("NODE_HWTYPE") .eqs. "ALPH"
-+      $ then
-+      $       say "ALPHA platform"
-+      $       define/nolog VIM RF10:[UTIL.AXP_EXE] ! AXP executables
-+      $ endif
-+      $ if f$getsyi("ARCH_NAME") .eqs. "IA64"
-+      $ then
-+      $      say "IA64 platform"
-+      $      define/nolog VIM RF10:[UTIL.IA64_EXE] ! IA64 executables
-+      $ endif
-+        $! VIMRUNTIME must be defined in order to find runtime files
-+      $ define/nolog VIMRUNTIME RF10:[UTIL.VIM72]
-+
-+A good examle for this approach is the [GNU]gnu_tools.com script from GNU_TOOLS.ZIP
-+package downloadable from http://www.polarhome.com/vim/
-+
-+(Zoltan Arpadffy, Vim 7.2)
-+
- ==============================================================================
- 9. VMS related changes                                        *vms-changes*
--Version 7
-+Recent changes
-+- The following plugins are included into VMS runtime: 
-+  genutils 2.4, multiselect 2.2, multvals 3.1, selectbuf 4.3,
-+  bufexplorer 7.1.7, taglist 4.5
-+- minor changes in vimrc (just in VMS runtime) 
-+- make_vms.mms - HUGE model is the default
-+- [TESTDIR]make_vms.mms include as many tests possible
-+- modify test30 and test54 for VMS
-+- enable FLOAT feature in VMS port
-+- os_vms.txt updated  
-+
-+Version 7.2 (2008 Aug 9)
-+- VCF files write corrected
-+- CTAGS 5.7 included
-+- corrected make_vms.mms (on VAX gave syntax error) 
-+
-+Version 7.1 (2007 Jun 15)
-+- create TAGS file from menu 
-+
-+Version 7 (2006 May 8)
- - Improved low level char input (affects just console mode)
-+- Fixed plugin bug
-+- CTAGS 5.6 included
- Version 6.4 (2005 Oct 15)
- - GTKLIB and Vim build on IA64
-@@ -806,6 +926,7 @@
- OpenVMS documentation and executables are maintained by:
- Zoltan Arpadffy <arpadffy@polarhome.com>
-+OpenVMS Vim page: http://www.polarhome.com/vim/
- This document uses parts and remarks from earlier authors and contributors
- of OS_VMS.TXT:
-diff -Naur vim72.orig/runtime/doc/spell.txt vim72/runtime/doc/spell.txt
---- vim72.orig/runtime/doc/spell.txt   2008-08-09 15:23:00.000000000 +0100
-+++ vim72/runtime/doc/spell.txt        2008-12-06 11:37:50.000000000 +0000
-@@ -1,4 +1,4 @@
--*spell.txt*   For Vim version 7.2.  Last change: 2008 Jun 21
-+*spell.txt*   For Vim version 7.2.  Last change: 2008 Nov 30
-                 VIM REFERENCE MANUAL    by Bram Moolenaar
-@@ -831,8 +831,11 @@
-       # comment line ~
--With some items it's also possible to put a comment after it, but this isn't
--supported in general.
-+Items with a fixed number of arguments can be followed by a comment.  But only
-+if none of the arguments can contain white space.  The comment must start with
-+a "#" character.  Example:
-+
-+      KEEPCASE =  # fix case for words with this flag ~
- ENCODING                                                      *spell-SET*
-@@ -965,6 +968,9 @@
- Note: When using utf-8 only characters up to 65000 may be used for flags.
-+Note: even when using "num" or "long" the number of flags available to
-+compounding and prefixes is limited to about 250.
-+
- AFFIXES
-                                           *spell-PFX* *spell-SFX*
-@@ -1178,6 +1184,9 @@
- The flag also applies to the word with affixes, thus this can be used to mark
- a whole bunch of related words as bad.
-+                                                      *spell-FORBIDDENWORD*
-+FORBIDDENWORD can be used just like BAD.  For compatibility with Hunspell.
-+
-                                                       *spell-NEEDAFFIX*
- The NEEDAFFIX flag is used to require that a word is used with an affix.  The
- word itself is not a good word (unless there is an empty affix).  Example:
-@@ -1268,6 +1277,10 @@
-       NEEDCOMPOUND & ~
-+                                                      *spell-ONLYINCOMPOUND*
-+The ONLYINCOMPOUND does exactly the same as NEEDCOMPOUND.  Supported for
-+compatiblity with Hunspell.
-+
-                                                       *spell-COMPOUNDMIN*
- The minimal character length of a word used for compounding is specified with
- COMPOUNDMIN.  Example:
-@@ -1328,6 +1341,20 @@
- rules.  Can also be used for an affix to count the affix as a compounding
- word.
-+                                              *spell-CHECKCOMPOUNDPATTERN*
-+CHECKCOMPOUNDPATTERN is used to define patterns that, when matching at the
-+position where two words are compounded together forbids the compound.
-+For example:
-+      CHECKCOMPOUNDPATTERN o e ~
-+
-+This forbids compounding if the first word ends in "o" and the second word
-+starts with "e".
-+
-+The arguments must be plain text, no patterns are actually supported, despite
-+the item name.  Case is always ignored.
-+
-+The Hunspell feature to use three arguments and flags is not supported.
-+
-                                                       *spell-SYLLABLE*
- The SYLLABLE item defines characters or character sequences that are used to
- count the number of syllables in a word.  Example:
-@@ -1496,6 +1523,10 @@
- ACCENT                (Hunspell)                              *spell-ACCENT*
-               Use MAP instead. |spell-MAP|
-+BREAK         (Hunspell)                              *spell-BREAK*
-+              Define break points.  Unclear how it works exactly.
-+              Not supported.
-+
- CHECKCOMPOUNDCASE  (Hunspell)                 *spell-CHECKCOMPOUNDCASE*
-               Disallow uppercase letters at compound word boundaries.
-               Not supported.
-@@ -1512,9 +1543,6 @@
-               Forbid three identical characters when compounding.  Not
-               supported.
--CHECKCOMPOUNDPATTERN  (Hunspell)              *spell-CHECKCOMPOUNDPATTERN*
--              Forbid compounding when patterns match.  Not supported.
--
- COMPLEXPREFIXES  (Hunspell)                           *spell-COMPLEXPREFIXES*
-               Enables using two prefixes.  Not supported.
-@@ -1536,13 +1564,18 @@
- COMPOUNDMIDDLE        (Hunspell)                              *spell-COMPOUNDMIDDLE*
-               Use COMPOUNDRULE instead. |spell-COMPOUNDRULE|
-+COMPOUNDRULES (Hunspell)                              *spell-COMPOUNDRULES*
-+              Number of COMPOUNDRULE lines following.  Ignored, but the
-+              argument must be a number.
-+
- COMPOUNDSYLLABLE  (Hunspell)                  *spell-COMPOUNDSYLLABLE*
-               Use SYLLABLE and COMPOUNDSYLMAX instead. |spell-SYLLABLE|
-               |spell-COMPOUNDSYLMAX|
--FORBIDDENWORD (Hunspell)                              *spell-FORBIDDENWORD*
--              Use BAD instead. |spell-BAD|
--
-+KEY           (Hunspell)                              *spell-KEY*
-+              Define characters that are close together on the keyboard.
-+              Used to give better suggestions.  Not supported.
-+              
- LANG          (Hunspell)                              *spell-LANG*
-               This specifies language-specific behavior.  This actually
-               moves part of the language knowledge into the program,
-@@ -1553,10 +1586,7 @@
-               Only needed for morphological analysis.
- MAXNGRAMSUGS  (Hunspell)                              *spell-MAXNGRAMSUGS*
--              Not supported.
--
--ONLYINCOMPOUND        (Hunspell)                              *spell-ONLYINCOMPOUND*
--              Use NEEDCOMPOUND instead. |spell-NEEDCOMPOUND|
-+              Set number of n-gram suggestions.  Not supported.
- PSEUDOROOT    (Hunspell)                              *spell-PSEUDOROOT*
-               Use NEEDAFFIX instead. |spell-NEEDAFFIX|
-diff -Naur vim72.orig/runtime/doc/starting.txt vim72/runtime/doc/starting.txt
---- vim72.orig/runtime/doc/starting.txt        2008-08-09 15:23:00.000000000 +0100
-+++ vim72/runtime/doc/starting.txt     2008-12-06 11:37:49.000000000 +0000
-@@ -1,4 +1,4 @@
--*starting.txt*  For Vim version 7.2.  Last change: 2008 Jun 21
-+*starting.txt*  For Vim version 7.2.  Last change: 2008 Nov 09
-                 VIM REFERENCE MANUAL    by Bram Moolenaar
-@@ -1337,8 +1337,9 @@
-                                                       *viminfo-read*
- When Vim is started and the 'viminfo' option is non-empty, the contents of
- the viminfo file are read and the info can be used in the appropriate places.
--The marks are not read in at startup (but file marks are).  See
--|initialization| for how to set the 'viminfo' option upon startup.
-+The |v:oldfiles| variable is filled.  The marks are not read in at startup
-+(but file marks are).  See |initialization| for how to set the 'viminfo'
-+option upon startup.
-                                                       *viminfo-write*
- When Vim exits and 'viminfo' is non-empty, the info is stored in the viminfo
-@@ -1372,6 +1373,8 @@
- that start with any string given with the "r" flag in 'viminfo'.  This can be
- used to avoid saving marks for files on removable media (for MS-DOS you would
- use "ra:,rb:", for Amiga "rdf0:,rdf1:,rdf2:").
-+The |v:oldfiles| variable is filled with the file names that the viminfo file
-+has marks for.
-                                                       *viminfo-file-marks*
- Uppercase marks ('A to 'Z) are stored when writing the viminfo file.  The
-@@ -1463,8 +1466,8 @@
-                                                  *:rv* *:rviminfo* *E195*
- :rv[iminfo][!] [file] Read from viminfo file [file] (default: see above).
-                       If [!] is given, then any information that is
--                      already set (registers, marks, etc.) will be
--                      overwritten.  {not in Vi}
-+                      already set (registers, marks, |v:oldfiles|, etc.)
-+                      will be overwritten   {not in Vi}
-                                       *:wv* *:wviminfo* *E137* *E138* *E574*
- :wv[iminfo][!] [file] Write to viminfo file [file] (default: see above).
-@@ -1479,4 +1482,20 @@
-                       the .viminfo file.
-                       {not in Vi}
-+                                              *:ol* *:oldfiles*
-+:ol[dfiles]           List the files that have marks stored in the viminfo
-+                      file.  This list is read on startup and only changes
-+                      afterwards with ":rviminfo!".  Also see |v:oldfiles|.
-+                      The number can be used with |c_#<|.
-+                      {not in Vi, only when compiled with the +eval feature}
-+
-+:bro[wse] ol[dfiles][!]
-+                      List file names as with |:oldfiles|, and then prompt
-+                      for a number.  When the number is valid that file from
-+                      the list is edited.
-+                      If you get the |press-enter| prompt you can press "q"
-+                      and still get the prompt to enter a file number.
-+                      Use ! to abondon a modified buffer. |abandon|
-+                      {not when compiled with tiny or small features}
-+
-  vim:tw=78:ts=8:ft=help:norl:
-diff -Naur vim72.orig/runtime/doc/usr_21.txt vim72/runtime/doc/usr_21.txt
---- vim72.orig/runtime/doc/usr_21.txt  2008-08-09 15:23:01.000000000 +0100
-+++ vim72/runtime/doc/usr_21.txt       2008-12-06 11:37:49.000000000 +0000
-@@ -1,4 +1,4 @@
--*usr_21.txt*  For Vim version 7.2.  Last change: 2007 May 01
-+*usr_21.txt*  For Vim version 7.2.  Last change: 2008 Nov 09
-                    VIM USER MANUAL - by Bram Moolenaar
-@@ -153,7 +153,7 @@
- to be lost.  Each item can be remembered only once.
--GETTING BACK TO WHERE YOU WERE
-+GETTING BACK TO WHERE YOU STOPPED VIM
- You are halfway editing a file and it's time to leave for holidays.  You exit
- Vim and go enjoy yourselves, forgetting all about your work.  After a couple
-@@ -168,6 +168,48 @@
-    The |:marks| command is useful to find out where '0 to '9 will take you.
-+GETTING BACK TO SOME FILE
-+
-+If you want to go back to a file that you edited recently, but not when
-+exiting Vim, there is a slightly more complicated way.  You can see a list of
-+files by typing the command: >
-+
-+      :oldfiles
-+<     1: ~/.viminfo ~
-+      2: ~/text/resume.txt ~
-+      3: /tmp/draft ~
-+
-+Now you would like to edit the second file, which is in the list preceded by
-+"2:".  You type: >
-+
-+      :e #<2
-+
-+Instead of ":e" you can use any command that has a file name argument, the
-+"#<2" item works in the same place as "%" (current file name) and "#"
-+(alternate file name).  So you can also split the window to edit the third
-+file: >
-+
-+      :split #<3
-+
-+That #<123 thing is a bit complicated when you just want to edit a file.
-+Fortunately there is a simpler way: >
-+
-+      :browse oldfiles
-+<     1: ~/.viminfo ~
-+      2: ~/text/resume.txt ~
-+      3: /tmp/draft ~
-+      -- More --
-+
-+You get the same list of files as with |:oldfiles|.  If you want to edit
-+"resume.txt" first press "q" to stop the listing.  You will get a prompt:
-+
-+      Type number and <Enter> (empty cancels): ~
-+
-+Type "2" and press <Enter> to edit the second file.
-+
-+More info at |:oldfiles|, |v:oldfiles| and |c_#<|.
-+
-+
- MOVE INFO FROM ONE VIM TO ANOTHER
- You can use the ":wviminfo" and ":rviminfo" commands to save and restore the
-diff -Naur vim72.orig/runtime/scripts.vim vim72/runtime/scripts.vim
---- vim72.orig/runtime/scripts.vim     2008-08-08 23:27:21.000000000 +0100
-+++ vim72/runtime/scripts.vim  2008-12-06 11:37:48.000000000 +0000
-@@ -234,6 +234,10 @@
-   elseif s:line1 =~ '\<DTD\s\+XHTML\s'
-     set ft=xhtml
-+    " HTML (e.g.: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN")
-+  elseif s:line1 =~? '\<DOCTYPE\s\+html\>'
-+    set ft=html
-+
-     " PDF
-   elseif s:line1 =~ '^%PDF-'
-     set ft=pdf
-diff -Naur vim72.orig/src/auto/configure vim72/src/auto/configure
---- vim72.orig/src/auto/configure      2008-07-24 13:40:36.000000000 +0100
-+++ vim72/src/auto/configure   2008-12-06 11:37:50.000000000 +0000
-@@ -16819,21 +16819,29 @@
-   LDFLAGS="$LDFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
- fi
--{ $as_echo "$as_me:$LINENO: checking for GCC 3 or later" >&5
--$as_echo_n "checking for GCC 3 or later... " >&6; }
- DEPEND_CFLAGS_FILTER=
- if test "$GCC" = yes; then
-+  { $as_echo "$as_me:$LINENO: checking for GCC 3 or later" >&5
-+$as_echo_n "checking for GCC 3 or later... " >&6; }
-   gccmajor=`echo "$gccversion" | sed -e 's/^\([1-9]\)\..*$/\1/g'`
-   if test "$gccmajor" -gt "2"; then
-     DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
--  fi
--fi
--if test "$DEPEND_CFLAGS_FILTER" = ""; then
--  { $as_echo "$as_me:$LINENO: result: no" >&5
-+    { $as_echo "$as_me:$LINENO: result: yes" >&5
-+$as_echo "yes" >&6; }
-+  else
-+    { $as_echo "$as_me:$LINENO: result: no" >&5
- $as_echo "no" >&6; }
--else
--  { $as_echo "$as_me:$LINENO: result: yes" >&5
-+  fi
-+      { $as_echo "$as_me:$LINENO: checking whether we need -D_FORTIFY_SOURCE=1" >&5
-+$as_echo_n "checking whether we need -D_FORTIFY_SOURCE=1... " >&6; }
-+  if test "$gccmajor" -gt "3"; then
-+    CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=1"
-+    { $as_echo "$as_me:$LINENO: result: yes" >&5
- $as_echo "yes" >&6; }
-+  else
-+    { $as_echo "$as_me:$LINENO: result: no" >&5
-+$as_echo "no" >&6; }
-+  fi
- fi
-diff -Naur vim72.orig/src/buffer.c vim72/src/buffer.c
---- vim72.orig/src/buffer.c    2008-08-06 12:00:48.000000000 +0100
-+++ vim72/src/buffer.c 2008-12-06 11:37:50.000000000 +0000
-@@ -33,7 +33,7 @@
- static char_u *fname_match __ARGS((regprog_T *prog, char_u *name));
- #endif
- static void   buflist_setfpos __ARGS((buf_T *buf, win_T *win, linenr_T lnum, colnr_T col, int copy_options));
--static wininfo_T *find_wininfo __ARGS((buf_T *buf));
-+static wininfo_T *find_wininfo __ARGS((buf_T *buf, int skip_diff_buffer));
- #ifdef UNIX
- static buf_T  *buflist_findname_stat __ARGS((char_u *ffname, struct stat *st));
- static int    otherfile_buf __ARGS((buf_T *buf, char_u *ffname, struct stat *stp));
-@@ -647,6 +647,9 @@
-     vim_free(buf->b_start_fenc);
-     buf->b_start_fenc = NULL;
- #endif
-+#ifdef FEAT_SPELL
-+    ga_clear(&buf->b_langp);
-+#endif
- }
- /*
-@@ -1090,7 +1093,7 @@
- #endif
-           setpcmark();
-           retval = do_ecmd(0, NULL, NULL, NULL, ECMD_ONE,
--                                                forceit ? ECMD_FORCEIT : 0);
-+                                        forceit ? ECMD_FORCEIT : 0, curwin);
-           /*
-            * do_ecmd() may create a new buffer, then we have to delete
-@@ -1237,7 +1240,7 @@
-        * "buf" if one exists */
-       if ((swb_flags & SWB_USEOPEN) && buf_jump_open_win(buf))
-           return OK;
--      /* If 'switchbuf' contians "usetab": jump to first window in any tab
-+      /* If 'switchbuf' contains "usetab": jump to first window in any tab
-        * page containing "buf" if one exists */
-       if ((swb_flags & SWB_USETAB) && buf_jump_open_tab(buf))
-           return OK;
-@@ -1313,7 +1316,7 @@
-     setpcmark();
-     if (!cmdmod.keepalt)
-       curwin->w_alt_fnum = curbuf->b_fnum; /* remember alternate file */
--    buflist_altfpos();                         /* remember curpos */
-+    buflist_altfpos(curwin);                   /* remember curpos */
- #ifdef FEAT_VISUAL
-     /* Don't restart Select mode after switching to another buffer. */
-@@ -1351,11 +1354,12 @@
-       }
-     }
- #ifdef FEAT_AUTOCMD
-+    /* An autocommand may have deleted "buf", already entered it (e.g., when
-+     * it did ":bunload") or aborted the script processing! */
- # ifdef FEAT_EVAL
--    /* An autocommand may have deleted buf or aborted the script processing! */
--    if (buf_valid(buf) && !aborting())
-+    if (buf_valid(buf) && buf != curbuf && !aborting())
- # else
--    if (buf_valid(buf))           /* an autocommand may have deleted buf! */
-+    if (buf_valid(buf) && buf != curbuf)
- # endif
- #endif
-       enter_buffer(buf);
-@@ -1397,6 +1401,9 @@
-     curwin->w_cursor.coladd = 0;
- #endif
-     curwin->w_set_curswant = TRUE;
-+#ifdef FEAT_AUTOCMD
-+    curwin->w_topline_was_set = FALSE;
-+#endif
-     /* Make sure the buffer is loaded. */
-     if (curbuf->b_ml.ml_mfp == NULL)  /* need to load the file */
-@@ -1436,7 +1443,8 @@
-     maketitle();
- #endif
- #ifdef FEAT_AUTOCMD
--    if (curwin->w_topline == 1)               /* when autocmds didn't change it */
-+      /* when autocmds didn't change it */
-+    if (curwin->w_topline == 1 && !curwin->w_topline_was_set)
- #endif
-       scroll_cursor_halfway(FALSE);   /* redisplay at correct position */
-@@ -2400,22 +2408,70 @@
-     return;
- }
-+#ifdef FEAT_DIFF
-+static int wininfo_other_tab_diff __ARGS((wininfo_T *wip));
-+
-+/*
-+ * Return TRUE when "wip" has 'diff' set and the diff is only for another tab
-+ * page.  That's because a diff is local to a tab page.
-+ */
-+    static int
-+wininfo_other_tab_diff(wip)
-+    wininfo_T *wip;
-+{
-+    win_T     *wp;
-+
-+    if (wip->wi_opt.wo_diff)
-+    {
-+      for (wp = firstwin; wp != NULL; wp = wp->w_next)
-+          /* return FALSE when it's a window in the current tab page, thus
-+           * the buffer was in diff mode here */
-+          if (wip->wi_win == wp)
-+              return FALSE;
-+      return TRUE;
-+    }
-+    return FALSE;
-+}
-+#endif
-+
- /*
-  * Find info for the current window in buffer "buf".
-  * If not found, return the info for the most recently used window.
-+ * When "skip_diff_buffer" is TRUE avoid windows with 'diff' set that is in
-+ * another tab page.
-  * Returns NULL when there isn't any info.
-  */
-+/*ARGSUSED*/
-     static wininfo_T *
--find_wininfo(buf)
-+find_wininfo(buf, skip_diff_buffer)
-     buf_T     *buf;
-+    int               skip_diff_buffer;
- {
-     wininfo_T *wip;
-     for (wip = buf->b_wininfo; wip != NULL; wip = wip->wi_next)
--      if (wip->wi_win == curwin)
-+      if (wip->wi_win == curwin
-+#ifdef FEAT_DIFF
-+              && (!skip_diff_buffer || !wininfo_other_tab_diff(wip))
-+#endif
-+         )
-           break;
--    if (wip == NULL)  /* if no fpos for curwin, use the first in the list */
--      wip = buf->b_wininfo;
-+
-+    /* If no wininfo for curwin, use the first in the list (that doesn't have
-+     * 'diff' set and is in another tab page). */
-+    if (wip == NULL)
-+    {
-+#ifdef FEAT_DIFF
-+      if (skip_diff_buffer)
-+      {
-+          for (wip = buf->b_wininfo; wip != NULL; wip = wip->wi_next)
-+              if (!wininfo_other_tab_diff(wip))
-+                  break;
-+      }
-+      else
-+#endif
-+          wip = buf->b_wininfo;
-+    }
-     return wip;
- }
-@@ -2436,7 +2492,7 @@
-     clearFolding(curwin);
- #endif
--    wip = find_wininfo(buf);
-+    wip = find_wininfo(buf, TRUE);
-     if (wip != NULL && wip->wi_optset)
-     {
-       copy_winopt(&wip->wi_opt, &curwin->w_onebuf_opt);
-@@ -2468,7 +2524,7 @@
-     wininfo_T *wip;
-     static pos_T no_position = {1, 0};
--    wip = find_wininfo(buf);
-+    wip = find_wininfo(buf, FALSE);
-     if (wip != NULL)
-       return &(wip->wi_fpos);
-     else
-@@ -2789,14 +2845,14 @@
- #endif
- /*
-- * Set alternate cursor position for current window.
-+ * Set alternate cursor position for the current buffer and window "win".
-  * Also save the local window option values.
-  */
-     void
--buflist_altfpos()
-+buflist_altfpos(win)
-+    win_T *win;
- {
--    buflist_setfpos(curbuf, curwin, curwin->w_cursor.lnum,
--                                                curwin->w_cursor.col, TRUE);
-+    buflist_setfpos(curbuf, win, win->w_cursor.lnum, win->w_cursor.col, TRUE);
- }
- /*
-@@ -3963,7 +4019,7 @@
-     width = vim_strsize(out);
-     if (maxwidth > 0 && width > maxwidth)
-     {
--      /* Result is too long, must trunctate somewhere. */
-+      /* Result is too long, must truncate somewhere. */
-       l = 0;
-       if (itemcnt == 0)
-           s = out;
-@@ -4488,7 +4544,7 @@
-                     ECMD_ONE,
-                     ((P_HID(curwin->w_buffer)
-                          || bufIsChanged(curwin->w_buffer)) ? ECMD_HIDE : 0)
--                                                             + ECMD_OLDBUF);
-+                                                     + ECMD_OLDBUF, curwin);
- #ifdef FEAT_AUTOCMD
-           if (use_firstwin)
-               ++autocmd_no_leave;
-@@ -5062,7 +5118,7 @@
-     {
-       if (buf->b_sfname != NULL)
-           return (char *)buf->b_sfname;
--      return "[Scratch]";
-+      return _("[Scratch]");
-     }
- #endif
-     if (buf->b_fname == NULL)
-diff -Naur vim72.orig/src/configure.in vim72/src/configure.in
---- vim72.orig/src/configure.in        2008-07-24 13:40:26.000000000 +0100
-+++ vim72/src/configure.in     2008-12-06 11:37:50.000000000 +0000
-@@ -3152,18 +3152,25 @@
- dnl But only when making dependencies, cproto and lint don't take "-isystem".
- dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
- dnl the number before the version number.
--AC_MSG_CHECKING(for GCC 3 or later)
- DEPEND_CFLAGS_FILTER=
- if test "$GCC" = yes; then
-+  AC_MSG_CHECKING(for GCC 3 or later)
-   gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
-   if test "$gccmajor" -gt "2"; then
-     DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
-+    AC_MSG_RESULT(yes)
-+  else
-+    AC_MSG_RESULT(no)
-+  fi
-+  dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
-+  dnl declared as char x[1] but actually longer.  Introduced in gcc 4.0.
-+  AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
-+  if test "$gccmajor" -gt "3"; then
-+    CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=1"
-+    AC_MSG_RESULT(yes)
-+  else
-+    AC_MSG_RESULT(no)
-   fi
--fi
--if test "$DEPEND_CFLAGS_FILTER" = ""; then
--  AC_MSG_RESULT(no)
--else
--  AC_MSG_RESULT(yes)
- fi
- AC_SUBST(DEPEND_CFLAGS_FILTER)
-diff -Naur vim72.orig/src/diff.c vim72/src/diff.c
---- vim72.orig/src/diff.c      2008-03-05 11:16:56.000000000 +0000
-+++ vim72/src/diff.c   2008-12-06 11:37:50.000000000 +0000
-@@ -73,6 +73,8 @@
-       {
-           tp->tp_diffbuf[i] = NULL;
-           tp->tp_diff_invalid = TRUE;
-+          if (tp == curtab)
-+              diff_redraw(TRUE);
-       }
-     }
- }
-@@ -102,6 +104,7 @@
-           {
-               curtab->tp_diffbuf[i] = NULL;
-               curtab->tp_diff_invalid = TRUE;
-+              diff_redraw(TRUE);
-           }
-       }
-     }
-@@ -131,6 +134,7 @@
-       {
-           curtab->tp_diffbuf[i] = buf;
-           curtab->tp_diff_invalid = TRUE;
-+          diff_redraw(TRUE);
-           return;
-       }
-@@ -661,6 +665,7 @@
-     char_u    *tmp_diff;
-     FILE      *fd;
-     int               ok;
-+    int               io_error = FALSE;
-     /* Delete all diffblocks. */
-     diff_clear(curtab);
-@@ -697,18 +702,26 @@
-     {
-       ok = FALSE;
-       fd = mch_fopen((char *)tmp_orig, "w");
--      if (fd != NULL)
-+      if (fd == NULL)
-+          io_error = TRUE;
-+      else
-       {
--          fwrite("line1\n", (size_t)6, (size_t)1, fd);
-+          if (fwrite("line1\n", (size_t)6, (size_t)1, fd) != 1)
-+              io_error = TRUE;
-           fclose(fd);
-           fd = mch_fopen((char *)tmp_new, "w");
--          if (fd != NULL)
-+          if (fd == NULL)
-+              io_error = TRUE;
-+          else
-           {
--              fwrite("line2\n", (size_t)6, (size_t)1, fd);
-+              if (fwrite("line2\n", (size_t)6, (size_t)1, fd) != 1)
-+                  io_error = TRUE;
-               fclose(fd);
-               diff_file(tmp_orig, tmp_new, tmp_diff);
-               fd = mch_fopen((char *)tmp_diff, "r");
--              if (fd != NULL)
-+              if (fd == NULL)
-+                  io_error = TRUE;
-+              else
-               {
-                   char_u      linebuf[LBUFLEN];
-@@ -761,6 +774,8 @@
-     }
-     if (!ok)
-     {
-+      if (io_error)
-+          EMSG(_("E810: Cannot read or write temp files"));
-       EMSG(_("E97: Cannot create diffs"));
-       diff_a_works = MAYBE;
- #if defined(MSWIN) || defined(MSDOS)
-@@ -925,10 +940,10 @@
-     {
- # ifdef TEMPDIRNAMES
-       if (vim_tempdir != NULL)
--          mch_chdir((char *)vim_tempdir);
-+          ignored = mch_chdir((char *)vim_tempdir);
-       else
- # endif
--          mch_chdir("/tmp");
-+          ignored = mch_chdir("/tmp");
-       shorten_fnames(TRUE);
-     }
- #endif
-diff -Naur vim72.orig/src/eval.c vim72/src/eval.c
---- vim72.orig/src/eval.c      2008-08-07 20:37:22.000000000 +0100
-+++ vim72/src/eval.c   2008-12-06 11:37:50.000000000 +0000
-@@ -348,6 +348,7 @@
-     {VV_NAME("mouse_col",      VAR_NUMBER), 0},
-     {VV_NAME("operator",       VAR_STRING), VV_RO},
-     {VV_NAME("searchforward",  VAR_NUMBER), 0},
-+    {VV_NAME("oldfiles",       VAR_LIST), 0},
- };
- /* shorthand */
-@@ -355,6 +356,7 @@
- #define vv_nr         vv_di.di_tv.vval.v_number
- #define vv_float      vv_di.di_tv.vval.v_float
- #define vv_str                vv_di.di_tv.vval.v_string
-+#define vv_list               vv_di.di_tv.vval.v_list
- #define vv_tv         vv_di.di_tv
- /*
-@@ -426,7 +428,6 @@
- static long list_idx_of_item __ARGS((list_T *l, listitem_T *item));
- static void list_append __ARGS((list_T *l, listitem_T *item));
- static int list_append_tv __ARGS((list_T *l, typval_T *tv));
--static int list_append_string __ARGS((list_T *l, char_u *str, int len));
- static int list_append_number __ARGS((list_T *l, varnumber_T n));
- static int list_insert_tv __ARGS((list_T *l, typval_T *tv, listitem_T *item));
- static int list_extend __ARGS((list_T *l1, list_T *l2, listitem_T *bef));
-@@ -845,11 +846,17 @@
-       p = &vimvars[i];
-       if (p->vv_di.di_tv.v_type == VAR_STRING)
-       {
--          vim_free(p->vv_di.di_tv.vval.v_string);
--          p->vv_di.di_tv.vval.v_string = NULL;
-+          vim_free(p->vv_str);
-+          p->vv_str = NULL;
-+      }
-+      else if (p->vv_di.di_tv.v_type == VAR_LIST)
-+      {
-+          list_unref(p->vv_list);
-+          p->vv_list = NULL;
-       }
-     }
-     hash_clear(&vimvarht);
-+    hash_init(&vimvarht);  /* garbage_collect() will access it */
-     hash_clear(&compat_hashtab);
-     /* script-local variables */
-@@ -1256,23 +1263,26 @@
- /*
-  * Top level evaluation function, returning a string.
-+ * When "convert" is TRUE convert a List into a sequence of lines and convert
-+ * a Float to a String.
-  * Return pointer to allocated memory, or NULL for failure.
-  */
-     char_u *
--eval_to_string(arg, nextcmd, dolist)
-+eval_to_string(arg, nextcmd, convert)
-     char_u    *arg;
-     char_u    **nextcmd;
--    int               dolist;         /* turn List into sequence of lines */
-+    int               convert;
- {
-     typval_T  tv;
-     char_u    *retval;
-     garray_T  ga;
-+    char_u    numbuf[NUMBUFLEN];
-     if (eval0(arg, &tv, nextcmd, TRUE) == FAIL)
-       retval = NULL;
-     else
-     {
--      if (dolist && tv.v_type == VAR_LIST)
-+      if (convert && tv.v_type == VAR_LIST)
-       {
-           ga_init2(&ga, (int)sizeof(char), 80);
-           if (tv.vval.v_list != NULL)
-@@ -1280,6 +1290,13 @@
-           ga_append(&ga, NUL);
-           retval = (char_u *)ga.ga_data;
-       }
-+#ifdef FEAT_FLOAT
-+      else if (convert && tv.v_type == VAR_FLOAT)
-+      {
-+          vim_snprintf((char *)numbuf, NUMBUFLEN, "%g", tv.vval.v_float);
-+          retval = vim_strsave(numbuf);
-+      }
-+#endif
-       else
-           retval = vim_strsave(get_tv_string(&tv));
-       clear_tv(&tv);
-@@ -3277,7 +3294,7 @@
-     if (*startarg != '(')
-     {
--      EMSG2(_("E107: Missing braces: %s"), eap->arg);
-+      EMSG2(_("E107: Missing parentheses: %s"), eap->arg);
-       goto end;
-     }
-@@ -3657,8 +3674,8 @@
- }
- /*
-- * Return TRUE if typeval "tv" is locked: Either tha value is locked itself or
-- * it refers to a List or Dictionary that is locked.
-+ * Return TRUE if typeval "tv" is locked: Either that value is locked itself
-+ * or it refers to a List or Dictionary that is locked.
-  */
-     static int
- tv_islocked(tv)
-@@ -6047,6 +6064,25 @@
- }
- /*
-+ * Get list item "l[idx - 1]" as a string.  Returns NULL for failure.
-+ */
-+    char_u *
-+list_find_str(l, idx)
-+    list_T    *l;
-+    long      idx;
-+{
-+    listitem_T        *li;
-+
-+    li = list_find(l, idx - 1);
-+    if (li == NULL)
-+    {
-+      EMSGN(_(e_listidx), idx);
-+      return NULL;
-+    }
-+    return get_tv_string(&li->li_tv);
-+}
-+
-+/*
-  * Locate "item" list "l" and return its index.
-  * Returns -1 when "item" is not in the list.
-  */
-@@ -6137,7 +6173,7 @@
-  * When "len" >= 0 use "str[len]".
-  * Returns FAIL when out of memory.
-  */
--    static int
-+    int
- list_append_string(l, str, len)
-     list_T    *l;
-     char_u    *str;
-@@ -6497,6 +6533,9 @@
-       set_ref_in_ht(&fc->l_avars.dv_hashtab, copyID);
-     }
-+    /* v: vars */
-+    set_ref_in_ht(&vimvarht, copyID);
-+
-     /*
-      * 2. Go through the list of dicts and free items without the copyID.
-      */
-@@ -6587,7 +6626,7 @@
-     {
-       case VAR_DICT:
-           dd = tv->vval.v_dict;
--          if (dd->dv_copyID != copyID)
-+          if (dd != NULL && dd->dv_copyID != copyID)
-           {
-               /* Didn't see this dict yet. */
-               dd->dv_copyID = copyID;
-@@ -6597,7 +6636,7 @@
-       case VAR_LIST:
-           ll = tv->vval.v_list;
--          if (ll->lv_copyID != copyID)
-+          if (ll != NULL && ll->lv_copyID != copyID)
-           {
-               /* Didn't see this list yet. */
-               ll->lv_copyID = copyID;
-@@ -7525,8 +7564,8 @@
-     {"getwinposx",    0, 0, f_getwinposx},
-     {"getwinposy",    0, 0, f_getwinposy},
-     {"getwinvar",     2, 2, f_getwinvar},
--    {"glob",          1, 1, f_glob},
--    {"globpath",      2, 2, f_globpath},
-+    {"glob",          1, 2, f_glob},
-+    {"globpath",      2, 3, f_globpath},
-     {"has",           1, 1, f_has},
-     {"has_key",               2, 2, f_has_key},
-     {"haslocaldir",   0, 0, f_haslocaldir},
-@@ -9518,7 +9557,7 @@
-     else
-     {
-       /* When the optional second argument is non-zero, don't remove matches
--       * for 'suffixes' and 'wildignore' */
-+       * for 'wildignore' and don't put matches for 'suffixes' at the end. */
-       if (argvars[1].v_type != VAR_UNKNOWN
-                                   && get_tv_number_chk(&argvars[1], &error))
-           flags |= WILD_KEEP_ALL;
-@@ -10300,7 +10339,8 @@
-     s = get_tv_string(&argvars[0]);
-     if (s == NULL || *s == NUL || VIM_ISDIGIT(*s))
-       EMSG2(_(e_invarg2), s);
--    else if (!function_exists(s))
-+    /* Don't check an autoload name for existence here. */
-+    else if (vim_strchr(s, AUTOLOAD_CHAR) == NULL && !function_exists(s))
-       EMSG2(_("E700: Unknown function: %s"), s);
-     else
-     {
-@@ -10602,7 +10642,7 @@
- # ifdef FEAT_WINDOWS
-           win_T       *wp;
- # endif
--          int         n = 1;
-+          int         winnr = 1;
-           if (row >= 0 && col >= 0)
-           {
-@@ -10612,9 +10652,9 @@
-               (void)mouse_comp_pos(win, &row, &col, &lnum);
- # ifdef FEAT_WINDOWS
-               for (wp = firstwin; wp != win; wp = wp->w_next)
--                  ++n;
-+                  ++winnr;
- # endif
--              vimvars[VV_MOUSE_WIN].vv_nr = n;
-+              vimvars[VV_MOUSE_WIN].vv_nr = winnr;
-               vimvars[VV_MOUSE_LNUM].vv_nr = lnum;
-               vimvars[VV_MOUSE_COL].vv_nr = col + 1;
-           }
-@@ -11284,13 +11324,25 @@
-     typval_T  *argvars;
-     typval_T  *rettv;
- {
-+    int               flags = WILD_SILENT|WILD_USE_NL;
-     expand_T  xpc;
-+    int               error = FALSE;
--    ExpandInit(&xpc);
--    xpc.xp_context = EXPAND_FILES;
-+    /* When the optional second argument is non-zero, don't remove matches
-+    * for 'wildignore' and don't put matches for 'suffixes' at the end. */
-+    if (argvars[1].v_type != VAR_UNKNOWN
-+                              && get_tv_number_chk(&argvars[1], &error))
-+      flags |= WILD_KEEP_ALL;
-     rettv->v_type = VAR_STRING;
--    rettv->vval.v_string = ExpandOne(&xpc, get_tv_string(&argvars[0]),
--                                   NULL, WILD_USE_NL|WILD_SILENT, WILD_ALL);
-+    if (!error)
-+    {
-+      ExpandInit(&xpc);
-+      xpc.xp_context = EXPAND_FILES;
-+      rettv->vval.v_string = ExpandOne(&xpc, get_tv_string(&argvars[0]),
-+                                                     NULL, flags, WILD_ALL);
-+    }
-+    else
-+      rettv->vval.v_string = NULL;
- }
- /*
-@@ -11301,14 +11353,22 @@
-     typval_T  *argvars;
-     typval_T  *rettv;
- {
-+    int               flags = 0;
-     char_u    buf1[NUMBUFLEN];
-     char_u    *file = get_tv_string_buf_chk(&argvars[1], buf1);
-+    int               error = FALSE;
-+    /* When the optional second argument is non-zero, don't remove matches
-+    * for 'wildignore' and don't put matches for 'suffixes' at the end. */
-+    if (argvars[2].v_type != VAR_UNKNOWN
-+                              && get_tv_number_chk(&argvars[2], &error))
-+      flags |= WILD_KEEP_ALL;
-     rettv->v_type = VAR_STRING;
--    if (file == NULL)
-+    if (file == NULL || error)
-       rettv->vval.v_string = NULL;
-     else
--      rettv->vval.v_string = globpath(get_tv_string(&argvars[0]), file);
-+      rettv->vval.v_string = globpath(get_tv_string(&argvars[0]), file,
-+                                                                     flags);
- }
- /*
-@@ -15838,10 +15898,9 @@
-     if (res == FAIL)
-       res = ITEM_COMPARE_FAIL;
-     else
--      /* return value has wrong type */
-       res = get_tv_number_chk(&rettv, &item_compare_func_err);
-     if (item_compare_func_err)
--      res = ITEM_COMPARE_FAIL;
-+      res = ITEM_COMPARE_FAIL;  /* return value has wrong type */
-     clear_tv(&rettv);
-     return res;
- }
-@@ -16590,8 +16649,11 @@
-               p = highlight_has_attr(id, HL_INVERSE, modec);
-               break;
--      case 's':                                       /* standout */
--              p = highlight_has_attr(id, HL_STANDOUT, modec);
-+      case 's':
-+              if (TOLOWER_ASC(what[1]) == 'p')        /* sp[#] */
-+                  p = highlight_color(id, what, modec);
-+              else                                    /* standout */
-+                  p = highlight_has_attr(id, HL_STANDOUT, modec);
-               break;
-       case 'u':
-@@ -16658,7 +16720,7 @@
-     col = get_tv_number(&argvars[1]) - 1;     /* -1 on type error */
-     if (lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count
--          && col >= 0 && col < (long)STRLEN(ml_get(lnum))
-+          && col >= 0 && (col == 0 || col < (long)STRLEN(ml_get(lnum)))
-           && rettv_list_alloc(rettv) != FAIL)
-     {
-       (void)syn_get_id(curwin, lnum, (colnr_T)col, FALSE, NULL, TRUE);
-@@ -18097,14 +18159,28 @@
- }
- /*
-- * Set v:count, v:count1 and v:prevcount.
-+ * Get List v: variable value.  Caller must take care of reference count when
-+ * needed.
-+ */
-+    list_T *
-+get_vim_var_list(idx)
-+    int               idx;
-+{
-+    return vimvars[idx].vv_list;
-+}
-+
-+/*
-+ * Set v:count to "count" and v:count1 to "count1".
-+ * When "set_prevcount" is TRUE first set v:prevcount from v:count.
-  */
-     void
--set_vcount(count, count1)
-+set_vcount(count, count1, set_prevcount)
-     long      count;
-     long      count1;
-+    int               set_prevcount;
- {
--    vimvars[VV_PREVCOUNT].vv_nr = vimvars[VV_COUNT].vv_nr;
-+    if (set_prevcount)
-+      vimvars[VV_PREVCOUNT].vv_nr = vimvars[VV_COUNT].vv_nr;
-     vimvars[VV_COUNT].vv_nr = count;
-     vimvars[VV_COUNT1].vv_nr = count1;
- }
-@@ -18132,6 +18208,20 @@
- }
- /*
-+ * Set List v: variable to "val".
-+ */
-+    void
-+set_vim_var_list(idx, val)
-+    int               idx;
-+    list_T    *val;
-+{
-+    list_unref(vimvars[idx].vv_list);
-+    vimvars[idx].vv_list = val;
-+    if (val != NULL)
-+      ++val->lv_refcount;
-+}
-+
-+/*
-  * Set v:register if needed.
-  */
-     void
-@@ -20590,6 +20680,9 @@
-     int               st_len = 0;
-     todo = (int)func_hashtab.ht_used;
-+    if (todo == 0)
-+      return;     /* nothing to dump */
-+
-     sorttab = (ufunc_T **)alloc((unsigned)(sizeof(ufunc_T) * todo));
-     for (hi = func_hashtab.ht_array; todo > 0; ++hi)
-@@ -20638,6 +20731,8 @@
-                                                             prof_self_cmp);
-       prof_sort_list(fd, sorttab, st_len, "SELF", TRUE);
-     }
-+
-+    vim_free(sorttab);
- }
-     static void
-@@ -21082,8 +21177,11 @@
-     init_var_dict(&fc.l_avars, &fc.l_avars_var);
-     add_nr_var(&fc.l_avars, &fc.fixvar[fixvar_idx++].var, "0",
-                               (varnumber_T)(argcount - fp->uf_args.ga_len));
-+    /* Use "name" to avoid a warning from some compiler that checks the
-+     * destination size. */
-     v = &fc.fixvar[fixvar_idx++].var;
--    STRCPY(v->di_key, "000");
-+    name = v->di_key;
-+    STRCPY(name, "000");
-     v->di_flags = DI_FLAGS_RO | DI_FLAGS_FIX;
-     hash_add(&fc.l_avars.dv_hashtab, DI2HIKEY(v));
-     v->di_tv.v_type = VAR_LIST;
-@@ -21204,7 +21302,7 @@
-       if (!fp->uf_profiling && has_profiling(FALSE, fp->uf_name, NULL))
-           func_do_profile(fp);
-       if (fp->uf_profiling
--                     || (fc.caller != NULL && &fc.caller->func->uf_profiling))
-+                     || (fc.caller != NULL && fc.caller->func->uf_profiling))
-       {
-           ++fp->uf_tm_count;
-           profile_start(&call_start);
-@@ -21235,13 +21333,13 @@
- #ifdef FEAT_PROFILE
-     if (do_profiling == PROF_YES && (fp->uf_profiling
--                  || (fc.caller != NULL && &fc.caller->func->uf_profiling)))
-+                  || (fc.caller != NULL && fc.caller->func->uf_profiling)))
-     {
-       profile_end(&call_start);
-       profile_sub_wait(&wait_start, &call_start);
-       profile_add(&fp->uf_tm_total, &call_start);
-       profile_self(&fp->uf_tm_self, &call_start, &fp->uf_tm_children);
--      if (fc.caller != NULL && &fc.caller->func->uf_profiling)
-+      if (fc.caller != NULL && fc.caller->func->uf_profiling)
-       {
-           profile_add(&fc.caller->func->uf_tm_children, &call_start);
-           profile_add(&fc.caller->func->uf_tml_children, &call_start);
-@@ -21886,6 +21984,62 @@
-     }
- }
-+/*
-+ * List v:oldfiles in a nice way.
-+ */
-+/*ARGSUSED*/
-+    void
-+ex_oldfiles(eap)
-+    exarg_T   *eap;
-+{
-+    list_T    *l = vimvars[VV_OLDFILES].vv_list;
-+    listitem_T        *li;
-+    int               nr = 0;
-+
-+    if (l == NULL)
-+      msg((char_u *)_("No old files"));
-+    else
-+    {
-+      msg_start();
-+      msg_scroll = TRUE;
-+      for (li = l->lv_first; li != NULL && !got_int; li = li->li_next)
-+      {
-+          msg_outnum((long)++nr);
-+          MSG_PUTS(": ");
-+          msg_outtrans(get_tv_string(&li->li_tv));
-+          msg_putchar('\n');
-+          out_flush();            /* output one line at a time */
-+          ui_breakcheck();
-+      }
-+      /* Assume "got_int" was set to truncate the listing. */
-+      got_int = FALSE;
-+
-+#ifdef FEAT_BROWSE_CMD
-+      if (cmdmod.browse)
-+      {
-+          quit_more = FALSE;
-+          nr = prompt_for_number(FALSE);
-+          msg_starthere();
-+          if (nr > 0)
-+          {
-+              char_u *p = list_find_str(get_vim_var_list(VV_OLDFILES),
-+                                                                  (long)nr);
-+
-+              if (p != NULL)
-+              {
-+                  p = expand_env_save(p);
-+                  eap->arg = p;
-+                  eap->cmdidx = CMD_edit;
-+                  cmdmod.browse = FALSE;
-+                  do_exedit(eap, NULL);
-+                  vim_free(p);
-+              }
-+          }
-+      }
-+#endif
-+    }
-+}
-+
- #endif /* FEAT_EVAL */
-diff -Naur vim72.orig/src/ex_cmds2.c vim72/src/ex_cmds2.c
---- vim72.orig/src/ex_cmds2.c  2008-07-13 17:18:22.000000000 +0100
-+++ vim72/src/ex_cmds2.c       2008-12-06 11:37:49.000000000 +0000
-@@ -2132,8 +2132,8 @@
-        * argument index. */
-       if (do_ecmd(0, alist_name(&ARGLIST[curwin->w_arg_idx]), NULL,
-                     eap, ECMD_LAST,
--                    (P_HID(curwin->w_buffer) ? ECMD_HIDE : 0) +
--                                 (eap->forceit ? ECMD_FORCEIT : 0)) == FAIL)
-+                    (P_HID(curwin->w_buffer) ? ECMD_HIDE : 0)
-+                       + (eap->forceit ? ECMD_FORCEIT : 0), curwin) == FAIL)
-           curwin->w_arg_idx = old_arg_idx;
-       /* like Vi: set the mark where the cursor is in the file. */
-       else if (eap->cmdidx != CMD_argdo)
-@@ -3145,8 +3145,8 @@
-       verbose_leave();
-     }
- #ifdef STARTUPTIME
--    vim_snprintf(IObuff, IOSIZE, "sourcing %s", fname);
--    time_msg(IObuff, &tv_start);
-+    vim_snprintf((char *)IObuff, IOSIZE, "sourcing %s", fname);
-+    time_msg((char *)IObuff, &tv_start);
-     time_pop(&tv_rel);
- #endif
-diff -Naur vim72.orig/src/ex_cmds.c vim72/src/ex_cmds.c
---- vim72.orig/src/ex_cmds.c   2008-08-04 20:15:00.000000000 +0100
-+++ vim72/src/ex_cmds.c        2008-12-06 11:37:50.000000000 +0000
-@@ -24,7 +24,7 @@
- static void do_filter __ARGS((linenr_T line1, linenr_T line2, exarg_T *eap, char_u *cmd, int do_in, int do_out));
- #ifdef FEAT_VIMINFO
- static char_u *viminfo_filename __ARGS((char_u        *));
--static void do_viminfo __ARGS((FILE *fp_in, FILE *fp_out, int want_info, int want_marks, int force_read));
-+static void do_viminfo __ARGS((FILE *fp_in, FILE *fp_out, int flags));
- static int viminfo_encoding __ARGS((vir_T *virp));
- static int read_viminfo_up_to_marks __ARGS((vir_T *virp, int forceit, int writing));
- #endif
-@@ -1676,14 +1676,12 @@
- /*
-  * read_viminfo() -- Read the viminfo file.  Registers etc. which are already
-- * set are not over-written unless force is TRUE. -- webb
-+ * set are not over-written unless "flags" includes VIF_FORCEIT. -- webb
-  */
-     int
--read_viminfo(file, want_info, want_marks, forceit)
--    char_u    *file;
--    int               want_info;
--    int               want_marks;
--    int               forceit;
-+read_viminfo(file, flags)
-+    char_u    *file;      /* file name or NULL to use default name */
-+    int               flags;      /* VIF_WANT_INFO et al. */
- {
-     FILE      *fp;
-     char_u    *fname;
-@@ -1691,7 +1689,7 @@
-     if (no_viminfo())
-       return FAIL;
--    fname = viminfo_filename(file);       /* may set to default if NULL */
-+    fname = viminfo_filename(file);   /* get file name in allocated buffer */
-     if (fname == NULL)
-       return FAIL;
-     fp = mch_fopen((char *)fname, READBIN);
-@@ -1701,8 +1699,9 @@
-       verbose_enter();
-       smsg((char_u *)_("Reading viminfo file \"%s\"%s%s%s"),
-               fname,
--              want_info ? _(" info") : "",
--              want_marks ? _(" marks") : "",
-+              (flags & VIF_WANT_INFO) ? _(" info") : "",
-+              (flags & VIF_WANT_MARKS) ? _(" marks") : "",
-+              (flags & VIF_GET_OLDFILES) ? _(" oldfiles") : "",
-               fp == NULL ? _(" FAILED") : "");
-       verbose_leave();
-     }
-@@ -1712,10 +1711,9 @@
-       return FAIL;
-     viminfo_errcnt = 0;
--    do_viminfo(fp, NULL, want_info, want_marks, forceit);
-+    do_viminfo(fp, NULL, flags);
-     fclose(fp);
--
-     return OK;
- }
-@@ -1943,7 +1941,7 @@
-            * root.
-            */
-           if (fp_out != NULL)
--              (void)fchown(fileno(fp_out), st_old.st_uid, st_old.st_gid);
-+              ignored = fchown(fileno(fp_out), st_old.st_uid, st_old.st_gid);
- #endif
-       }
-     }
-@@ -1968,7 +1966,7 @@
-     }
-     viminfo_errcnt = 0;
--    do_viminfo(fp_in, fp_out, !forceit, !forceit, FALSE);
-+    do_viminfo(fp_in, fp_out, forceit ? 0 : (VIF_WANT_INFO | VIF_WANT_MARKS));
-     fclose(fp_out);       /* errors are ignored !? */
-     if (fp_in != NULL)
-@@ -2041,12 +2039,10 @@
-  * do_viminfo() -- Should only be called from read_viminfo() & write_viminfo().
-  */
-     static void
--do_viminfo(fp_in, fp_out, want_info, want_marks, force_read)
-+do_viminfo(fp_in, fp_out, flags)
-     FILE      *fp_in;
-     FILE      *fp_out;
--    int               want_info;
--    int               want_marks;
--    int               force_read;
-+    int               flags;
- {
-     int               count = 0;
-     int               eof = FALSE;
-@@ -2061,8 +2057,9 @@
-     if (fp_in != NULL)
-     {
--      if (want_info)
--          eof = read_viminfo_up_to_marks(&vir, force_read, fp_out != NULL);
-+      if (flags & VIF_WANT_INFO)
-+          eof = read_viminfo_up_to_marks(&vir,
-+                                       flags & VIF_FORCEIT, fp_out != NULL);
-       else
-           /* Skip info, find start of marks */
-           while (!(eof = viminfo_readline(&vir))
-@@ -2092,8 +2089,9 @@
-       write_viminfo_bufferlist(fp_out);
-       count = write_viminfo_marks(fp_out);
-     }
--    if (fp_in != NULL && want_marks)
--      copy_viminfo_marks(&vir, fp_out, count, eof);
-+    if (fp_in != NULL
-+          && (flags & (VIF_WANT_MARKS | VIF_GET_OLDFILES | VIF_FORCEIT)))
-+      copy_viminfo_marks(&vir, fp_out, count, eof, flags);
-     vim_free(vir.vir_line);
- #ifdef FEAT_MBYTE
-@@ -3054,7 +3052,8 @@
-       retval = 0;     /* it's in the same file */
-     }
-     else if (do_ecmd(fnum, ffname, sfname, NULL, lnum,
--              (P_HID(curbuf) ? ECMD_HIDE : 0) + (forceit ? ECMD_FORCEIT : 0)) == OK)
-+              (P_HID(curbuf) ? ECMD_HIDE : 0) + (forceit ? ECMD_FORCEIT : 0),
-+              curwin) == OK)
-       retval = -1;    /* opened another file */
-     else
-       retval = 1;     /* error encountered */
-@@ -3087,17 +3086,21 @@
-  *     ECMD_OLDBUF: use existing buffer if it exists
-  *    ECMD_FORCEIT: ! used for Ex command
-  *     ECMD_ADDBUF: don't edit, just add to buffer list
-+ *   oldwin: Should be "curwin" when editing a new buffer in the current
-+ *           window, NULL when splitting the window first.  When not NULL info
-+ *           of the previous buffer for "oldwin" is stored.
-  *
-  * return FAIL for failure, OK otherwise
-  */
-     int
--do_ecmd(fnum, ffname, sfname, eap, newlnum, flags)
-+do_ecmd(fnum, ffname, sfname, eap, newlnum, flags, oldwin)
-     int               fnum;
-     char_u    *ffname;
-     char_u    *sfname;
-     exarg_T   *eap;                   /* can be NULL! */
-     linenr_T  newlnum;
-     int               flags;
-+    win_T     *oldwin;
- {
-     int               other_file;             /* TRUE if editing another file */
-     int               oldbuf;                 /* TRUE if using existing buffer */
-@@ -3269,7 +3272,8 @@
-       {
-           if (!cmdmod.keepalt)
-               curwin->w_alt_fnum = curbuf->b_fnum;
--          buflist_altfpos();
-+          if (oldwin != NULL)
-+              buflist_altfpos(oldwin);
-       }
-       if (fnum)
-@@ -3373,7 +3377,7 @@
-               /* close the link to the current buffer */
-               u_sync(FALSE);
--              close_buffer(curwin, curbuf,
-+              close_buffer(oldwin, curbuf,
-                                     (flags & ECMD_HIDE) ? 0 : DOBUF_UNLOAD);
- #ifdef FEAT_AUTOCMD
-@@ -5059,6 +5063,7 @@
-           if (did_sub)
-               ++sub_nlines;
-+          vim_free(new_start);        /* for when substitute was cancelled */
-           vim_free(sub_firstline);    /* free the copy of the original line */
-           sub_firstline = NULL;
-       }
-@@ -5610,7 +5615,13 @@
-            */
-           alt_fnum = curbuf->b_fnum;
-           (void)do_ecmd(0, NULL, NULL, NULL, ECMD_LASTL,
--                                                 ECMD_HIDE + ECMD_SET_HELP);
-+                        ECMD_HIDE + ECMD_SET_HELP,
-+#ifdef FEAT_WINDOWS
-+                        NULL  /* buffer is still open, don't store info */
-+#else
-+                        curwin
-+#endif
-+                  );
-           if (!cmdmod.keepalt)
-               curwin->w_alt_fnum = alt_fnum;
-           empty_fnum = curbuf->b_fnum;
-diff -Naur vim72.orig/src/ex_cmds.h vim72/src/ex_cmds.h
---- vim72.orig/src/ex_cmds.h   2008-06-21 19:47:57.000000000 +0100
-+++ vim72/src/ex_cmds.h        2008-12-06 11:37:49.000000000 +0000
-@@ -278,7 +278,7 @@
- EX(CMD_crewind,               "crewind",      ex_cc,
-                       RANGE|NOTADR|COUNT|TRLBAR|BANG),
- EX(CMD_cscope,                "cscope",       do_cscope,
--                      EXTRA|NOTRLCOM|SBOXOK|XFILE),
-+                      EXTRA|NOTRLCOM|XFILE),
- EX(CMD_cstag,         "cstag",        do_cstag,
-                       BANG|TRLBAR|WORD1),
- EX(CMD_cunmap,                "cunmap",       ex_unmap,
-@@ -506,7 +506,7 @@
- EX(CMD_lclose,                "lclose",       ex_cclose,
-                       RANGE|NOTADR|COUNT|TRLBAR),
- EX(CMD_lcscope,               "lcscope",      do_cscope,
--                      EXTRA|NOTRLCOM|SBOXOK|XFILE),
-+                      EXTRA|NOTRLCOM|XFILE),
- EX(CMD_left,          "left",         ex_align,
-                       TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY),
- EX(CMD_leftabove,     "leftabove",    ex_wrongmodifier,
-@@ -635,6 +635,8 @@
-                       RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
- EX(CMD_noremap,               "noremap",      ex_map,
-                       BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
-+EX(CMD_noautocmd,     "noautocmd",    ex_wrongmodifier,
-+                      NEEDARG|EXTRA|NOTRLCOM),
- EX(CMD_nohlsearch,    "nohlsearch",   ex_nohlsearch,
-                       TRLBAR|SBOXOK|CMDWIN),
- EX(CMD_noreabbrev,    "noreabbrev",   ex_abbreviate,
-@@ -651,6 +653,8 @@
-                       EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
- EX(CMD_open,          "open",         ex_open,
-                       RANGE|EXTRA),
-+EX(CMD_oldfiles,      "oldfiles",     ex_oldfiles,
-+                      BANG|TRLBAR|SBOXOK|CMDWIN),
- EX(CMD_omap,          "omap",         ex_map,
-                       EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
- EX(CMD_omapclear,     "omapclear",    ex_mapclear,
-@@ -802,7 +806,7 @@
- EX(CMD_scriptencoding,        "scriptencoding", ex_scriptencoding,
-                       WORD1|TRLBAR|CMDWIN),
- EX(CMD_scscope,               "scscope",      do_scscope,
--                      EXTRA|NOTRLCOM|SBOXOK),
-+                      EXTRA|NOTRLCOM),
- EX(CMD_set,           "set",          ex_set,
-                       TRLBAR|EXTRA|CMDWIN|SBOXOK),
- EX(CMD_setfiletype,   "setfiletype",  ex_setfiletype,
-diff -Naur vim72.orig/src/ex_docmd.c vim72/src/ex_docmd.c
---- vim72.orig/src/ex_docmd.c  2008-07-26 12:51:05.000000000 +0100
-+++ vim72/src/ex_docmd.c       2008-12-06 11:37:50.000000000 +0000
-@@ -364,6 +364,7 @@
- # define ex_function          ex_ni
- # define ex_delfunction               ex_ni
- # define ex_return            ex_ni
-+# define ex_oldfiles          ex_ni
- #endif
- static char_u *arg_all __ARGS((void));
- #ifdef FEAT_SESSION
-@@ -1770,7 +1771,7 @@
-                       }
-                       if (checkforcmd(&ea.cmd, "browse", 3))
-                       {
--#ifdef FEAT_BROWSE
-+#ifdef FEAT_BROWSE_CMD
-                           cmdmod.browse = TRUE;
- #endif
-                           continue;
-@@ -2978,6 +2979,7 @@
-     {"keepmarks", 3, FALSE},
-     {"leftabove", 5, FALSE},
-     {"lockmarks", 3, FALSE},
-+    {"noautocmd", 3, FALSE},
-     {"rightbelow", 6, FALSE},
-     {"sandbox", 3, FALSE},
-     {"silent", 3, FALSE},
-@@ -3608,6 +3610,7 @@
-           return set_context_in_autocmd(xp, arg, FALSE);
-       case CMD_doautocmd:
-+      case CMD_doautoall:
-           return set_context_in_autocmd(xp, arg, TRUE);
- #endif
-       case CMD_set:
-@@ -7485,7 +7488,8 @@
-       /* ":new" or ":tabnew" without argument: edit an new empty buffer */
-       setpcmark();
-       (void)do_ecmd(0, NULL, NULL, eap, ECMD_ONE,
--                             ECMD_HIDE + (eap->forceit ? ECMD_FORCEIT : 0));
-+                    ECMD_HIDE + (eap->forceit ? ECMD_FORCEIT : 0),
-+                    old_curwin == NULL ? curwin : NULL);
-     }
-     else if ((eap->cmdidx != CMD_split
- #ifdef FEAT_VERTSPLIT
-@@ -7522,7 +7526,7 @@
- #ifdef FEAT_LISTCMDS
-                   + (eap->cmdidx == CMD_badd ? ECMD_ADDBUF : 0 )
- #endif
--                  ) == FAIL)
-+                  , old_curwin == NULL ? curwin : NULL) == FAIL)
-       {
-           /* Editing the file failed.  If the window was split, close it. */
- #ifdef FEAT_WINDOWS
-@@ -8749,8 +8753,8 @@
-               else if (*dirnow != NUL
-                       && (ssop_flags & SSOP_CURDIR) && globaldir != NULL)
-               {
--                  (void)mch_chdir((char *)globaldir);
--                  shorten_fnames(TRUE);
-+                  if (mch_chdir((char *)globaldir) == OK)
-+                      shorten_fnames(TRUE);
-               }
-               failed |= (makeopens(fd, dirnow) == FAIL);
-@@ -9506,24 +9510,50 @@
-                   break;
-               }
-               s = src + 1;
-+              if (*s == '<')          /* "#<99" uses v:oldfiles */
-+                  ++s;
-               i = (int)getdigits(&s);
-               *usedlen = (int)(s - src); /* length of what we expand */
--              buf = buflist_findnr(i);
--              if (buf == NULL)
-+              if (src[1] == '<')
-               {
--                  *errormsg = (char_u *)_("E194: No alternate file name to substitute for '#'");
-+                  if (*usedlen < 2)
-+                  {
-+                      /* Should we give an error message for #<text? */
-+                      *usedlen = 1;
-+                      return NULL;
-+                  }
-+#ifdef FEAT_EVAL
-+                  result = list_find_str(get_vim_var_list(VV_OLDFILES),
-+                                                                   (long)i);
-+                  if (result == NULL)
-+                  {
-+                      *errormsg = (char_u *)"";
-+                      return NULL;
-+                  }
-+#else
-+                  *errormsg = (char_u *)_("E809: #< is not available without the +eval feature");
-                   return NULL;
-+#endif
-               }
--              if (lnump != NULL)
--                  *lnump = ECMD_LAST;
--              if (buf->b_fname == NULL)
-+              else
-               {
--                  result = (char_u *)"";
--                  valid = 0;      /* Must have ":p:h" to be valid */
-+                  buf = buflist_findnr(i);
-+                  if (buf == NULL)
-+                  {
-+                      *errormsg = (char_u *)_("E194: No alternate file name to substitute for '#'");
-+                      return NULL;
-+                  }
-+                  if (lnump != NULL)
-+                      *lnump = ECMD_LAST;
-+                  if (buf->b_fname == NULL)
-+                  {
-+                      result = (char_u *)"";
-+                      valid = 0;          /* Must have ":p:h" to be valid */
-+                  }
-+                  else
-+                      result = buf->b_fname;
-               }
--              else
--                  result = buf->b_fname;
-               break;
- #ifdef FEAT_SEARCHPATH
-@@ -9541,6 +9571,15 @@
- #ifdef FEAT_AUTOCMD
-       case SPEC_AFILE:        /* file name for autocommand */
-               result = autocmd_fname;
-+              if (result != NULL && !autocmd_fname_full)
-+              {
-+                  /* Still need to turn the fname into a full path.  It is
-+                   * postponed to avoid a delay when <afile> is not used. */
-+                  autocmd_fname_full = TRUE;
-+                  result = FullName_save(autocmd_fname, FALSE);
-+                  vim_free(autocmd_fname);
-+                  autocmd_fname = result;
-+              }
-               if (result == NULL)
-               {
-                   *errormsg = (char_u *)_("E495: no autocommand file name to substitute for \"<afile>\"");
-@@ -10689,7 +10728,8 @@
-       p_viminfo = (char_u *)"'100";
-     if (eap->cmdidx == CMD_rviminfo)
-     {
--      if (read_viminfo(eap->arg, TRUE, TRUE, eap->forceit) == FAIL)
-+      if (read_viminfo(eap->arg, VIF_WANT_INFO | VIF_WANT_MARKS
-+                                | (eap->forceit ? VIF_FORCEIT : 0)) == FAIL)
-           EMSG(_("E195: Cannot open viminfo file for reading"));
-     }
-     else
-diff -Naur vim72.orig/src/ex_getln.c vim72/src/ex_getln.c
---- vim72.orig/src/ex_getln.c  2008-08-08 10:31:33.000000000 +0100
-+++ vim72/src/ex_getln.c       2008-12-06 11:37:50.000000000 +0000
-@@ -31,6 +31,8 @@
-     int               cmdattr;        /* attributes for prompt */
-     int               overstrike;     /* Typing mode on the command line.  Shared by
-                                  getcmdline() and put_on_cmdline(). */
-+    expand_T  *xpc;           /* struct being used for expansion, xp_pattern
-+                                 may point into cmdbuff */
-     int               xp_context;     /* type of expansion */
- # ifdef FEAT_EVAL
-     char_u    *xp_arg;        /* user-defined expansion arg */
-@@ -38,7 +40,11 @@
- # endif
- };
--static struct cmdline_info ccline;    /* current cmdline_info */
-+/* The current cmdline_info.  It is initialized in getcmdline() and after that
-+ * used by other functions.  When invoking getcmdline() recursively it needs
-+ * to be saved with save_cmdline() and restored with restore_cmdline().
-+ * TODO: make it local to getcmdline() and pass it around. */
-+static struct cmdline_info ccline;
- static int    cmd_showtail;           /* Only show path tail in lists ? */
-@@ -238,6 +244,7 @@
-     }
-     ExpandInit(&xpc);
-+    ccline.xpc = &xpc;
- #ifdef FEAT_RIGHTLEFT
-     if (curwin->w_p_rl && *curwin->w_p_rlc == 's'
-@@ -408,9 +415,10 @@
- #endif
-       /*
--       * <S-Tab> works like CTRL-P (unless 'wc' is <S-Tab>).
-+       * When there are matching completions to select <S-Tab> works like
-+       * CTRL-P (unless 'wc' is <S-Tab>).
-        */
--      if (c != p_wc && c == K_S_TAB && xpc.xp_numfiles != -1)
-+      if (c != p_wc && c == K_S_TAB && xpc.xp_numfiles > 0)
-           c = Ctrl_P;
- #ifdef FEAT_WILDMENU
-@@ -1513,6 +1521,7 @@
-                   int         old_firstc;
-                   vim_free(ccline.cmdbuff);
-+                  xpc.xp_context = EXPAND_NOTHING;
-                   if (hiscnt == hislen)
-                       p = lookfor;    /* back to the old one */
-                   else
-@@ -1839,6 +1848,7 @@
- #endif
-     ExpandCleanup(&xpc);
-+    ccline.xpc = NULL;
- #ifdef FEAT_SEARCH_EXTRA
-     if (did_incsearch)
-@@ -2508,6 +2518,20 @@
-     }
-     mch_memmove(ccline.cmdbuff, p, (size_t)ccline.cmdlen + 1);
-     vim_free(p);
-+
-+    if (ccline.xpc != NULL
-+          && ccline.xpc->xp_pattern != NULL
-+          && ccline.xpc->xp_context != EXPAND_NOTHING
-+          && ccline.xpc->xp_context != EXPAND_UNSUCCESSFUL)
-+    {
-+      int i = (int)(ccline.xpc->xp_pattern - p);
-+
-+      /* If xp_pattern points inside the old cmdbuff it needs to be adjusted
-+       * to point into the newly allocated memory. */
-+      if (i >= 0 && i <= ccline.cmdlen)
-+          ccline.xpc->xp_pattern = ccline.cmdbuff + i;
-+    }
-+
-     return OK;
- }
-@@ -2875,6 +2899,7 @@
-     prev_ccline = ccline;
-     ccline.cmdbuff = NULL;
-     ccline.cmdprompt = NULL;
-+    ccline.xpc = NULL;
- }
- /*
-@@ -3582,6 +3607,7 @@
- ExpandInit(xp)
-     expand_T  *xp;
- {
-+    xp->xp_pattern = NULL;
-     xp->xp_backslash = XP_BS_NONE;
- #ifndef BACKSLASH_IN_FILENAME
-     xp->xp_shell = FALSE;
-@@ -4871,7 +4897,7 @@
-     if (s == NULL)
-       return FAIL;
-     sprintf((char *)s, "%s/%s*.vim", dirname, pat);
--    all = globpath(p_rtp, s);
-+    all = globpath(p_rtp, s, 0);
-     vim_free(s);
-     if (all == NULL)
-       return FAIL;
-@@ -4912,9 +4938,10 @@
-  * newlines.  Returns NULL for an error or no matches.
-  */
-     char_u *
--globpath(path, file)
-+globpath(path, file, expand_options)
-     char_u    *path;
-     char_u    *file;
-+    int               expand_options;
- {
-     expand_T  xpc;
-     char_u    *buf;
-@@ -4943,10 +4970,10 @@
-       {
-           add_pathsep(buf);
-           STRCAT(buf, file);
--          if (ExpandFromContext(&xpc, buf, &num_p, &p, WILD_SILENT) != FAIL
--                                                               && num_p > 0)
-+          if (ExpandFromContext(&xpc, buf, &num_p, &p,
-+                           WILD_SILENT|expand_options) != FAIL && num_p > 0)
-           {
--              ExpandEscape(&xpc, buf, num_p, p, WILD_SILENT);
-+              ExpandEscape(&xpc, buf, num_p, p, WILD_SILENT|expand_options);
-               for (len = 0, i = 0; i < num_p; ++i)
-                   len += (int)STRLEN(p[i]) + 1;
-@@ -6025,7 +6052,7 @@
-       cmdwin_type = '-';
-     /* Create the command-line buffer empty. */
--    (void)do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE);
-+    (void)do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE, NULL);
-     (void)setfname(curbuf, (char_u *)"[Command Line]", NULL, TRUE);
-     set_option_value((char_u *)"bt", 0L, (char_u *)"nofile", OPT_LOCAL);
-     set_option_value((char_u *)"swf", 0L, NULL, OPT_LOCAL);
-diff -Naur vim72.orig/src/feature.h vim72/src/feature.h
---- vim72.orig/src/feature.h   2008-08-06 12:00:39.000000000 +0100
-+++ vim72/src/feature.h        2008-12-06 11:37:49.000000000 +0000
-@@ -767,9 +767,13 @@
- /*
-  * +browse            ":browse" command.
-+ *                    or just the ":browse" command modifier
-  */
--#if defined(FEAT_NORMAL) && (defined(FEAT_GUI_MSWIN) || defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA) || defined(FEAT_GUI_GTK) || defined(FEAT_GUI_PHOTON) || defined(FEAT_GUI_MAC))
--# define FEAT_BROWSE
-+#if defined(FEAT_NORMAL)
-+# define FEAT_BROWSE_CMD
-+# if defined(FEAT_GUI_MSWIN) || defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA) || defined(FEAT_GUI_GTK) || defined(FEAT_GUI_PHOTON) || defined(FEAT_GUI_MAC)
-+#  define FEAT_BROWSE
-+# endif
- #endif
- /*
-diff -Naur vim72.orig/src/fileio.c vim72/src/fileio.c
---- vim72.orig/src/fileio.c    2008-08-06 12:01:03.000000000 +0100
-+++ vim72/src/fileio.c 2008-12-06 11:37:50.000000000 +0000
-@@ -932,7 +932,10 @@
-     else
-     {
-       if (eap != NULL && eap->force_ff != 0)
-+      {
-           fileformat = get_fileformat_force(curbuf, eap);
-+          try_unix = try_dos = try_mac = FALSE;
-+      }
-       else if (curbuf->b_p_bin)
-           fileformat = EOL_UNIX;              /* binary: use Unix format */
-       else if (*p_ffs == NUL)
-@@ -2211,7 +2214,7 @@
-     {
-       /* Use stderr for stdin, makes shell commands work. */
-       close(0);
--      dup(2);
-+      ignored = dup(2);
-     }
- #endif
-@@ -2341,11 +2344,6 @@
-               STRCAT(IObuff, _("[CR missing]"));
-               c = TRUE;
-           }
--          if (ff_error == EOL_MAC)
--          {
--              STRCAT(IObuff, _("[NL found]"));
--              c = TRUE;
--          }
-           if (split)
-           {
-               STRCAT(IObuff, _("[long lines split]"));
-@@ -2711,7 +2709,7 @@
- {
-     if (!curbuf->b_marks_read && get_viminfo_parameter('\'') > 0
-                                                 && curbuf->b_ffname != NULL)
--      read_viminfo(NULL, FALSE, TRUE, FALSE);
-+      read_viminfo(NULL, VIF_WANT_MARKS);
-     /* Always set b_marks_read; needed when 'viminfo' is changed to include
-      * the ' parameter after opening a buffer. */
-@@ -3451,7 +3449,7 @@
-               {
- # ifdef UNIX
- #  ifdef HAVE_FCHOWN
--                  fchown(fd, st_old.st_uid, st_old.st_gid);
-+                  ignored = fchown(fd, st_old.st_uid, st_old.st_gid);
- #  endif
-                   if (mch_stat((char *)IObuff, &st) < 0
-                           || st.st_uid != st_old.st_uid
-@@ -4367,7 +4365,7 @@
-               || st.st_uid != st_old.st_uid
-               || st.st_gid != st_old.st_gid)
-       {
--          fchown(fd, st_old.st_uid, st_old.st_gid);
-+          ignored = fchown(fd, st_old.st_uid, st_old.st_gid);
-           if (perm >= 0)      /* set permission again, may have changed */
-               (void)mch_setperm(wfname, perm);
-       }
-@@ -5550,9 +5548,10 @@
-           name = "ucs-4le";   /* FF FE 00 00 */
-           len = 4;
-       }
--      else if (flags == FIO_ALL || flags == (FIO_UCS2 | FIO_ENDIAN_L))
-+      else if (flags == (FIO_UCS2 | FIO_ENDIAN_L))
-           name = "ucs-2le";   /* FF FE */
--      else if (flags == (FIO_UTF16 | FIO_ENDIAN_L))
-+      else if (flags == FIO_ALL || flags == (FIO_UTF16 | FIO_ENDIAN_L))
-+          /* utf-16le is preferred, it also works for ucs-2le text */
-           name = "utf-16le";  /* FF FE */
-     }
-     else if (p[0] == 0xfe && p[1] == 0xff
-@@ -6031,9 +6030,9 @@
-       {
-           tbuf[FGETS_SIZE - 2] = NUL;
- #ifdef USE_CR
--          fgets_cr((char *)tbuf, FGETS_SIZE, fp);
-+          ignoredp = fgets_cr((char *)tbuf, FGETS_SIZE, fp);
- #else
--          fgets((char *)tbuf, FGETS_SIZE, fp);
-+          ignoredp = fgets((char *)tbuf, FGETS_SIZE, fp);
- #endif
-       } while (tbuf[FGETS_SIZE - 2] != NUL && tbuf[FGETS_SIZE - 2] != '\n');
-     }
-@@ -8523,6 +8522,7 @@
-     char_u    *save_sourcing_name;
-     linenr_T  save_sourcing_lnum;
-     char_u    *save_autocmd_fname;
-+    int               save_autocmd_fname_full;
-     int               save_autocmd_bufnr;
-     char_u    *save_autocmd_match;
-     int               save_autocmd_busy;
-@@ -8601,6 +8601,7 @@
-      * Save the autocmd_* variables and info about the current buffer.
-      */
-     save_autocmd_fname = autocmd_fname;
-+    save_autocmd_fname_full = autocmd_fname_full;
-     save_autocmd_bufnr = autocmd_bufnr;
-     save_autocmd_match = autocmd_match;
-     save_autocmd_busy = autocmd_busy;
-@@ -8618,14 +8619,15 @@
-       if (fname != NULL && *fname != NUL)
-           autocmd_fname = fname;
-       else if (buf != NULL)
--          autocmd_fname = buf->b_fname;
-+          autocmd_fname = buf->b_ffname;
-       else
-           autocmd_fname = NULL;
-     }
-     else
-       autocmd_fname = fname_io;
-     if (autocmd_fname != NULL)
--      autocmd_fname = FullName_save(autocmd_fname, FALSE);
-+      autocmd_fname = vim_strsave(autocmd_fname);
-+    autocmd_fname_full = FALSE; /* call FullName_save() later */
-     /*
-      * Set the buffer number to be used for <abuf>.
-@@ -8810,6 +8812,7 @@
-     sourcing_lnum = save_sourcing_lnum;
-     vim_free(autocmd_fname);
-     autocmd_fname = save_autocmd_fname;
-+    autocmd_fname_full = save_autocmd_fname_full;
-     autocmd_bufnr = save_autocmd_bufnr;
-     autocmd_match = save_autocmd_match;
- #ifdef FEAT_EVAL
-@@ -8918,7 +8921,7 @@
-     {
-       apc->curpat = NULL;
--      /* only use a pattern when it has not been removed, has commands and
-+      /* Only use a pattern when it has not been removed, has commands and
-        * the group matches. For buffer-local autocommands only check the
-        * buffer number. */
-       if (ap->pat != NULL && ap->cmds != NULL
-@@ -9104,7 +9107,7 @@
- set_context_in_autocmd(xp, arg, doautocmd)
-     expand_T  *xp;
-     char_u    *arg;
--    int               doautocmd;      /* TRUE for :doautocmd, FALSE for :autocmd */
-+    int               doautocmd;      /* TRUE for :doauto*, FALSE for :autocmd */
- {
-     char_u    *p;
-     int               group;
-diff -Naur vim72.orig/src/fold.c vim72/src/fold.c
---- vim72.orig/src/fold.c      2008-08-06 12:01:12.000000000 +0100
-+++ vim72/src/fold.c   2008-12-06 11:37:50.000000000 +0000
-@@ -48,7 +48,7 @@
- static int foldFind __ARGS((garray_T *gap, linenr_T lnum, fold_T **fpp));
- static int foldLevelWin __ARGS((win_T *wp, linenr_T lnum));
- static void checkupdate __ARGS((win_T *wp));
--static void setFoldRepeat __ARGS((linenr_T lnum, long count, int open));
-+static void setFoldRepeat __ARGS((linenr_T lnum, long count, int do_open));
- static linenr_T setManualFold __ARGS((linenr_T lnum, int opening, int recurse, int *donep));
- static linenr_T setManualFoldWin __ARGS((win_T *wp, linenr_T lnum, int opening, int recurse, int *donep));
- static void foldOpenNested __ARGS((fold_T *fpr));
-@@ -1241,10 +1241,10 @@
-  * Repeat "count" times.
-  */
-     static void
--setFoldRepeat(lnum, count, open)
-+setFoldRepeat(lnum, count, do_open)
-     linenr_T  lnum;
-     long      count;
--    int               open;
-+    int               do_open;
- {
-     int               done;
-     long      n;
-@@ -1252,7 +1252,7 @@
-     for (n = 0; n < count; ++n)
-     {
-       done = DONE_NOTHING;
--      (void)setManualFold(lnum, open, FALSE, &done);
-+      (void)setManualFold(lnum, do_open, FALSE, &done);
-       if (!(done & DONE_ACTION))
-       {
-           /* Only give an error message when no fold could be opened. */
-diff -Naur vim72.orig/src/getchar.c vim72/src/getchar.c
---- vim72.orig/src/getchar.c   2008-07-22 17:57:48.000000000 +0100
-+++ vim72/src/getchar.c        2008-12-06 11:37:50.000000000 +0000
-@@ -4702,7 +4702,7 @@
-                       return FAIL;
-                   if (mp->m_noremap != REMAP_YES && fprintf(fd, "nore") < 0)
-                       return FAIL;
--                  if (fprintf(fd, cmd) < 0)
-+                  if (fputs(cmd, fd) < 0)
-                       return FAIL;
-                   if (buf != NULL && fputs(" <buffer>", fd) < 0)
-                       return FAIL;
-@@ -4801,7 +4801,7 @@
-           }
-           if (IS_SPECIAL(c) || modifiers)     /* special key */
-           {
--              if (fprintf(fd, (char *)get_special_key_name(c, modifiers)) < 0)
-+              if (fputs((char *)get_special_key_name(c, modifiers), fd) < 0)
-                   return FAIL;
-               continue;
-           }
-diff -Naur vim72.orig/src/globals.h vim72/src/globals.h
---- vim72.orig/src/globals.h   2008-07-26 12:53:29.000000000 +0100
-+++ vim72/src/globals.h        2008-12-06 11:37:50.000000000 +0000
-@@ -1022,6 +1022,7 @@
- #endif
- #ifdef FEAT_AUTOCMD
- EXTERN char_u *autocmd_fname INIT(= NULL); /* fname for <afile> on cmdline */
-+EXTERN int    autocmd_fname_full;          /* autocmd_fname is full path */
- EXTERN int    autocmd_bufnr INIT(= 0);     /* fnum for <abuf> on cmdline */
- EXTERN char_u *autocmd_match INIT(= NULL); /* name for <amatch> on cmdline */
- EXTERN int    did_cursorhold INIT(= FALSE); /* set when CursorHold t'gerd */
-@@ -1548,6 +1549,14 @@
- EXTERN time_t starttime;
- /*
-+ * Some compilers warn for not using a return value, but in some situations we
-+ * can't do anything useful with the value.  Assign to this variable to avoid
-+ * the warning.
-+ */
-+EXTERN int ignored;
-+EXTERN char *ignoredp;
-+
-+/*
-  * Optional Farsi support.  Include it here, so EXTERN and INIT are defined.
-  */
- #ifdef FEAT_FKMAP
-diff -Naur vim72.orig/src/gui_at_sb.c vim72/src/gui_at_sb.c
---- vim72.orig/src/gui_at_sb.c 2004-06-07 15:32:25.000000000 +0100
-+++ vim72/src/gui_at_sb.c      2008-12-06 11:37:50.000000000 +0000
-@@ -1078,6 +1078,12 @@
-     Cardinal  *num_params;    /* unused */
- {
-     ScrollbarWidget sbw = (ScrollbarWidget)w;
-+    /* Use a union to avoid a warning for the weird conversion from float to
-+     * XtPointer.  Comes from Xaw/Scrollbar.c. */
-+    union {
-+      XtPointer xtp;
-+      float xtf;
-+    } xtpf;
-     if (LookAhead(w, event))
-       return;
-@@ -1085,7 +1091,8 @@
-     /* thumbProc is not pretty, but is necessary for backwards
-        compatibility on those architectures for which it work{s,ed};
-        the intent is to pass a (truncated) float by value. */
--    XtCallCallbacks(w, XtNthumbProc, *(XtPointer*)&sbw->scrollbar.top);
-+    xtpf.xtf = sbw->scrollbar.top;
-+    XtCallCallbacks(w, XtNthumbProc, xtpf.xtp);
-     XtCallCallbacks(w, XtNjumpProc, (XtPointer)&sbw->scrollbar.top);
- }
-diff -Naur vim72.orig/src/gui.c vim72/src/gui.c
---- vim72.orig/src/gui.c       2008-07-27 20:32:14.000000000 +0100
-+++ vim72/src/gui.c    2008-12-06 11:37:50.000000000 +0000
-@@ -139,7 +139,7 @@
-               /* The read returns when the child closes the pipe (or when
-                * the child dies for some reason). */
-               close(pipefd[1]);
--              (void)read(pipefd[0], &dummy, (size_t)1);
-+              ignored = (int)read(pipefd[0], &dummy, (size_t)1);
-               close(pipefd[0]);
-           }
-@@ -3241,7 +3241,7 @@
-           i = Rows;
-           gui_update_tabline();
-           Rows = i;
--          need_set_size = RESIZE_VERT;
-+          need_set_size |= RESIZE_VERT;
-           if (using_tabline)
-               fix_size = TRUE;
-           if (!gui_use_tabline())
-@@ -3275,9 +3275,9 @@
-               if (gui.which_scrollbars[i] != prev_which_scrollbars[i])
-               {
-                   if (i == SBAR_BOTTOM)
--                      need_set_size = RESIZE_VERT;
-+                      need_set_size |= RESIZE_VERT;
-                   else
--                      need_set_size = RESIZE_HOR;
-+                      need_set_size |= RESIZE_HOR;
-                   if (gui.which_scrollbars[i])
-                       fix_size = TRUE;
-               }
-@@ -3297,7 +3297,7 @@
-           gui_mch_enable_menu(gui.menu_is_active);
-           Rows = i;
-           prev_menu_is_active = gui.menu_is_active;
--          need_set_size = RESIZE_VERT;
-+          need_set_size |= RESIZE_VERT;
-           if (gui.menu_is_active)
-               fix_size = TRUE;
-       }
-@@ -3308,7 +3308,7 @@
-       {
-           gui_mch_show_toolbar(using_toolbar);
-           prev_toolbar = using_toolbar;
--          need_set_size = RESIZE_VERT;
-+          need_set_size |= RESIZE_VERT;
-           if (using_toolbar)
-               fix_size = TRUE;
-       }
-@@ -3318,7 +3318,7 @@
-       {
-           gui_mch_enable_footer(using_footer);
-           prev_footer = using_footer;
--          need_set_size = RESIZE_VERT;
-+          need_set_size |= RESIZE_VERT;
-           if (using_footer)
-               fix_size = TRUE;
-       }
-@@ -3330,10 +3330,11 @@
-           prev_tearoff = using_tearoff;
-       }
- #endif
--      if (need_set_size)
-+      if (need_set_size != 0)
-       {
- #ifdef FEAT_GUI_GTK
--          long    c = Columns;
-+          long    prev_Columns = Columns;
-+          long    prev_Rows = Rows;
- #endif
-           /* Adjust the size of the window to make the text area keep the
-            * same size and to avoid that part of our window is off-screen
-@@ -3349,11 +3350,14 @@
-            * If you remove this, please test this command for resizing
-            * effects (with optional left scrollbar): ":vsp|q|vsp|q|vsp|q".
-            * Don't do this while starting up though.
--           * And don't change Rows, it may have be reduced intentionally
--           * when adding menu/toolbar/tabline. */
--          if (!gui.starting)
-+           * Don't change Rows when adding menu/toolbar/tabline.
-+           * Don't change Columns when adding vertical toolbar. */
-+          if (!gui.starting && need_set_size != (RESIZE_VERT | RESIZE_HOR))
-               (void)char_avail();
--          Columns = c;
-+          if ((need_set_size & RESIZE_VERT) == 0)
-+              Rows = prev_Rows;
-+          if ((need_set_size & RESIZE_HOR) == 0)
-+              Columns = prev_Columns;
- #endif
-       }
- #ifdef FEAT_WINDOWS
-diff -Naur vim72.orig/src/gui_gtk_x11.c vim72/src/gui_gtk_x11.c
---- vim72.orig/src/gui_gtk_x11.c       2008-07-04 11:46:24.000000000 +0100
-+++ vim72/src/gui_gtk_x11.c    2008-12-06 11:37:50.000000000 +0000
-@@ -4070,14 +4070,14 @@
-       if (mask & (XValue | YValue))
-       {
--          int w, h;
--          gui_mch_get_screen_dimensions(&w, &h);
--          h += p_ghr + get_menu_tool_height();
--          w += get_menu_tool_width();
-+          int ww, hh;
-+          gui_mch_get_screen_dimensions(&ww, &hh);
-+          hh += p_ghr + get_menu_tool_height();
-+          ww += get_menu_tool_width();
-           if (mask & XNegative)
--              x += w - pixel_width;
-+              x += ww - pixel_width;
-           if (mask & YNegative)
--              y += h - pixel_height;
-+              y += hh - pixel_height;
- #ifdef HAVE_GTK2
-           gtk_window_move(GTK_WINDOW(gui.mainwin), x, y);
- #else
-diff -Naur vim72.orig/src/gui_x11.c vim72/src/gui_x11.c
---- vim72.orig/src/gui_x11.c   2008-06-08 16:13:45.000000000 +0100
-+++ vim72/src/gui_x11.c        2008-12-06 11:37:49.000000000 +0000
-@@ -2450,7 +2450,7 @@
-       *colorPtr = colortable[closest];
-     }
--    free(colortable);
-+    vim_free(colortable);
-     return OK;
- }
-diff -Naur vim72.orig/src/gui_xmdlg.c vim72/src/gui_xmdlg.c
---- vim72.orig/src/gui_xmdlg.c 2008-06-21 17:05:32.000000000 +0100
-+++ vim72/src/gui_xmdlg.c      2008-12-06 11:37:50.000000000 +0000
-@@ -369,10 +369,10 @@
-     char      buf[TEMP_BUF_SIZE];
-     XmString  items[MAX_ENTRIES_IN_LIST];
-     int               i;
--    int               index;
-+    int               idx;
--    for (index = (int)ENCODING; index < (int)NONE; ++index)
--      count[index] = 0;
-+    for (idx = (int)ENCODING; idx < (int)NONE; ++idx)
-+      count[idx] = 0;
-     /* First we insert the wild char into every single list. */
-     if (fix != ENCODING)
-@@ -503,14 +503,14 @@
-     /*
-      * Now loop trough the remaining lists and set them up.
-      */
--    for (index = (int)NAME; index < (int)NONE; ++index)
-+    for (idx = (int)NAME; idx < (int)NONE; ++idx)
-     {
-       Widget w;
--      if (fix == (enum ListSpecifier)index)
-+      if (fix == (enum ListSpecifier)idx)
-           continue;
--      switch ((enum ListSpecifier)index)
-+      switch ((enum ListSpecifier)idx)
-       {
-           case NAME:
-               w = data->list[NAME];
-@@ -525,21 +525,21 @@
-               w = (Widget)0;  /* for lint */
-       }
--      for (i = 0; i < count[index]; ++i)
-+      for (i = 0; i < count[idx]; ++i)
-       {
--          items[i] = XmStringCreateLocalized(list[index][i]);
--          XtFree(list[index][i]);
-+          items[i] = XmStringCreateLocalized(list[idx][i]);
-+          XtFree(list[idx][i]);
-       }
-       XmListDeleteAllItems(w);
--      XmListAddItems(w, items, count[index], 1);
--      if (data->sel[index])
-+      XmListAddItems(w, items, count[idx], 1);
-+      if (data->sel[idx])
-       {
-           XmStringFree(items[0]);
--          items[0] = XmStringCreateLocalized(data->sel[index]);
-+          items[0] = XmStringCreateLocalized(data->sel[idx]);
-           XmListSelectItem(w, items[0], False);
-           XmListSetBottomItem(w, items[0]);
-       }
--      for (i = 0; i < count[index]; ++i)
-+      for (i = 0; i < count[idx]; ++i)
-           XmStringFree(items[i]);
-     }
- }
-@@ -695,14 +695,14 @@
-       int         n;
-       XmString    str;
-       Arg         args[4];
--      char        *msg = _("no specific match");
-+      char        *nomatch_msg = _("no specific match");
-       n = 0;
--      str = XmStringCreateLocalized(msg);
-+      str = XmStringCreateLocalized(nomatch_msg);
-       XtSetArg(args[n], XmNlabelString, str); ++n;
-       XtSetValues(data->sample, args, n);
-       apply_fontlist(data->sample);
--      XmTextSetString(data->name, msg);
-+      XmTextSetString(data->name, nomatch_msg);
-       XmStringFree(str);
-       return False;
-@@ -886,21 +886,21 @@
-     {
-       int     i;
-       int     max;
--      int     index = 0;
-+      int     idx = 0;
-       int     size;
--      char    str[128];
-+      char    buf[128];
-       for (i = 0, max = 0; i < data->num; i++)
-       {
--          get_part(fn(data, i), 7, str);
--          size = atoi(str);
-+          get_part(fn(data, i), 7, buf);
-+          size = atoi(buf);
-           if ((size > max) && (size < MAX_DISPLAY_SIZE))
-           {
--              index = i;
-+              idx = i;
-               max = size;
-           }
-       }
--      strcpy(big_font, fn(data, index));
-+      strcpy(big_font, fn(data, idx));
-     }
-     data->old = XLoadQueryFont(XtDisplay(parent), big_font);
-     data->old_list = gui_motif_create_fontlist(data->old);
-@@ -1217,28 +1217,28 @@
-       if (i != 0)
-       {
--          char name[TEMP_BUF_SIZE];
--          char style[TEMP_BUF_SIZE];
--          char size[TEMP_BUF_SIZE];
--          char encoding[TEMP_BUF_SIZE];
-+          char namebuf[TEMP_BUF_SIZE];
-+          char stylebuf[TEMP_BUF_SIZE];
-+          char sizebuf[TEMP_BUF_SIZE];
-+          char encodingbuf[TEMP_BUF_SIZE];
-           char *found;
-           found = names[0];
--          name_part(found, name);
--          style_part(found, style);
--          size_part(found, size, data->in_pixels);
--          encoding_part(found, encoding);
--
--          if (strlen(name) > 0
--                  && strlen(style) > 0
--                  && strlen(size) > 0
--                  && strlen(encoding) > 0)
-+          name_part(found, namebuf);
-+          style_part(found, stylebuf);
-+          size_part(found, sizebuf, data->in_pixels);
-+          encoding_part(found, encodingbuf);
-+
-+          if (strlen(namebuf) > 0
-+                  && strlen(stylebuf) > 0
-+                  && strlen(sizebuf) > 0
-+                  && strlen(encodingbuf) > 0)
-           {
--              data->sel[NAME] = XtNewString(name);
--              data->sel[STYLE] = XtNewString(style);
--              data->sel[SIZE] = XtNewString(size);
--              data->sel[ENCODING] = XtNewString(encoding);
-+              data->sel[NAME] = XtNewString(namebuf);
-+              data->sel[STYLE] = XtNewString(stylebuf);
-+              data->sel[SIZE] = XtNewString(sizebuf);
-+              data->sel[ENCODING] = XtNewString(encodingbuf);
-               data->font_name = XtNewString(names[0]);
-               display_sample(data);
-               XmTextSetString(data->name, data->font_name);
-diff -Naur vim72.orig/src/gui_xmebw.c vim72/src/gui_xmebw.c
---- vim72.orig/src/gui_xmebw.c 2007-09-06 11:57:51.000000000 +0100
-+++ vim72/src/gui_xmebw.c      2008-12-06 11:37:50.000000000 +0000
-@@ -1256,7 +1256,7 @@
-     }
-     else
-     {
--      int adjust = 0;
-+      adjust = 0;
- #if !defined(LESSTIF_VERSION) && (XmVersion > 1002)
-       /*
-@@ -1268,12 +1268,11 @@
-       {
-           case XmEXTERNAL_HIGHLIGHT:
-               adjust = (eb->primitive.highlight_thickness -
--                      (eb->pushbutton.default_button_shadow_thickness ?
--                       Xm3D_ENHANCE_PIXEL : 0));
-+                       (eb->pushbutton.default_button_shadow_thickness
-+                        ?  Xm3D_ENHANCE_PIXEL : 0));
-               break;
-           case XmINTERNAL_HIGHLIGHT:
--              adjust = 0;
-               break;
-           default:
-diff -Naur vim72.orig/src/if_cscope.c vim72/src/if_cscope.c
---- vim72.orig/src/if_cscope.c 2008-06-24 17:32:34.000000000 +0100
-+++ vim72/src/if_cscope.c      2008-12-06 11:37:48.000000000 +0000
-@@ -74,7 +74,7 @@
-     { "add",  cs_add,
-               N_("Add a new database"),     "add file|dir [pre-path] [flags]", 0 },
-     { "find", cs_find,
--              N_("Query for a pattern"),    FIND_USAGE, 1 },
-+              N_("Query for a pattern"),    "find c|d|e|f|g|i|s|t name", 1 },
-     { "help", cs_help,
-               N_("Show this message"),      "help", 0 },
-     { "kill", cs_kill,
-@@ -1180,7 +1180,16 @@
-       (void)smsg((char_u *)_("%-5s: %-30s (Usage: %s)"),
-                                     cmdp->name, _(cmdp->help), cmdp->usage);
-       if (strcmp(cmdp->name, "find") == 0)
--          MSG_PUTS(FIND_HELP);
-+          MSG_PUTS(_("\n"
-+                     "       c: Find functions calling this function\n"
-+                     "       d: Find functions called by this function\n"
-+                     "       e: Find this egrep pattern\n"
-+                     "       f: Find this file\n"
-+                     "       g: Find this definition\n"
-+                     "       i: Find files #including this file\n"
-+                     "       s: Find this C symbol\n"
-+                     "       t: Find assignments to\n"));
-+
-       cmdp++;
-     }
-diff -Naur vim72.orig/src/if_cscope.h vim72/src/if_cscope.h
---- vim72.orig/src/if_cscope.h 2007-09-02 15:51:08.000000000 +0100
-+++ vim72/src/if_cscope.h      2008-12-06 11:37:48.000000000 +0000
-@@ -42,17 +42,6 @@
-  * f 7name    Find this file
-  * i 8name    Find files #including this file
-  */
--#define       FIND_USAGE "find c|d|e|f|g|i|s|t name"
--#define FIND_HELP "\n\
--       c: Find functions calling this function\n\
--       d: Find functions called by this function\n\
--       e: Find this egrep pattern\n\
--       f: Find this file\n\
--       g: Find this definition\n\
--       i: Find files #including this file\n\
--       s: Find this C symbol\n\
--       t: Find assignments to\n"
--
- typedef struct {
-     char *  name;
-diff -Naur vim72.orig/src/if_perl.xs vim72/src/if_perl.xs
---- vim72.orig/src/if_perl.xs  2008-07-17 21:55:09.000000000 +0100
-+++ vim72/src/if_perl.xs       2008-12-06 11:37:50.000000000 +0000
-@@ -136,6 +136,9 @@
- #  define Perl_newXS_flags dll_Perl_newXS_flags
- #endif
- # define Perl_sv_free dll_Perl_sv_free
-+# if (PERL_REVISION == 5) && (PERL_VERSION >= 10)
-+#  define Perl_sv_free2 dll_Perl_sv_free2
-+# endif
- # define Perl_sv_isa dll_Perl_sv_isa
- # define Perl_sv_magic dll_Perl_sv_magic
- # define Perl_sv_setiv dll_Perl_sv_setiv
-@@ -163,7 +166,7 @@
- # define Perl_Isv_yes_ptr dll_Perl_Isv_yes_ptr
- # define boot_DynaLoader dll_boot_DynaLoader
--# define Perl_sys_init3 dll_Perl_sys_init3
-+# define Perl_sys_init dll_Perl_sys_init
- # define Perl_sys_term dll_Perl_sys_term
- # define Perl_ISv_ptr dll_Perl_ISv_ptr
- # define Perl_Istack_max_ptr dll_Perl_Istack_max_ptr
-@@ -268,7 +271,8 @@
- static void (*boot_DynaLoader)_((pTHX_ CV*));
- #if (PERL_REVISION == 5) && (PERL_VERSION >= 10)
--static void (*Perl_sys_init3)(int* argc, char*** argv, char*** env);
-+static void (*Perl_sv_free2)(pTHX_ SV*);
-+static void (*Perl_sys_init)(int* argc, char*** argv);
- static void (*Perl_sys_term)(void);
- static SV** (*Perl_ISv_ptr)(register PerlInterpreter*);
- static SV*** (*Perl_Istack_max_ptr)(register PerlInterpreter*);
-@@ -367,7 +371,8 @@
-     {"Perl_TXpv_ptr", (PERL_PROC*)&Perl_TXpv_ptr},
-     {"Perl_Tna_ptr", (PERL_PROC*)&Perl_Tna_ptr},
- #else
--    {"Perl_sys_init3", (PERL_PROC*)&Perl_sys_init3},
-+    {"Perl_sv_free2", (PERL_PROC*)&Perl_sv_free2},
-+    {"Perl_sys_init", (PERL_PROC*)&Perl_sys_init},
-     {"Perl_sys_term", (PERL_PROC*)&Perl_sys_term},
-     {"Perl_ISv_ptr", (PERL_PROC*)&Perl_ISv_ptr},
-     {"Perl_Istack_sp_ptr", (PERL_PROC*)&Perl_Istack_sp_ptr},
-@@ -455,7 +460,7 @@
-     static char *argv[] = { "", "-e", "" };
- #if (PERL_REVISION == 5) && (PERL_VERSION >= 10)
--    Perl_sys_init3(&argc, (char***)&argv, NULL);
-+    Perl_sys_init(&argc, (char***)&argv);
- #endif
-     perl_interp = perl_alloc();
-     perl_construct(perl_interp);
-diff -Naur vim72.orig/src/if_python.c vim72/src/if_python.c
---- vim72.orig/src/if_python.c 2008-07-17 22:09:32.000000000 +0100
-+++ vim72/src/if_python.c      2008-12-06 11:37:50.000000000 +0000
-@@ -531,6 +531,12 @@
-       if (PythonMod_Init())
-           goto fail;
-+      /* Remove the element from sys.path that was added because of our
-+       * argv[0] value in PythonMod_Init().  Previously we used an empty
-+       * string, but dependinding on the OS we then get an empty entry or
-+       * the current directory in sys.path. */
-+      PyRun_SimpleString("import sys; sys.path = filter(lambda x: x != '/must>not&exist', sys.path)");
-+
-       /* the first python thread is vim's, release the lock */
-       Python_SaveThread();
-@@ -2345,7 +2351,8 @@
- {
-     PyObject *mod;
-     PyObject *dict;
--    static char *(argv[2]) = {"", NULL};
-+    /* The special value is removed from sys.path in Python_Init(). */
-+    static char *(argv[2]) = {"/must>not&exist/foo", NULL};
-     /* Fixups... */
-     BufferType.ob_type = &PyType_Type;
-diff -Naur vim72.orig/src/if_xcmdsrv.c vim72/src/if_xcmdsrv.c
---- vim72.orig/src/if_xcmdsrv.c        2008-07-18 14:05:03.000000000 +0100
-+++ vim72/src/if_xcmdsrv.c     2008-12-06 11:37:49.000000000 +0000
-@@ -736,7 +736,7 @@
-               + serverReply.ga_len;
-           e.id = w;
-           ga_init2(&e.strings, 1, 100);
--          memcpy(p, &e, sizeof(e));
-+          mch_memmove(p, &e, sizeof(e));
-           serverReply.ga_len++;
-       }
-     }
-@@ -1018,7 +1018,7 @@
-       p++;
-       count = numItems - (p - regProp);
-       if (count > 0)
--          memcpy(entry, p, count);
-+          mch_memmove(entry, p, count);
-       XChangeProperty(dpy, RootWindow(dpy, 0), registryProperty, XA_STRING,
-                       8, PropModeReplace, regProp,
-                       (int)(numItems - (p - entry)));
-@@ -1072,7 +1072,7 @@
-               p++;
-               lastHalf = numItems - (p - regProp);
-               if (lastHalf > 0)
--                  memcpy(entry, p, lastHalf);
-+                  mch_memmove(entry, p, lastHalf);
-               numItems = (entry - regProp) + lastHalf;
-               p = entry;
-               continue;
-diff -Naur vim72.orig/src/main.c vim72/src/main.c
---- vim72.orig/src/main.c      2008-07-24 09:40:56.000000000 +0100
-+++ vim72/src/main.c   2008-12-06 11:37:50.000000000 +0000
-@@ -645,11 +645,12 @@
- #ifdef FEAT_VIMINFO
-     /*
--     * Read in registers, history etc, but not marks, from the viminfo file
-+     * Read in registers, history etc, but not marks, from the viminfo file.
-+     * This is where v:oldfiles gets filled.
-      */
-     if (*p_viminfo != NUL)
-     {
--      read_viminfo(NULL, TRUE, FALSE, FALSE);
-+      read_viminfo(NULL, VIF_WANT_INFO | VIF_GET_OLDFILES);
-       TIME_MSG("reading viminfo");
-     }
- #endif
-@@ -1457,7 +1458,8 @@
-       ++initstr;
-     }
--    if (TOLOWER_ASC(initstr[0]) == 'g' || initstr[0] == 'k')
-+    /* "gvim" starts the GUI.  Also accept "Gvim" for MS-Windows. */
-+    if (TOLOWER_ASC(initstr[0]) == 'g')
-     {
-       main_start_gui();
- #ifdef FEAT_GUI
-@@ -1508,7 +1510,8 @@
- early_arg_scan(parmp)
-     mparm_T   *parmp;
- {
--#if defined(FEAT_XCLIPBOARD) || defined(FEAT_CLIENTSERVER)
-+#if defined(FEAT_XCLIPBOARD) || defined(FEAT_CLIENTSERVER) \
-+      || !defined(FEAT_NETBEANS_INTG)
-     int               argc = parmp->argc;
-     char      **argv = parmp->argv;
-     int               i;
-@@ -1580,6 +1583,14 @@
-       else if (STRICMP(argv[i], "--echo-wid") == 0)
-           echo_wid_arg = TRUE;
- # endif
-+# ifndef FEAT_NETBEANS_INTG
-+      else if (strncmp(argv[i], "-nb", (size_t)3) == 0)
-+        {
-+            mch_errmsg(_("'-nb' cannot be used: not enabled at compile time\n"));
-+            mch_exit(2);
-+        }
-+# endif
-+
-     }
- #endif
- }
-@@ -2361,7 +2372,7 @@
-      * Is there any other system that cannot do this?
-      */
-     close(0);
--    dup(2);
-+    ignored = dup(2);
- #endif
- }
-@@ -2586,7 +2597,7 @@
- # endif
-           (void)do_ecmd(0, arg_idx < GARGCOUNT
-                         ? alist_name(&GARGLIST[arg_idx]) : NULL,
--                        NULL, NULL, ECMD_LASTL, ECMD_HIDE);
-+                        NULL, NULL, ECMD_LASTL, ECMD_HIDE, curwin);
- # ifdef HAS_SWAP_EXISTS_ACTION
-           if (swap_exists_did_quit)
-           {
-diff -Naur vim72.orig/src/mark.c vim72/src/mark.c
---- vim72.orig/src/mark.c      2008-08-08 23:06:49.000000000 +0100
-+++ vim72/src/mark.c   2008-12-06 11:37:49.000000000 +0000
-@@ -1627,15 +1627,17 @@
- /*
-  * Handle marks in the viminfo file:
-- * fp_out == NULL   read marks for current buffer only
-- * fp_out != NULL   copy marks for buffers not in buffer list
-+ * fp_out != NULL: copy marks for buffers not in buffer list
-+ * fp_out == NULL && (flags & VIF_WANT_MARKS): read marks for curbuf only
-+ * fp_out == NULL && (flags & VIF_GET_OLDFILES | VIF_FORCEIT): fill v:oldfiles
-  */
-     void
--copy_viminfo_marks(virp, fp_out, count, eof)
-+copy_viminfo_marks(virp, fp_out, count, eof, flags)
-     vir_T     *virp;
-     FILE      *fp_out;
-     int               count;
-     int               eof;
-+    int               flags;
- {
-     char_u    *line = virp->vir_line;
-     buf_T     *buf;
-@@ -1647,10 +1649,23 @@
-     char_u    *p;
-     char_u    *name_buf;
-     pos_T     pos;
-+#ifdef FEAT_EVAL
-+    list_T    *list = NULL;
-+#endif
-     if ((name_buf = alloc(LSIZE)) == NULL)
-       return;
-     *name_buf = NUL;
-+
-+#ifdef FEAT_EVAL
-+    if (fp_out == NULL && (flags & (VIF_GET_OLDFILES | VIF_FORCEIT)))
-+    {
-+      list = list_alloc();
-+      if (list != NULL)
-+          set_vim_var_list(VV_OLDFILES, list);
-+    }
-+#endif
-+
-     num_marked_files = get_viminfo_parameter('\'');
-     while (!eof && (count < num_marked_files || fp_out == NULL))
-     {
-@@ -1681,6 +1696,11 @@
-           p++;
-       *p = NUL;
-+#ifdef FEAT_EVAL
-+      if (list != NULL)
-+          list_append_string(list, str, -1);
-+#endif
-+
-       /*
-        * If fp_out == NULL, load marks for current buffer.
-        * If fp_out != NULL, copy marks for buffers not in buflist.
-@@ -1688,7 +1708,7 @@
-       load_marks = copy_marks_out = FALSE;
-       if (fp_out == NULL)
-       {
--          if (curbuf->b_ffname != NULL)
-+          if ((flags & VIF_WANT_MARKS) && curbuf->b_ffname != NULL)
-           {
-               if (*name_buf == NUL)       /* only need to do this once */
-                   home_replace(NULL, curbuf->b_ffname, name_buf, LSIZE, TRUE);
-diff -Naur vim72.orig/src/mbyte.c vim72/src/mbyte.c
---- vim72.orig/src/mbyte.c     2008-07-14 13:38:05.000000000 +0100
-+++ vim72/src/mbyte.c  2008-12-06 11:37:50.000000000 +0000
-@@ -717,7 +717,7 @@
-                    * where mblen() returns 0 for invalid character.
-                    * Therefore, following condition includes 0.
-                    */
--                  (void)mblen(NULL, 0);       /* First reset the state. */
-+                  ignored = mblen(NULL, 0);   /* First reset the state. */
-                   if (mblen(buf, (size_t)1) <= 0)
-                       n = 2;
-                   else
-@@ -2540,7 +2540,6 @@
-     return (int)(p - q);
- }
--#if defined(FEAT_EVAL) || defined(PROTO)
- /*
-  * Copy a character from "*fp" to "*tp" and advance the pointers.
-  */
-@@ -2555,7 +2554,6 @@
-     *tp += l;
-     *fp += l;
- }
--#endif
- /*
-  * Return the offset from "p" to the first byte of a character.  When "p" is
-@@ -3133,7 +3131,7 @@
-       else
-           s = p + 1;
-     }
--    for (i = 0; s[i] != NUL && s + i < buf + sizeof(buf) - 1; ++i)
-+    for (i = 0; s[i] != NUL && i < sizeof(buf) - 1; ++i)
-     {
-       if (s[i] == '_' || s[i] == '-')
-           buf[i] = '-';
-@@ -5280,7 +5278,7 @@
- /*ARGSUSED*/
-     static void
--preedit_start_cbproc(XIC xic, XPointer client_data, XPointer call_data)
-+preedit_start_cbproc(XIC thexic, XPointer client_data, XPointer call_data)
- {
- #ifdef XIM_DEBUG
-     xim_log("xim_decide_input_style()\n");
-@@ -5314,7 +5312,7 @@
- /*ARGSUSED*/
-     static void
--preedit_draw_cbproc(XIC xic, XPointer client_data, XPointer call_data)
-+preedit_draw_cbproc(XIC thexic, XPointer client_data, XPointer call_data)
- {
-     XIMPreeditDrawCallbackStruct *draw_data;
-     XIMText   *text;
-@@ -5386,7 +5384,7 @@
-                       draw_feedback = (char *)alloc(draw_data->chg_first
-                                                             + text->length);
-                   else
--                      draw_feedback = realloc(draw_feedback,
-+                      draw_feedback = vim_realloc(draw_feedback,
-                                        draw_data->chg_first + text->length);
-                   if (draw_feedback != NULL)
-                   {
-@@ -5455,7 +5453,7 @@
- /*ARGSUSED*/
-     static void
--preedit_caret_cbproc(XIC xic, XPointer client_data, XPointer call_data)
-+preedit_caret_cbproc(XIC thexic, XPointer client_data, XPointer call_data)
- {
- #ifdef XIM_DEBUG
-     xim_log("preedit_caret_cbproc()\n");
-@@ -5464,7 +5462,7 @@
- /*ARGSUSED*/
-     static void
--preedit_done_cbproc(XIC xic, XPointer client_data, XPointer call_data)
-+preedit_done_cbproc(XIC thexic, XPointer client_data, XPointer call_data)
- {
- #ifdef XIM_DEBUG
-     xim_log("preedit_done_cbproc()\n");
-@@ -6103,7 +6101,7 @@
-           /* 1. codepage/UTF-8  ->  ucs-2. */
-           if (vcp->vc_cpfrom == 0)
--              tmp_len = utf8_to_ucs2(ptr, len, NULL, NULL);
-+              tmp_len = utf8_to_utf16(ptr, len, NULL, NULL);
-           else
-               tmp_len = MultiByteToWideChar(vcp->vc_cpfrom, 0,
-                                                             ptr, len, 0, 0);
-@@ -6111,13 +6109,13 @@
-           if (tmp == NULL)
-               break;
-           if (vcp->vc_cpfrom == 0)
--              utf8_to_ucs2(ptr, len, tmp, unconvlenp);
-+              utf8_to_utf16(ptr, len, tmp, unconvlenp);
-           else
-               MultiByteToWideChar(vcp->vc_cpfrom, 0, ptr, len, tmp, tmp_len);
-           /* 2. ucs-2  ->  codepage/UTF-8. */
-           if (vcp->vc_cpto == 0)
--              retlen = ucs2_to_utf8(tmp, tmp_len, NULL);
-+              retlen = utf16_to_utf8(tmp, tmp_len, NULL);
-           else
-               retlen = WideCharToMultiByte(vcp->vc_cpto, 0,
-                                                   tmp, tmp_len, 0, 0, 0, 0);
-@@ -6125,7 +6123,7 @@
-           if (retval != NULL)
-           {
-               if (vcp->vc_cpto == 0)
--                  ucs2_to_utf8(tmp, tmp_len, retval);
-+                  utf16_to_utf8(tmp, tmp_len, retval);
-               else
-                   WideCharToMultiByte(vcp->vc_cpto, 0,
-                                         tmp, tmp_len, retval, retlen, 0, 0);
-diff -Naur vim72.orig/src/menu.c vim72/src/menu.c
---- vim72.orig/src/menu.c      2008-06-21 20:53:43.000000000 +0100
-+++ vim72/src/menu.c   2008-12-06 11:37:48.000000000 +0000
-@@ -1120,6 +1120,7 @@
-       parent = menu;
-       menu = menu->children;
-     }
-+    vim_free(path_name);
-     /* Now we have found the matching menu, and we list the mappings */
-                                                   /* Highlight title */
-diff -Naur vim72.orig/src/message.c vim72/src/message.c
---- vim72.orig/src/message.c   2008-07-09 19:24:55.000000000 +0100
-+++ vim72/src/message.c        2008-12-06 11:37:50.000000000 +0000
-@@ -4585,61 +4585,62 @@
-                       if (remove_trailing_zeroes)
-                       {
-                           int i;
--                          char *p;
-+                          char *tp;
-                           /* Using %g or %G: remove superfluous zeroes. */
-                           if (fmt_spec == 'f')
--                              p = tmp + str_arg_l - 1;
-+                              tp = tmp + str_arg_l - 1;
-                           else
-                           {
--                              p = (char *)vim_strchr((char_u *)tmp,
-+                              tp = (char *)vim_strchr((char_u *)tmp,
-                                                fmt_spec == 'e' ? 'e' : 'E');
--                              if (p != NULL)
-+                              if (tp != NULL)
-                               {
-                                   /* Remove superfluous '+' and leading
-                                    * zeroes from the exponent. */
--                                  if (p[1] == '+')
-+                                  if (tp[1] == '+')
-                                   {
-                                       /* Change "1.0e+07" to "1.0e07" */
--                                      STRMOVE(p + 1, p + 2);
-+                                      STRMOVE(tp + 1, tp + 2);
-                                       --str_arg_l;
-                                   }
--                                  i = (p[1] == '-') ? 2 : 1;
--                                  while (p[i] == '0')
-+                                  i = (tp[1] == '-') ? 2 : 1;
-+                                  while (tp[i] == '0')
-                                   {
-                                       /* Change "1.0e07" to "1.0e7" */
--                                      STRMOVE(p + i, p + i + 1);
-+                                      STRMOVE(tp + i, tp + i + 1);
-                                       --str_arg_l;
-                                   }
--                                  --p;
-+                                  --tp;
-                               }
-                           }
--                          if (p != NULL && !precision_specified)
-+                          if (tp != NULL && !precision_specified)
-                               /* Remove trailing zeroes, but keep the one
-                                * just after a dot. */
--                              while (p > tmp + 2 && *p == '0' && p[-1] != '.')
-+                              while (tp > tmp + 2 && *tp == '0'
-+                                                           && tp[-1] != '.')
-                               {
--                                  STRMOVE(p, p + 1);
--                                  --p;
-+                                  STRMOVE(tp, tp + 1);
-+                                  --tp;
-                                   --str_arg_l;
-                               }
-                       }
-                       else
-                       {
--                          char *p;
-+                          char *tp;
-                           /* Be consistent: some printf("%e") use 1.0e+12
-                            * and some 1.0e+012.  Remove one zero in the last
-                            * case. */
--                          p = (char *)vim_strchr((char_u *)tmp,
-+                          tp = (char *)vim_strchr((char_u *)tmp,
-                                                fmt_spec == 'e' ? 'e' : 'E');
--                          if (p != NULL && (p[1] == '+' || p[1] == '-')
--                                        && p[2] == '0'
--                                        && vim_isdigit(p[3])
--                                        && vim_isdigit(p[4]))
-+                          if (tp != NULL && (tp[1] == '+' || tp[1] == '-')
-+                                        && tp[2] == '0'
-+                                        && vim_isdigit(tp[3])
-+                                        && vim_isdigit(tp[4]))
-                           {
--                              STRMOVE(p + 2, p + 3);
-+                              STRMOVE(tp + 2, tp + 3);
-                               --str_arg_l;
-                           }
-                       }
-diff -Naur vim72.orig/src/misc1.c vim72/src/misc1.c
---- vim72.orig/src/misc1.c     2008-07-12 20:20:53.000000000 +0100
-+++ vim72/src/misc1.c  2008-12-06 11:37:50.000000000 +0000
-@@ -3245,9 +3245,9 @@
-     /* When using ":silent" assume that <CR> was entered. */
-     if (mouse_used != NULL)
--      MSG_PUTS(_("Type number or click with mouse (<Enter> cancels): "));
-+      MSG_PUTS(_("Type number and <Enter> or click with mouse (empty cancels): "));
-     else
--      MSG_PUTS(_("Choice number (<Enter> cancels): "));
-+      MSG_PUTS(_("Type number and <Enter> (empty cancels): "));
-     /* Set the state such that text can be selected/copied/pasted and we still
-      * get mouse events. */
-@@ -8728,7 +8728,7 @@
-       /* The active codepage differs from 'encoding'.  Attempt using the
-        * wide function.  If it fails because it is not implemented fall back
-        * to the non-wide version (for Windows 98) */
--      wn = enc_to_ucs2(buf, NULL);
-+      wn = enc_to_utf16(buf, NULL);
-       if (wn != NULL)
-       {
-           hFind = FindFirstFileW(wn, &wfb);
-@@ -8756,7 +8756,7 @@
- #ifdef WIN3264
- # ifdef FEAT_MBYTE
-       if (wn != NULL)
--          p = ucs2_to_enc(wfb.cFileName, NULL);   /* p is allocated here */
-+          p = utf16_to_enc(wfb.cFileName, NULL);   /* p is allocated here */
-       else
- # endif
-           p = (char_u *)fb.cFileName;
-@@ -8830,7 +8830,7 @@
-           if (wn != NULL)
-           {
-               vim_free(wn);
--              wn = enc_to_ucs2(buf, NULL);
-+              wn = enc_to_utf16(buf, NULL);
-               if (wn != NULL)
-                   hFind = FindFirstFileW(wn, &wfb);
-           }
-diff -Naur vim72.orig/src/misc2.c vim72/src/misc2.c
---- vim72.orig/src/misc2.c     2008-07-23 20:12:56.000000000 +0100
-+++ vim72/src/misc2.c  2008-12-06 11:37:49.000000000 +0000
-@@ -873,7 +873,7 @@
-           /* 3. check for available memory: call mch_avail_mem() */
-           if (mch_avail_mem(TRUE) < KEEP_ROOM && !releasing)
-           {
--              vim_free((char *)p);    /* System is low... no go! */
-+              free((char *)p);        /* System is low... no go! */
-               p = NULL;
-           }
-           else
-@@ -1257,7 +1257,6 @@
-     return escaped_string;
- }
--#if !defined(BACKSLASH_IN_FILENAME) || defined(FEAT_EVAL) || defined(PROTO)
- /*
-  * Return TRUE when 'shell' has "csh" in the tail.
-  */
-@@ -1266,9 +1265,7 @@
- {
-     return (strstr((char *)gettail(p_sh), "csh") != NULL);
- }
--#endif
--#if defined(FEAT_EVAL) || defined(PROTO)
- /*
-  * Escape "string" for use as a shell argument with system().
-  * This uses single quotes, except when we know we need to use double qoutes
-@@ -1391,7 +1388,6 @@
-     return escaped_string;
- }
--#endif
- /*
-  * Like vim_strsave(), but make all characters uppercase.
-diff -Naur vim72.orig/src/move.c vim72/src/move.c
---- vim72.orig/src/move.c      2008-07-12 17:26:47.000000000 +0100
-+++ vim72/src/move.c   2008-12-06 11:37:49.000000000 +0000
-@@ -280,18 +280,20 @@
-       if (curwin->w_botline <= curbuf->b_ml.ml_line_count)
-       {
--          if (curwin->w_cursor.lnum < curwin->w_botline
--                  && ((long)curwin->w_cursor.lnum
-+          if (curwin->w_cursor.lnum < curwin->w_botline)
-+          {
-+            if (((long)curwin->w_cursor.lnum
-                                            >= (long)curwin->w_botline - p_so
- #ifdef FEAT_FOLDING
-                       || hasAnyFolding(curwin)
- #endif
-                       ))
--          {
-+            {
-               lineoff_T       loff;
--              /* Cursor is above botline, check if there are 'scrolloff'
--               * window lines below the cursor.  If not, need to scroll. */
-+              /* Cursor is (a few lines) above botline, check if there are
-+               * 'scrolloff' window lines below the cursor.  If not, need to
-+               * scroll. */
-               n = curwin->w_empty_rows;
-               loff.lnum = curwin->w_cursor.lnum;
- #ifdef FEAT_FOLDING
-@@ -317,6 +319,10 @@
-               if (n >= p_so)
-                   /* sufficient context, no need to scroll */
-                   check_botline = FALSE;
-+            }
-+            else
-+                /* sufficient context, no need to scroll */
-+                check_botline = FALSE;
-           }
-           if (check_botline)
-           {
-@@ -509,6 +515,9 @@
-     /* Approximate the value of w_botline */
-     wp->w_botline += lnum - wp->w_topline;
-     wp->w_topline = lnum;
-+#ifdef FEAT_AUTOCMD
-+    wp->w_topline_was_set = TRUE;
-+#endif
- #ifdef FEAT_DIFF
-     wp->w_topfill = 0;
- #endif
-diff -Naur vim72.orig/src/netbeans.c vim72/src/netbeans.c
---- vim72.orig/src/netbeans.c  2008-07-13 17:19:54.000000000 +0100
-+++ vim72/src/netbeans.c       2008-12-06 11:37:50.000000000 +0000
-@@ -1043,7 +1043,7 @@
-       nbdebug(("EVT: %s", buf));
- /*    nb_send(buf, "netbeans_end");    avoid "write failed" messages */
-       if (sd >= 0)
--          sock_write(sd, buf, (int)STRLEN(buf));  /* ignore errors */
-+          ignored = sock_write(sd, buf, (int)STRLEN(buf));
-     }
- }
-@@ -1795,7 +1795,7 @@
-           buf->displayname = NULL;
-           netbeansReadFile = 0; /* don't try to open disk file */
--          do_ecmd(0, NULL, 0, 0, ECMD_ONE, ECMD_HIDE + ECMD_OLDBUF);
-+          do_ecmd(0, NULL, 0, 0, ECMD_ONE, ECMD_HIDE + ECMD_OLDBUF, curwin);
-           netbeansReadFile = 1;
-           buf->bufp = curbuf;
-           maketitle();
-@@ -1960,7 +1960,7 @@
-           netbeansReadFile = 0; /* don't try to open disk file */
-           do_ecmd(0, (char_u *)buf->displayname, 0, 0, ECMD_ONE,
--                                                   ECMD_HIDE + ECMD_OLDBUF);
-+                                           ECMD_HIDE + ECMD_OLDBUF, curwin);
-           netbeansReadFile = 1;
-           buf->bufp = curbuf;
-           maketitle();
-@@ -1979,7 +1979,7 @@
-           vim_free(buf->displayname);
-           buf->displayname = nb_unquote(args, NULL);
-           do_ecmd(0, (char_u *)buf->displayname, NULL, NULL, ECMD_ONE,
--                                                   ECMD_HIDE + ECMD_OLDBUF);
-+                                           ECMD_HIDE + ECMD_OLDBUF, curwin);
-           buf->bufp = curbuf;
-           buf->initDone = TRUE;
-           doupdate = 1;
-@@ -2277,9 +2277,6 @@
-           int serNum;
-           int localTypeNum;
-           int typeNum;
--# ifdef NBDEBUG
--          int len;
--# endif
-           pos_T *pos;
-           if (buf == NULL || buf->bufp == NULL)
-@@ -2303,13 +2300,10 @@
-           pos = get_off_or_lnum(buf->bufp, &args);
-           cp = (char *)args;
--# ifdef NBDEBUG
--          len =
--# endif
--              strtol(cp, &cp, 10);
-+          ignored = (int)strtol(cp, &cp, 10);
-           args = (char_u *)cp;
- # ifdef NBDEBUG
--          if (len != -1)
-+          if (ignored != -1)
-           {
-               nbdebug(("    partial line annotation -- Not Yet Implemented!\n"));
-           }
-diff -Naur vim72.orig/src/normal.c vim72/src/normal.c
---- vim72.orig/src/normal.c    2008-07-31 21:03:08.000000000 +0100
-+++ vim72/src/normal.c 2008-12-06 11:37:50.000000000 +0000
-@@ -183,6 +183,8 @@
- static void   nv_cursorhold __ARGS((cmdarg_T *cap));
- #endif
-+static char *e_noident = N_("E349: No identifier under cursor");
-+
- /*
-  * Function to be called for a Normal or Visual mode command.
-  * The argument is a cmdarg_T.
-@@ -578,6 +580,9 @@
-     static int        old_mapped_len = 0;
- #endif
-     int               idx;
-+#ifdef FEAT_EVAL
-+    int               set_prevcount = FALSE;
-+#endif
-     vim_memset(&ca, 0, sizeof(ca));   /* also resets ca.retval */
-     ca.oap = oap;
-@@ -613,7 +618,12 @@
-     /* When not finishing an operator and no register name typed, reset the
-      * count. */
-     if (!finish_op && !oap->regname)
-+    {
-       ca.opcount = 0;
-+#ifdef FEAT_EVAL
-+      set_prevcount = TRUE;
-+#endif
-+    }
- #ifdef FEAT_AUTOCMD
-     /* Restore counts from before receiving K_CURSORHOLD.  This means after
-@@ -717,7 +727,15 @@
-            * command, so that v:count can be used in an expression mapping
-            * right after the count. */
-           if (toplevel && stuff_empty())
--              set_vcount(ca.count0, ca.count0 == 0 ? 1 : ca.count0);
-+          {
-+              long count = ca.count0;
-+
-+              /* multiply with ca.opcount the same way as below */
-+              if (ca.opcount != 0)
-+                  count = ca.opcount * (count == 0 ? 1 : count);
-+              set_vcount(count, count == 0 ? 1 : count, set_prevcount);
-+              set_prevcount = FALSE;  /* only set v:prevcount once */
-+          }
- #endif
-           if (ctrl_w)
-           {
-@@ -804,7 +822,7 @@
-      * Only set v:count when called from main() and not a stuffed command.
-      */
-     if (toplevel && stuff_empty())
--      set_vcount(ca.count0, ca.count1);
-+      set_vcount(ca.count0, ca.count1, set_prevcount);
- #endif
-     /*
-@@ -1132,7 +1150,8 @@
-       out_flush();
- #endif
- #ifdef FEAT_AUTOCMD
--    did_cursorhold = FALSE;
-+    if (ca.cmdchar != K_IGNORE)
-+      did_cursorhold = FALSE;
- #endif
-     State = NORMAL;
-@@ -3509,7 +3528,7 @@
-       if (find_type & FIND_STRING)
-           EMSG(_("E348: No string under cursor"));
-       else
--          EMSG(_("E349: No identifier under cursor"));
-+          EMSG(_(e_noident));
-       return 0;
-     }
-     ptr += col;
-@@ -5469,6 +5488,20 @@
-               STRCPY(buf, "he! ");
-           else
-           {
-+              /* An external command will probably use an argument starting
-+               * with "-" as an option.  To avoid trouble we skip the "-". */
-+              while (*ptr == '-' && n > 0)
-+              {
-+                  ++ptr;
-+                  --n;
-+              }
-+              if (n == 0)
-+              {
-+                  EMSG(_(e_noident));  /* found dashes only */
-+                  vim_free(buf);
-+                  return;
-+              }
-+
-               /* When a count is given, turn it into a range.  Is this
-                * really what we want? */
-               isman = (STRCMP(kp, "man") == 0);
-@@ -5511,37 +5544,59 @@
-     /*
-      * Now grab the chars in the identifier
-      */
--    if (cmdchar == '*')
--      aux_ptr = (char_u *)(p_magic ? "/.*~[^$\\" : "/^$\\");
--    else if (cmdchar == '#')
--      aux_ptr = (char_u *)(p_magic ? "/?.*~[^$\\" : "/?^$\\");
--    else if (cmdchar == 'K' && !kp_help)
--      aux_ptr = (char_u *)" \t\\\"|!";
--    else
--      /* Don't escape spaces and Tabs in a tag with a backslash */
--      aux_ptr = (char_u *)"\\|\"";
--
--    p = buf + STRLEN(buf);
--    while (n-- > 0)
--    {
--      /* put a backslash before \ and some others */
--      if (vim_strchr(aux_ptr, *ptr) != NULL)
--          *p++ = '\\';
--#ifdef FEAT_MBYTE
--      /* When current byte is a part of multibyte character, copy all bytes
--       * of that character. */
--      if (has_mbyte)
-+    if (cmdchar == 'K' && !kp_help)
-+    {
-+      /* Escape the argument properly for a shell command */
-+      ptr = vim_strnsave(ptr, n);
-+      p = vim_strsave_shellescape(ptr, TRUE);
-+      vim_free(ptr);
-+      if (p == NULL)
-       {
--          int i;
--          int len = (*mb_ptr2len)(ptr) - 1;
--
--          for (i = 0; i < len && n >= 1; ++i, --n)
--              *p++ = *ptr++;
-+          vim_free(buf);
-+          return;
-       }
-+      buf = (char_u *)vim_realloc(buf, STRLEN(buf) + STRLEN(p) + 1);
-+      if (buf == NULL)
-+      {
-+          vim_free(buf);
-+          vim_free(p);
-+          return;
-+      }
-+      STRCAT(buf, p);
-+      vim_free(p);
-+    }
-+    else
-+    {
-+      if (cmdchar == '*')
-+          aux_ptr = (char_u *)(p_magic ? "/.*~[^$\\" : "/^$\\");
-+      else if (cmdchar == '#')
-+          aux_ptr = (char_u *)(p_magic ? "/?.*~[^$\\" : "/?^$\\");
-+      else
-+          /* Don't escape spaces and Tabs in a tag with a backslash */
-+          aux_ptr = (char_u *)"\\|\"\n*?[";
-+
-+      p = buf + STRLEN(buf);
-+      while (n-- > 0)
-+      {
-+          /* put a backslash before \ and some others */
-+          if (vim_strchr(aux_ptr, *ptr) != NULL)
-+              *p++ = '\\';
-+#ifdef FEAT_MBYTE
-+          /* When current byte is a part of multibyte character, copy all
-+           * bytes of that character. */
-+          if (has_mbyte)
-+          {
-+              int i;
-+              int len = (*mb_ptr2len)(ptr) - 1;
-+
-+              for (i = 0; i < len && n >= 1; ++i, --n)
-+                  *p++ = *ptr++;
-+          }
- #endif
--      *p++ = *ptr++;
-+          *p++ = *ptr++;
-+      }
-+      *p = NUL;
-     }
--    *p = NUL;
-     /*
-      * Execute the command.
-@@ -6011,7 +6066,7 @@
-           autowrite(curbuf, FALSE);
-       setpcmark();
-       (void)do_ecmd(0, ptr, NULL, NULL, ECMD_LAST,
--                                             P_HID(curbuf) ? ECMD_HIDE : 0);
-+                                     P_HID(curbuf) ? ECMD_HIDE : 0, curwin);
-       if (cap->nchar == 'F' && lnum >= 0)
-       {
-           curwin->w_cursor.lnum = lnum;
-diff -Naur vim72.orig/src/ops.c vim72/src/ops.c
---- vim72.orig/src/ops.c       2008-06-21 21:08:59.000000000 +0100
-+++ vim72/src/ops.c    2008-12-06 11:37:50.000000000 +0000
-@@ -2209,12 +2209,15 @@
-     {
-       for (; pos.lnum <= oap->end.lnum; ++pos.lnum)
-       {
-+          int one_change;
-+
-           block_prep(oap, &bd, pos.lnum, FALSE);
-           pos.col = bd.textcol;
--          did_change = swapchars(oap->op_type, &pos, bd.textlen);
-+          one_change = swapchars(oap->op_type, &pos, bd.textlen);
-+          did_change |= one_change;
- # ifdef FEAT_NETBEANS_INTG
--          if (usingNetbeans && did_change)
-+          if (usingNetbeans && one_change)
-           {
-               char_u *ptr = ml_get_buf(curbuf, pos.lnum, FALSE);
-diff -Naur vim72.orig/src/option.c vim72/src/option.c
---- vim72.orig/src/option.c    2008-07-18 14:05:33.000000000 +0100
-+++ vim72/src/option.c 2008-12-06 11:37:50.000000000 +0000
-@@ -2593,13 +2593,13 @@
- #ifdef FEAT_VIMINFO
-                           (char_u *)&p_viminfo, PV_NONE,
- #if defined(MSDOS) || defined(MSWIN) || defined(OS2)
--                          {(char_u *)"", (char_u *)"'20,<50,s10,h,rA:,rB:"}
-+                          {(char_u *)"", (char_u *)"'100,<50,s10,h,rA:,rB:"}
- #else
- # ifdef AMIGA
-                           {(char_u *)"",
--                               (char_u *)"'20,<50,s10,h,rdf0:,rdf1:,rdf2:"}
-+                               (char_u *)"'100,<50,s10,h,rdf0:,rdf1:,rdf2:"}
- # else
--                          {(char_u *)"", (char_u *)"'20,<50,s10,h"}
-+                          {(char_u *)"", (char_u *)"'100,<50,s10,h"}
- # endif
- #endif
- #else
-@@ -7974,6 +7974,11 @@
-       else /* curwin->w_p_scr > curwin->w_height */
-           curwin->w_p_scr = curwin->w_height;
-     }
-+    if (p_hi < 0)
-+    {
-+      errmsg = e_positive;
-+      p_hi = 0;
-+    }
-     if (p_report < 0)
-     {
-       errmsg = e_positive;
-@@ -8227,13 +8232,13 @@
-           {
-               if (number == 0 && string != NULL)
-               {
--                  int index;
-+                  int idx;
-                   /* Either we are given a string or we are setting option
-                    * to zero. */
--                  for (index = 0; string[index] == '0'; ++index)
-+                  for (idx = 0; string[idx] == '0'; ++idx)
-                       ;
--                  if (string[index] != NUL || index == 0)
-+                  if (string[idx] != NUL || idx == 0)
-                   {
-                       /* There's another character after zeros or the string
-                        * is empty.  In both cases, we are trying to set a
-diff -Naur vim72.orig/src/os_unix.c vim72/src/os_unix.c
---- vim72.orig/src/os_unix.c   2008-08-06 12:01:40.000000000 +0100
-+++ vim72/src/os_unix.c        2008-12-06 11:37:50.000000000 +0000
-@@ -315,12 +315,15 @@
-     {-1,          "Unknown!", FALSE}
- };
-+/*
-+ * Write s[len] to the screen.
-+ */
-     void
- mch_write(s, len)
-     char_u    *s;
-     int               len;
- {
--    write(1, (char *)s, len);
-+    ignored = (int)write(1, (char *)s, len);
-     if (p_wd)         /* Unix is too fast, slow down a bit more */
-       RealWaitForChar(read_cmd_fd, p_wd, NULL);
- }
-@@ -2905,7 +2908,7 @@
-      * Ignore any errors.
-      */
- #if defined(HAVE_SIGALTSTACK) || defined(HAVE_SIGSTACK)
--    signal_stack = malloc(SIGSTKSZ);
-+    signal_stack = (char *)alloc(SIGSTKSZ);
-     init_signal_stack();
- #endif
- }
-@@ -2936,7 +2939,8 @@
-     }
- #  endif
- # endif
--# ifdef FEAT_X11
-+    /* Don't close the display for GTK 1, it is done in exit(). */
-+# if defined(FEAT_X11) && (!defined(FEAT_GUI_GTK) || defined(HAVE_GTK2))
-     if (x11_display != NULL
- #  ifdef FEAT_XCLIPBOARD
-           && x11_display != xterm_dpy
-@@ -3926,9 +3930,9 @@
-                */
-               if (fd >= 0)
-               {
--                  dup(fd); /* To replace stdin  (file descriptor 0) */
--                  dup(fd); /* To replace stdout (file descriptor 1) */
--                  dup(fd); /* To replace stderr (file descriptor 2) */
-+                  ignored = dup(fd); /* To replace stdin  (fd 0) */
-+                  ignored = dup(fd); /* To replace stdout (fd 1) */
-+                  ignored = dup(fd); /* To replace stderr (fd 2) */
-                   /* Don't need this now that we've duplicated it */
-                   close(fd);
-@@ -3996,13 +4000,13 @@
-                   /* set up stdin/stdout/stderr for the child */
-                   close(0);
--                  dup(pty_slave_fd);
-+                  ignored = dup(pty_slave_fd);
-                   close(1);
--                  dup(pty_slave_fd);
-+                  ignored = dup(pty_slave_fd);
-                   if (gui.in_use)
-                   {
-                       close(2);
--                      dup(pty_slave_fd);
-+                      ignored = dup(pty_slave_fd);
-                   }
-                   close(pty_slave_fd);    /* has been dupped, close it now */
-@@ -4013,13 +4017,13 @@
-                   /* set up stdin for the child */
-                   close(fd_toshell[1]);
-                   close(0);
--                  dup(fd_toshell[0]);
-+                  ignored = dup(fd_toshell[0]);
-                   close(fd_toshell[0]);
-                   /* set up stdout for the child */
-                   close(fd_fromshell[0]);
-                   close(1);
--                  dup(fd_fromshell[1]);
-+                  ignored = dup(fd_fromshell[1]);
-                   close(fd_fromshell[1]);
- # ifdef FEAT_GUI
-@@ -4027,7 +4031,7 @@
-                   {
-                       /* set up stderr for the child */
-                       close(2);
--                      dup(1);
-+                      ignored = dup(1);
-                   }
- # endif
-               }
-@@ -4158,7 +4162,8 @@
-                                           && (lnum !=
-                                                   curbuf->b_ml.ml_line_count
-                                                   || curbuf->b_p_eol)))
--                                  write(toshell_fd, "\n", (size_t)1);
-+                                  ignored = write(toshell_fd, "\n",
-+                                                                 (size_t)1);
-                               ++lnum;
-                               if (lnum > curbuf->b_op_end.lnum)
-                               {
-@@ -6814,7 +6819,8 @@
-     if (xsmp_icefd != -1)
-     {
-       SmcCloseConnection(xsmp.smcconn, 0, NULL);
--      vim_free(xsmp.clientid);
-+      if (xsmp.clientid != NULL)
-+          free(xsmp.clientid);
-       xsmp.clientid = NULL;
-       xsmp_icefd = -1;
-     }
-diff -Naur vim72.orig/src/popupmnu.c vim72/src/popupmnu.c
---- vim72.orig/src/popupmnu.c  2008-07-12 17:28:18.000000000 +0100
-+++ vim72/src/popupmnu.c       2008-12-06 11:37:49.000000000 +0000
-@@ -573,7 +573,7 @@
-               {
-                   /* Don't want to sync undo in the current buffer. */
-                   ++no_u_sync;
--                  res = do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, 0);
-+                  res = do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, 0, NULL);
-                   --no_u_sync;
-                   if (res == OK)
-                   {
-diff -Naur vim72.orig/src/proto/buffer.pro vim72/src/proto/buffer.pro
---- vim72.orig/src/proto/buffer.pro    2008-08-09 15:31:21.000000000 +0100
-+++ vim72/src/proto/buffer.pro 2008-12-06 11:37:49.000000000 +0000
-@@ -33,7 +33,7 @@
- char_u *getaltfname __ARGS((int errmsg));
- int buflist_add __ARGS((char_u *fname, int flags));
- void buflist_slash_adjust __ARGS((void));
--void buflist_altfpos __ARGS((void));
-+void buflist_altfpos __ARGS((win_T *win));
- int otherfile __ARGS((char_u *ffname));
- void buf_setino __ARGS((buf_T *buf));
- void fileinfo __ARGS((int fullname, int shorthelp, int dont_truncate));
-diff -Naur vim72.orig/src/proto/eval.pro vim72/src/proto/eval.pro
---- vim72.orig/src/proto/eval.pro      2008-08-09 15:31:25.000000000 +0100
-+++ vim72/src/proto/eval.pro   2008-12-06 11:37:50.000000000 +0000
-@@ -17,7 +17,7 @@
- int eval_to_bool __ARGS((char_u *arg, int *error, char_u **nextcmd, int skip));
- char_u *eval_to_string_skip __ARGS((char_u *arg, char_u **nextcmd, int skip));
- int skip_expr __ARGS((char_u **pp));
--char_u *eval_to_string __ARGS((char_u *arg, char_u **nextcmd, int dolist));
-+char_u *eval_to_string __ARGS((char_u *arg, char_u **nextcmd, int convert));
- char_u *eval_to_string_safe __ARGS((char_u *arg, char_u **nextcmd, int use_sandbox));
- int eval_to_number __ARGS((char_u *expr));
- list_T *eval_spell_expr __ARGS((char_u *badword, char_u *expr));
-@@ -46,7 +46,9 @@
- void list_unref __ARGS((list_T *l));
- void list_free __ARGS((list_T *l, int recurse));
- dictitem_T *dict_lookup __ARGS((hashitem_T *hi));
-+char_u *list_find_str __ARGS((list_T *l, long idx));
- int list_append_dict __ARGS((list_T *list, dict_T *dict));
-+int list_append_string __ARGS((list_T *l, char_u *str, int len));
- int garbage_collect __ARGS((void));
- dict_T *dict_alloc __ARGS((void));
- int dict_add_nr_str __ARGS((dict_T *d, char *key, long nr, char_u *str));
-@@ -58,8 +60,10 @@
- void set_vim_var_nr __ARGS((int idx, long val));
- long get_vim_var_nr __ARGS((int idx));
- char_u *get_vim_var_str __ARGS((int idx));
--void set_vcount __ARGS((long count, long count1));
-+list_T *get_vim_var_list __ARGS((int idx));
-+void set_vcount __ARGS((long count, long count1, int set_prevcount));
- void set_vim_var_string __ARGS((int idx, char_u *val, int len));
-+void set_vim_var_list __ARGS((int idx, list_T *val));
- void set_reg_var __ARGS((int c));
- char_u *v_exception __ARGS((char_u *oldval));
- char_u *v_throwpoint __ARGS((char_u *oldval));
-@@ -94,6 +98,7 @@
- void write_viminfo_varlist __ARGS((FILE *fp));
- int store_session_globals __ARGS((FILE *fd));
- void last_set_msg __ARGS((scid_T scriptID));
-+void ex_oldfiles __ARGS((exarg_T *eap));
- int modify_fname __ARGS((char_u *src, int *usedlen, char_u **fnamep, char_u **bufp, int *fnamelen));
- char_u *do_string_sub __ARGS((char_u *str, char_u *pat, char_u *sub, char_u *flags));
- /* vim: set ft=c : */
-diff -Naur vim72.orig/src/proto/ex_cmds.pro vim72/src/proto/ex_cmds.pro
---- vim72.orig/src/proto/ex_cmds.pro   2008-08-09 15:31:25.000000000 +0100
-+++ vim72/src/proto/ex_cmds.pro        2008-12-06 11:37:49.000000000 +0000
-@@ -11,7 +11,7 @@
- char_u *make_filter_cmd __ARGS((char_u *cmd, char_u *itmp, char_u *otmp));
- void append_redir __ARGS((char_u *buf, char_u *opt, char_u *fname));
- int viminfo_error __ARGS((char *errnum, char *message, char_u *line));
--int read_viminfo __ARGS((char_u *file, int want_info, int want_marks, int forceit));
-+int read_viminfo __ARGS((char_u *file, int flags));
- void write_viminfo __ARGS((char_u *file, int forceit));
- int viminfo_readline __ARGS((vir_T *virp));
- char_u *viminfo_readstring __ARGS((vir_T *virp, int off, int convert));
-@@ -27,7 +27,7 @@
- void do_wqall __ARGS((exarg_T *eap));
- int not_writing __ARGS((void));
- int getfile __ARGS((int fnum, char_u *ffname, char_u *sfname, int setpm, linenr_T lnum, int forceit));
--int do_ecmd __ARGS((int fnum, char_u *ffname, char_u *sfname, exarg_T *eap, linenr_T newlnum, int flags));
-+int do_ecmd __ARGS((int fnum, char_u *ffname, char_u *sfname, exarg_T *eap, linenr_T newlnum, int flags, win_T *oldwin));
- void ex_append __ARGS((exarg_T *eap));
- void ex_change __ARGS((exarg_T *eap));
- void ex_z __ARGS((exarg_T *eap));
-diff -Naur vim72.orig/src/proto/ex_getln.pro vim72/src/proto/ex_getln.pro
---- vim72.orig/src/proto/ex_getln.pro  2008-08-09 15:31:28.000000000 +0100
-+++ vim72/src/proto/ex_getln.pro       2008-12-06 11:37:50.000000000 +0000
-@@ -31,7 +31,7 @@
- void set_cmd_context __ARGS((expand_T *xp, char_u *str, int len, int col));
- int expand_cmdline __ARGS((expand_T *xp, char_u *str, int col, int *matchcount, char_u ***matches));
- int ExpandGeneric __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file, char_u *((*func)(expand_T *, int))));
--char_u *globpath __ARGS((char_u *path, char_u *file));
-+char_u *globpath __ARGS((char_u *path, char_u *file, int expand_options));
- void init_history __ARGS((void));
- int get_histtype __ARGS((char_u *name));
- void add_to_history __ARGS((int histype, char_u *new_entry, int in_map, int sep));
-diff -Naur vim72.orig/src/proto/mark.pro vim72/src/proto/mark.pro
---- vim72.orig/src/proto/mark.pro      2008-08-09 15:31:36.000000000 +0100
-+++ vim72/src/proto/mark.pro   2008-12-06 11:37:49.000000000 +0000
-@@ -26,5 +26,5 @@
- void write_viminfo_filemarks __ARGS((FILE *fp));
- int removable __ARGS((char_u *name));
- int write_viminfo_marks __ARGS((FILE *fp_out));
--void copy_viminfo_marks __ARGS((vir_T *virp, FILE *fp_out, int count, int eof));
-+void copy_viminfo_marks __ARGS((vir_T *virp, FILE *fp_out, int count, int eof, int flags));
- /* vim: set ft=c : */
-diff -Naur vim72.orig/src/pty.c vim72/src/pty.c
---- vim72.orig/src/pty.c       2008-06-21 19:52:58.000000000 +0100
-+++ vim72/src/pty.c    2008-12-06 11:37:48.000000000 +0000
-@@ -270,9 +270,10 @@
- }
- #endif
--#if defined(HAVE_SVR4_PTYS) && !defined(PTY_DONE) && !defined(hpux)
-+#if defined(HAVE_SVR4_PTYS) && !defined(PTY_DONE) && !defined(hpux) && !defined(MACOS_X)
--/* NOTE: Even though HPUX can have /dev/ptmx, the code below doesn't work! */
-+/* NOTE: Even though HPUX can have /dev/ptmx, the code below doesn't work!
-+ * Same for Mac OS X Leopard. */
- #define PTY_DONE
-     int
- OpenPTY(ttyn)
-diff -Naur vim72.orig/src/quickfix.c vim72/src/quickfix.c
---- vim72.orig/src/quickfix.c  2008-07-18 13:53:02.000000000 +0100
-+++ vim72/src/quickfix.c       2008-12-06 11:37:49.000000000 +0000
-@@ -1420,6 +1420,7 @@
-     win_T             *win;
-     win_T             *altwin;
- #endif
-+    win_T             *oldwin = curwin;
-     int                       print_message = TRUE;
-     int                       len;
- #ifdef FEAT_FOLDING
-@@ -1744,7 +1745,8 @@
-           }
-           else
-               ok = do_ecmd(qf_ptr->qf_fnum, NULL, NULL, NULL, (linenr_T)1,
--                                                 ECMD_HIDE + ECMD_SET_HELP);
-+                                         ECMD_HIDE + ECMD_SET_HELP,
-+                                         oldwin == curwin ? curwin : NULL);
-       }
-       else
-           ok = buflist_getfile(qf_ptr->qf_fnum,
-@@ -2267,6 +2269,7 @@
-     win_T     *win;
-     tabpage_T *prevtab = curtab;
-     buf_T     *qf_buf;
-+    win_T     *oldwin = curwin;
-     if (eap->cmdidx == CMD_lopen || eap->cmdidx == CMD_lwindow)
-     {
-@@ -2326,14 +2329,16 @@
-           win->w_llist->qf_refcount++;
-       }
-+      if (oldwin != curwin)
-+          oldwin = NULL;  /* don't store info when in another window */
-       if (qf_buf != NULL)
-           /* Use the existing quickfix buffer */
-           (void)do_ecmd(qf_buf->b_fnum, NULL, NULL, NULL, ECMD_ONE,
--                                                   ECMD_HIDE + ECMD_OLDBUF);
-+                                           ECMD_HIDE + ECMD_OLDBUF, oldwin);
-       else
-       {
-           /* Create a new quickfix buffer */
--          (void)do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE);
-+          (void)do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE, oldwin);
-           /* switch off 'swapfile' */
-           set_option_value((char_u *)"swf", 0L, NULL, OPT_LOCAL);
-           set_option_value((char_u *)"bt", 0L, (char_u *)"quickfix",
-diff -Naur vim72.orig/src/screen.c vim72/src/screen.c
---- vim72.orig/src/screen.c    2008-07-24 15:45:07.000000000 +0100
-+++ vim72/src/screen.c 2008-12-06 11:37:48.000000000 +0000
-@@ -2439,9 +2439,17 @@
- #ifdef FEAT_SYN_HL
-     /* Show 'cursorcolumn' in the fold line. */
--    if (wp->w_p_cuc && (int)wp->w_virtcol + txtcol < W_WIDTH(wp))
--      ScreenAttrs[off + wp->w_virtcol + txtcol] = hl_combine_attr(
--               ScreenAttrs[off + wp->w_virtcol + txtcol], hl_attr(HLF_CUC));
-+    if (wp->w_p_cuc)
-+    {
-+      txtcol += wp->w_virtcol;
-+      if (wp->w_p_wrap)
-+          txtcol -= wp->w_skipcol;
-+      else
-+          txtcol -= wp->w_leftcol;
-+      if (txtcol >= 0 && txtcol < W_WIDTH(wp))
-+          ScreenAttrs[off + txtcol] = hl_combine_attr(
-+                               ScreenAttrs[off + txtcol], hl_attr(HLF_CUC));
-+    }
- #endif
-     SCREEN_LINE(row + W_WINROW(wp), W_WINCOL(wp), (int)W_WIDTH(wp),
-diff -Naur vim72.orig/src/spell.c vim72/src/spell.c
---- vim72.orig/src/spell.c     2008-07-12 20:20:55.000000000 +0100
-+++ vim72/src/spell.c  2008-12-06 11:37:50.000000000 +0000
-@@ -77,7 +77,7 @@
- /*
-  * Do the opposite: based on a maximum end score and a known sound score,
-- * compute the the maximum word score that can be used.
-+ * compute the maximum word score that can be used.
-  */
- #define MAXSCORE(word_score, sound_score) ((4 * word_score - sound_score) / 3)
-@@ -469,6 +469,7 @@
-     garray_T  sl_comppat;     /* CHECKCOMPOUNDPATTERN items */
-     regprog_T *sl_compprog;   /* COMPOUNDRULE turned into a regexp progrm
-                                * (NULL when no compounding) */
-+    char_u    *sl_comprules;  /* all COMPOUNDRULE concatenated (or NULL) */
-     char_u    *sl_compstartflags; /* flags for first compound word */
-     char_u    *sl_compallflags; /* all flags for compound words */
-     char_u    sl_nobreak;     /* When TRUE: no spaces between words */
-@@ -625,7 +626,7 @@
- /* TRUE if a word appears in the list of banned words.  */
- #define WAS_BANNED(su, word) (!HASHITEM_EMPTY(hash_find(&su->su_banned, word)))
--/* Number of suggestions kept when cleaning up.  we need to keep more than
-+/* Number of suggestions kept when cleaning up.  We need to keep more than
-  * what is displayed, because when rescore_suggestions() is called the score
-  * may change and wrong suggestions may be removed later. */
- #define SUG_CLEAN_COUNT(su)    ((su)->su_maxcount < 130 ? 150 : (su)->su_maxcount + 20)
-@@ -839,7 +840,10 @@
- static void slang_clear __ARGS((slang_T *lp));
- static void slang_clear_sug __ARGS((slang_T *lp));
- static void find_word __ARGS((matchinf_T *mip, int mode));
-+static int match_checkcompoundpattern __ARGS((char_u *ptr, int wlen, garray_T *gap));
- static int can_compound __ARGS((slang_T *slang, char_u *word, char_u *flags));
-+static int can_be_compound __ARGS((trystate_T *sp, slang_T *slang, char_u *compflags, int flag));
-+static int match_compoundrule __ARGS((slang_T *slang, char_u *compflags));
- static int valid_word_prefix __ARGS((int totprefcnt, int arridx, int flags, char_u *word, slang_T *slang, int cond_req));
- static void find_prefix __ARGS((matchinf_T *mip, int mode));
- static int fold_more __ARGS((matchinf_T *mip));
-@@ -1519,6 +1523,11 @@
-                                           ((unsigned)flags >> 24)))
-                   continue;
-+              /* If there is a match with a CHECKCOMPOUNDPATTERN rule
-+               * discard the compound word. */
-+              if (match_checkcompoundpattern(ptr, wlen, &slang->sl_comppat))
-+                  continue;
-+
-               if (mode == FIND_COMPOUND)
-               {
-                   int     capflags;
-@@ -1577,6 +1586,11 @@
-                   if (!can_compound(slang, fword, mip->mi_compflags))
-                       continue;
-               }
-+              else if (slang->sl_comprules != NULL
-+                           && !match_compoundrule(slang, mip->mi_compflags))
-+                  /* The compound flags collected so far do not match any
-+                   * COMPOUNDRULE, discard the compounded word. */
-+                  continue;
-           }
-           /* Check NEEDCOMPOUND: can't use word without compounding. */
-@@ -1727,6 +1741,39 @@
- }
- /*
-+ * Return TRUE if there is a match between the word ptr[wlen] and
-+ * CHECKCOMPOUNDPATTERN rules, assuming that we will concatenate with another
-+ * word.
-+ * A match means that the first part of CHECKCOMPOUNDPATTERN matches at the
-+ * end of ptr[wlen] and the second part matches after it.
-+ */
-+    static int
-+match_checkcompoundpattern(ptr, wlen, gap)
-+    char_u    *ptr;
-+    int               wlen;
-+    garray_T  *gap;  /* &sl_comppat */
-+{
-+    int               i;
-+    char_u    *p;
-+    int               len;
-+
-+    for (i = 0; i + 1 < gap->ga_len; i += 2)
-+    {
-+      p = ((char_u **)gap->ga_data)[i + 1];
-+      if (STRNCMP(ptr + wlen, p, STRLEN(p)) == 0)
-+      {
-+          /* Second part matches at start of following compound word, now
-+           * check if first part matches at end of previous word. */
-+          p = ((char_u **)gap->ga_data)[i];
-+          len = STRLEN(p);
-+          if (len <= wlen && STRNCMP(ptr + wlen - len, p, len) == 0)
-+              return TRUE;
-+      }
-+    }
-+    return FALSE;
-+}
-+
-+/*
-  * Return TRUE if "flags" is a valid sequence of compound flags and "word"
-  * does not have too many syllables.
-  */
-@@ -1773,6 +1820,98 @@
- }
- /*
-+ * Return TRUE when the sequence of flags in "compflags" plus "flag" can
-+ * possibly form a valid compounded word.  This also checks the COMPOUNDRULE
-+ * lines if they don't contain wildcards.
-+ */
-+    static int
-+can_be_compound(sp, slang, compflags, flag)
-+    trystate_T        *sp;
-+    slang_T   *slang;
-+    char_u    *compflags;
-+    int               flag;
-+{
-+    /* If the flag doesn't appear in sl_compstartflags or sl_compallflags
-+     * then it can't possibly compound. */
-+    if (!byte_in_str(sp->ts_complen == sp->ts_compsplit
-+              ? slang->sl_compstartflags : slang->sl_compallflags, flag))
-+      return FALSE;
-+
-+    /* If there are no wildcards, we can check if the flags collected so far
-+     * possibly can form a match with COMPOUNDRULE patterns.  This only
-+     * makes sense when we have two or more words. */
-+    if (slang->sl_comprules != NULL && sp->ts_complen > sp->ts_compsplit)
-+    {
-+      int v;
-+
-+      compflags[sp->ts_complen] = flag;
-+      compflags[sp->ts_complen + 1] = NUL;
-+      v = match_compoundrule(slang, compflags + sp->ts_compsplit);
-+      compflags[sp->ts_complen] = NUL;
-+      return v;
-+    }
-+
-+    return TRUE;
-+}
-+
-+
-+/*
-+ * Return TRUE if the compound flags in compflags[] match the start of any
-+ * compound rule.  This is used to stop trying a compound if the flags
-+ * collected so far can't possibly match any compound rule.
-+ * Caller must check that slang->sl_comprules is not NULL.
-+ */
-+    static int
-+match_compoundrule(slang, compflags)
-+    slang_T   *slang;
-+    char_u    *compflags;
-+{
-+    char_u    *p;
-+    int               i;
-+    int               c;
-+
-+    /* loop over all the COMPOUNDRULE entries */
-+    for (p = slang->sl_comprules; *p != NUL; ++p)
-+    {
-+      /* loop over the flags in the compound word we have made, match
-+       * them against the current rule entry */
-+      for (i = 0; ; ++i)
-+      {
-+          c = compflags[i];
-+          if (c == NUL)
-+              /* found a rule that matches for the flags we have so far */
-+              return TRUE;
-+          if (*p == '/' || *p == NUL)
-+              break;  /* end of rule, it's too short */
-+          if (*p == '[')
-+          {
-+              int match = FALSE;
-+
-+              /* compare against all the flags in [] */
-+              ++p;
-+              while (*p != ']' && *p != NUL)
-+                  if (*p++ == c)
-+                      match = TRUE;
-+              if (!match)
-+                  break;  /* none matches */
-+          }
-+          else if (*p != c)
-+              break;  /* flag of word doesn't match flag in pattern */
-+          ++p;
-+      }
-+
-+      /* Skip to the next "/", where the next pattern starts. */
-+      p = vim_strchr(p, '/');
-+      if (p == NULL)
-+          break;
-+    }
-+
-+    /* Checked all the rules and none of them match the flags, so there
-+     * can't possibly be a compound starting with these flags. */
-+    return FALSE;
-+}
-+
-+/*
-  * Return non-zero if the prefix indicated by "arridx" matches with the prefix
-  * ID in "flags" for the word "word".
-  * The WF_RAREPFX flag is included in the return value for a rare prefix.
-@@ -2513,9 +2652,11 @@
-     lp->sl_midword = NULL;
-     vim_free(lp->sl_compprog);
-+    vim_free(lp->sl_comprules);
-     vim_free(lp->sl_compstartflags);
-     vim_free(lp->sl_compallflags);
-     lp->sl_compprog = NULL;
-+    lp->sl_comprules = NULL;
-     lp->sl_compstartflags = NULL;
-     lp->sl_compallflags = NULL;
-@@ -3460,6 +3601,7 @@
-     char_u    *pp;
-     char_u    *cp;
-     char_u    *ap;
-+    char_u    *crp;
-     int               cnt;
-     garray_T  *gap;
-@@ -3545,6 +3687,12 @@
-     slang->sl_compallflags = ap;
-     *ap = NUL;
-+    /* And a list of all patterns in their original form, for checking whether
-+     * compounding may work in match_compoundrule().  This is freed when we
-+     * encounter a wildcard, the check doesn't work then. */
-+    crp = alloc(todo + 1);
-+    slang->sl_comprules = crp;
-+
-     pp = pat;
-     *pp++ = '^';
-     *pp++ = '\\';
-@@ -3587,6 +3735,20 @@
-                   atstart = 0;
-           }
-       }
-+
-+      /* Copy flag to "sl_comprules", unless we run into a wildcard. */
-+      if (crp != NULL)
-+      {
-+          if (c == '+' || c == '*')
-+          {
-+              vim_free(slang->sl_comprules);
-+              slang->sl_comprules = NULL;
-+              crp = NULL;
-+          }
-+          else
-+              *crp++ = c;
-+      }
-+
-       if (c == '/')       /* slash separates two items */
-       {
-           *pp++ = '\\';
-@@ -3611,6 +3773,9 @@
-     *pp++ = '$';
-     *pp = NUL;
-+    if (crp != NULL)
-+      *crp = NUL;
-+
-     slang->sl_compprog = vim_regcomp(pat, RE_MAGIC + RE_STRING + RE_STRICT);
-     vim_free(pat);
-     if (slang->sl_compprog == NULL)
-@@ -4915,6 +5080,7 @@
- } spellinfo_T;
- static afffile_T *spell_read_aff __ARGS((spellinfo_T *spin, char_u *fname));
-+static int is_aff_rule __ARGS((char_u **items, int itemcnt, char *rulename, int        mincount));
- static void aff_process_flags __ARGS((afffile_T *affile, affentry_T *entry));
- static int spell_info_item __ARGS((char_u *s));
- static unsigned affitem2flag __ARGS((int flagtype, char_u *item, char_u       *fname, int lnum));
-@@ -4950,7 +5116,7 @@
- static void put_sugtime __ARGS((spellinfo_T *spin, FILE *fd));
- static int write_vim_spell __ARGS((spellinfo_T *spin, char_u *fname));
- static void clear_node __ARGS((wordnode_T *node));
--static int put_node __ARGS((FILE *fd, wordnode_T *node, int index, int regionmask, int prefixtree));
-+static int put_node __ARGS((FILE *fd, wordnode_T *node, int idx, int regionmask, int prefixtree));
- static void spell_make_sugfile __ARGS((spellinfo_T *spin, char_u *wfname));
- static int sug_filltree __ARGS((spellinfo_T *spin, slang_T *slang));
- static int sug_maketable __ARGS((spellinfo_T *spin));
-@@ -5223,8 +5389,7 @@
-       /* Handle non-empty lines. */
-       if (itemcnt > 0)
-       {
--          if (STRCMP(items[0], "SET") == 0 && itemcnt == 2
--                                                     && aff->af_enc == NULL)
-+          if (is_aff_rule(items, itemcnt, "SET", 2) && aff->af_enc == NULL)
-           {
- #ifdef FEAT_MBYTE
-               /* Setup for conversion from "ENC" to 'encoding'. */
-@@ -5239,7 +5404,7 @@
-                   smsg((char_u *)_("Conversion in %s not supported"), fname);
- #endif
-           }
--          else if (STRCMP(items[0], "FLAG") == 0 && itemcnt == 2
-+          else if (is_aff_rule(items, itemcnt, "FLAG", 2)
-                                             && aff->af_flagtype == AFT_CHAR)
-           {
-               if (STRCMP(items[1], "long") == 0)
-@@ -5284,69 +5449,71 @@
-                       spin->si_info = p;
-                   }
-           }
--          else if (STRCMP(items[0], "MIDWORD") == 0 && itemcnt == 2
-+          else if (is_aff_rule(items, itemcnt, "MIDWORD", 2)
-                                                          && midword == NULL)
-           {
-               midword = getroom_save(spin, items[1]);
-           }
--          else if (STRCMP(items[0], "TRY") == 0 && itemcnt == 2)
-+          else if (is_aff_rule(items, itemcnt, "TRY", 2))
-           {
-               /* ignored, we look in the tree for what chars may appear */
-           }
-           /* TODO: remove "RAR" later */
--          else if ((STRCMP(items[0], "RAR") == 0
--                      || STRCMP(items[0], "RARE") == 0) && itemcnt == 2
--                                                     && aff->af_rare == 0)
-+          else if ((is_aff_rule(items, itemcnt, "RAR", 2)
-+                      || is_aff_rule(items, itemcnt, "RARE", 2))
-+                                                       && aff->af_rare == 0)
-           {
-               aff->af_rare = affitem2flag(aff->af_flagtype, items[1],
-                                                                fname, lnum);
-           }
-           /* TODO: remove "KEP" later */
--          else if ((STRCMP(items[0], "KEP") == 0
--                  || STRCMP(items[0], "KEEPCASE") == 0) && itemcnt == 2
-+          else if ((is_aff_rule(items, itemcnt, "KEP", 2)
-+                      || is_aff_rule(items, itemcnt, "KEEPCASE", 2))
-                                                    && aff->af_keepcase == 0)
-           {
-               aff->af_keepcase = affitem2flag(aff->af_flagtype, items[1],
-                                                                fname, lnum);
-           }
--          else if (STRCMP(items[0], "BAD") == 0 && itemcnt == 2
--                                                     && aff->af_bad == 0)
-+          else if ((is_aff_rule(items, itemcnt, "BAD", 2)
-+                      || is_aff_rule(items, itemcnt, "FORBIDDENWORD", 2))
-+                                                        && aff->af_bad == 0)
-           {
-               aff->af_bad = affitem2flag(aff->af_flagtype, items[1],
-                                                                fname, lnum);
-           }
--          else if (STRCMP(items[0], "NEEDAFFIX") == 0 && itemcnt == 2
-+          else if (is_aff_rule(items, itemcnt, "NEEDAFFIX", 2)
-                                                   && aff->af_needaffix == 0)
-           {
-               aff->af_needaffix = affitem2flag(aff->af_flagtype, items[1],
-                                                                fname, lnum);
-           }
--          else if (STRCMP(items[0], "CIRCUMFIX") == 0 && itemcnt == 2
-+          else if (is_aff_rule(items, itemcnt, "CIRCUMFIX", 2)
-                                                   && aff->af_circumfix == 0)
-           {
-               aff->af_circumfix = affitem2flag(aff->af_flagtype, items[1],
-                                                                fname, lnum);
-           }
--          else if (STRCMP(items[0], "NOSUGGEST") == 0 && itemcnt == 2
-+          else if (is_aff_rule(items, itemcnt, "NOSUGGEST", 2)
-                                                   && aff->af_nosuggest == 0)
-           {
-               aff->af_nosuggest = affitem2flag(aff->af_flagtype, items[1],
-                                                                fname, lnum);
-           }
--          else if (STRCMP(items[0], "NEEDCOMPOUND") == 0 && itemcnt == 2
-+          else if ((is_aff_rule(items, itemcnt, "NEEDCOMPOUND", 2)
-+                      || is_aff_rule(items, itemcnt, "ONLYINCOMPOUND", 2))
-                                                    && aff->af_needcomp == 0)
-           {
-               aff->af_needcomp = affitem2flag(aff->af_flagtype, items[1],
-                                                                fname, lnum);
-           }
--          else if (STRCMP(items[0], "COMPOUNDROOT") == 0 && itemcnt == 2
-+          else if (is_aff_rule(items, itemcnt, "COMPOUNDROOT", 2)
-                                                    && aff->af_comproot == 0)
-           {
-               aff->af_comproot = affitem2flag(aff->af_flagtype, items[1],
-                                                                fname, lnum);
-           }
--          else if (STRCMP(items[0], "COMPOUNDFORBIDFLAG") == 0
--                                 && itemcnt == 2 && aff->af_compforbid == 0)
-+          else if (is_aff_rule(items, itemcnt, "COMPOUNDFORBIDFLAG", 2)
-+                                                 && aff->af_compforbid == 0)
-           {
-               aff->af_compforbid = affitem2flag(aff->af_flagtype, items[1],
-                                                                fname, lnum);
-@@ -5354,8 +5521,8 @@
-                   smsg((char_u *)_("Defining COMPOUNDFORBIDFLAG after PFX item may give wrong results in %s line %d"),
-                           fname, lnum);
-           }
--          else if (STRCMP(items[0], "COMPOUNDPERMITFLAG") == 0
--                                 && itemcnt == 2 && aff->af_comppermit == 0)
-+          else if (is_aff_rule(items, itemcnt, "COMPOUNDPERMITFLAG", 2)
-+                                                 && aff->af_comppermit == 0)
-           {
-               aff->af_comppermit = affitem2flag(aff->af_flagtype, items[1],
-                                                                fname, lnum);
-@@ -5363,7 +5530,7 @@
-                   smsg((char_u *)_("Defining COMPOUNDPERMITFLAG after PFX item may give wrong results in %s line %d"),
-                           fname, lnum);
-           }
--          else if (STRCMP(items[0], "COMPOUNDFLAG") == 0 && itemcnt == 2
-+          else if (is_aff_rule(items, itemcnt, "COMPOUNDFLAG", 2)
-                                                        && compflags == NULL)
-           {
-               /* Turn flag "c" into COMPOUNDRULE compatible string "c+",
-@@ -5376,7 +5543,15 @@
-                   compflags = p;
-               }
-           }
--          else if (STRCMP(items[0], "COMPOUNDRULE") == 0 && itemcnt == 2)
-+          else if (is_aff_rule(items, itemcnt, "COMPOUNDRULES", 2))
-+          {
-+              /* We don't use the count, but do check that it's a number and
-+               * not COMPOUNDRULE mistyped. */
-+              if (atoi((char *)items[1]) == 0)
-+                  smsg((char_u *)_("Wrong COMPOUNDRULES value in %s line %d: %s"),
-+                                                     fname, lnum, items[1]);
-+          }
-+          else if (is_aff_rule(items, itemcnt, "COMPOUNDRULE", 2))
-           {
-               /* Concatenate this string to previously defined ones, using a
-                * slash to separate them. */
-@@ -5395,7 +5570,7 @@
-                   compflags = p;
-               }
-           }
--          else if (STRCMP(items[0], "COMPOUNDWORDMAX") == 0 && itemcnt == 2
-+          else if (is_aff_rule(items, itemcnt, "COMPOUNDWORDMAX", 2)
-                                                             && compmax == 0)
-           {
-               compmax = atoi((char *)items[1]);
-@@ -5403,7 +5578,7 @@
-                   smsg((char_u *)_("Wrong COMPOUNDWORDMAX value in %s line %d: %s"),
-                                                      fname, lnum, items[1]);
-           }
--          else if (STRCMP(items[0], "COMPOUNDMIN") == 0 && itemcnt == 2
-+          else if (is_aff_rule(items, itemcnt, "COMPOUNDMIN", 2)
-                                                          && compminlen == 0)
-           {
-               compminlen = atoi((char *)items[1]);
-@@ -5411,7 +5586,7 @@
-                   smsg((char_u *)_("Wrong COMPOUNDMIN value in %s line %d: %s"),
-                                                      fname, lnum, items[1]);
-           }
--          else if (STRCMP(items[0], "COMPOUNDSYLMAX") == 0 && itemcnt == 2
-+          else if (is_aff_rule(items, itemcnt, "COMPOUNDSYLMAX", 2)
-                                                          && compsylmax == 0)
-           {
-               compsylmax = atoi((char *)items[1]);
-@@ -5419,32 +5594,29 @@
-                   smsg((char_u *)_("Wrong COMPOUNDSYLMAX value in %s line %d: %s"),
-                                                      fname, lnum, items[1]);
-           }
--          else if (STRCMP(items[0], "CHECKCOMPOUNDDUP") == 0 && itemcnt == 1)
-+          else if (is_aff_rule(items, itemcnt, "CHECKCOMPOUNDDUP", 1))
-           {
-               compoptions |= COMP_CHECKDUP;
-           }
--          else if (STRCMP(items[0], "CHECKCOMPOUNDREP") == 0 && itemcnt == 1)
-+          else if (is_aff_rule(items, itemcnt, "CHECKCOMPOUNDREP", 1))
-           {
-               compoptions |= COMP_CHECKREP;
-           }
--          else if (STRCMP(items[0], "CHECKCOMPOUNDCASE") == 0 && itemcnt == 1)
-+          else if (is_aff_rule(items, itemcnt, "CHECKCOMPOUNDCASE", 1))
-           {
-               compoptions |= COMP_CHECKCASE;
-           }
--          else if (STRCMP(items[0], "CHECKCOMPOUNDTRIPLE") == 0
--                                                            && itemcnt == 1)
-+          else if (is_aff_rule(items, itemcnt, "CHECKCOMPOUNDTRIPLE", 1))
-           {
-               compoptions |= COMP_CHECKTRIPLE;
-           }
--          else if (STRCMP(items[0], "CHECKCOMPOUNDPATTERN") == 0
--                                                            && itemcnt == 2)
-+          else if (is_aff_rule(items, itemcnt, "CHECKCOMPOUNDPATTERN", 2))
-           {
-               if (atoi((char *)items[1]) == 0)
-                   smsg((char_u *)_("Wrong CHECKCOMPOUNDPATTERN value in %s line %d: %s"),
-                                                      fname, lnum, items[1]);
-           }
--          else if (STRCMP(items[0], "CHECKCOMPOUNDPATTERN") == 0
--                                                            && itemcnt == 3)
-+          else if (is_aff_rule(items, itemcnt, "CHECKCOMPOUNDPATTERN", 3))
-           {
-               garray_T    *gap = &spin->si_comppat;
-               int         i;
-@@ -5463,24 +5635,24 @@
-                                              = getroom_save(spin, items[2]);
-               }
-           }
--          else if (STRCMP(items[0], "SYLLABLE") == 0 && itemcnt == 2
-+          else if (is_aff_rule(items, itemcnt, "SYLLABLE", 2)
-                                                         && syllable == NULL)
-           {
-               syllable = getroom_save(spin, items[1]);
-           }
--          else if (STRCMP(items[0], "NOBREAK") == 0 && itemcnt == 1)
-+          else if (is_aff_rule(items, itemcnt, "NOBREAK", 1))
-           {
-               spin->si_nobreak = TRUE;
-           }
--          else if (STRCMP(items[0], "NOSPLITSUGS") == 0 && itemcnt == 1)
-+          else if (is_aff_rule(items, itemcnt, "NOSPLITSUGS", 1))
-           {
-               spin->si_nosplitsugs = TRUE;
-           }
--          else if (STRCMP(items[0], "NOSUGFILE") == 0 && itemcnt == 1)
-+          else if (is_aff_rule(items, itemcnt, "NOSUGFILE", 1))
-           {
-               spin->si_nosugfile = TRUE;
-           }
--          else if (STRCMP(items[0], "PFXPOSTPONE") == 0 && itemcnt == 1)
-+          else if (is_aff_rule(items, itemcnt, "PFXPOSTPONE", 1))
-           {
-               aff->af_pfxpostpone = TRUE;
-           }
-@@ -5771,24 +5943,20 @@
-                   }
-               }
-           }
--          else if (STRCMP(items[0], "FOL") == 0 && itemcnt == 2
--                                                             && fol == NULL)
-+          else if (is_aff_rule(items, itemcnt, "FOL", 2) && fol == NULL)
-           {
-               fol = vim_strsave(items[1]);
-           }
--          else if (STRCMP(items[0], "LOW") == 0 && itemcnt == 2
--                                                             && low == NULL)
-+          else if (is_aff_rule(items, itemcnt, "LOW", 2) && low == NULL)
-           {
-               low = vim_strsave(items[1]);
-           }
--          else if (STRCMP(items[0], "UPP") == 0 && itemcnt == 2
--                                                             && upp == NULL)
-+          else if (is_aff_rule(items, itemcnt, "UPP", 2) && upp == NULL)
-           {
-               upp = vim_strsave(items[1]);
-           }
--          else if ((STRCMP(items[0], "REP") == 0
--                      || STRCMP(items[0], "REPSAL") == 0)
--                  && itemcnt == 2)
-+          else if (is_aff_rule(items, itemcnt, "REP", 2)
-+                   || is_aff_rule(items, itemcnt, "REPSAL", 2))
-           {
-               /* Ignore REP/REPSAL count */;
-               if (!isdigit(*items[1]))
-@@ -5819,7 +5987,7 @@
-                                        : &spin->si_rep, items[1], items[2]);
-               }
-           }
--          else if (STRCMP(items[0], "MAP") == 0 && itemcnt == 2)
-+          else if (is_aff_rule(items, itemcnt, "MAP", 2))
-           {
-               /* MAP item or count */
-               if (!found_map)
-@@ -5856,9 +6024,8 @@
-                   ga_append(&spin->si_map, '/');
-               }
-           }
--          /* Accept "SAL from to" and "SAL from to # comment". */
--          else if (STRCMP(items[0], "SAL") == 0
--                  && (itemcnt == 3 || (itemcnt > 3 && items[3][0] == '#')))
-+          /* Accept "SAL from to" and "SAL from to  #comment". */
-+          else if (is_aff_rule(items, itemcnt, "SAL", 3))
-           {
-               if (do_sal)
-               {
-@@ -5877,12 +6044,12 @@
-                                                               : items[2]);
-               }
-           }
--          else if (STRCMP(items[0], "SOFOFROM") == 0 && itemcnt == 2
-+          else if (is_aff_rule(items, itemcnt, "SOFOFROM", 2)
-                                                         && sofofrom == NULL)
-           {
-               sofofrom = getroom_save(spin, items[1]);
-           }
--          else if (STRCMP(items[0], "SOFOTO") == 0 && itemcnt == 2
-+          else if (is_aff_rule(items, itemcnt, "SOFOTO", 2)
-                                                           && sofoto == NULL)
-           {
-               sofoto = getroom_save(spin, items[1]);
-@@ -5980,7 +6147,7 @@
-       else if (spin->si_newprefID == 0 || spin->si_newprefID == 127)
-           MSG(_("Too many compound flags"));
-       else
--          MSG(_("Too many posponed prefixes and/or compound flags"));
-+          MSG(_("Too many postponed prefixes and/or compound flags"));
-     }
-     if (syllable != NULL)
-@@ -6017,6 +6184,22 @@
- }
- /*
-+ * Return TRUE when items[0] equals "rulename", there are "mincount" items or
-+ * a comment is following after item "mincount".
-+ */
-+    static int
-+is_aff_rule(items, itemcnt, rulename, mincount)
-+    char_u    **items;
-+    int               itemcnt;
-+    char      *rulename;
-+    int               mincount;
-+{
-+    return (STRCMP(items[0], rulename) == 0
-+          && (itemcnt == mincount
-+              || (itemcnt > mincount && items[mincount][0] == '#')));
-+}
-+
-+/*
-  * For affix "entry" move COMPOUNDFORBIDFLAG and COMPOUNDPERMITFLAG from
-  * ae_flags to ae_comppermit and ae_compforbid.
-  */
-@@ -7926,6 +8109,8 @@
-     char_u    *p;
-     int               rr;
-     int               retval = OK;
-+    size_t    fwv = 1;  /* collect return value of fwrite() to avoid
-+                           warnings from picky compiler */
-     fd = mch_fopen((char *)fname, "w");
-     if (fd == NULL)
-@@ -7936,11 +8121,11 @@
-     /* <HEADER>: <fileID> <versionnr> */
-                                                           /* <fileID> */
--    if (fwrite(VIMSPELLMAGIC, VIMSPELLMAGICL, (size_t)1, fd) != 1)
--    {
--      EMSG(_(e_write));
--      retval = FAIL;
--    }
-+    fwv &= fwrite(VIMSPELLMAGIC, VIMSPELLMAGICL, (size_t)1, fd);
-+    if (fwv != (size_t)1)
-+      /* Catch first write error, don't try writing more. */
-+      goto theend;
-+
-     putc(VIMSPELLVERSION, fd);                                    /* <versionnr> */
-     /*
-@@ -7955,7 +8140,7 @@
-       i = (int)STRLEN(spin->si_info);
-       put_bytes(fd, (long_u)i, 4);                    /* <sectionlen> */
--      fwrite(spin->si_info, (size_t)i, (size_t)1, fd); /* <infotext> */
-+      fwv &= fwrite(spin->si_info, (size_t)i, (size_t)1, fd); /* <infotext> */
-     }
-     /* SN_REGION: <regionname> ...
-@@ -7966,7 +8151,7 @@
-       putc(SNF_REQUIRED, fd);                         /* <sectionflags> */
-       l = spin->si_region_count * 2;
-       put_bytes(fd, (long_u)l, 4);                    /* <sectionlen> */
--      fwrite(spin->si_region_name, (size_t)l, (size_t)1, fd);
-+      fwv &= fwrite(spin->si_region_name, (size_t)l, (size_t)1, fd);
-                                                       /* <regionname> ... */
-       regionmask = (1 << spin->si_region_count) - 1;
-     }
-@@ -8016,7 +8201,7 @@
-       }
-       put_bytes(fd, (long_u)l, 2);                    /* <folcharslen> */
--      fwrite(folchars, (size_t)l, (size_t)1, fd);     /* <folchars> */
-+      fwv &= fwrite(folchars, (size_t)l, (size_t)1, fd); /* <folchars> */
-     }
-     /* SN_MIDWORD: <midword> */
-@@ -8027,7 +8212,8 @@
-       i = (int)STRLEN(spin->si_midword);
-       put_bytes(fd, (long_u)i, 4);                    /* <sectionlen> */
--      fwrite(spin->si_midword, (size_t)i, (size_t)1, fd); /* <midword> */
-+      fwv &= fwrite(spin->si_midword, (size_t)i, (size_t)1, fd);
-+                                                      /* <midword> */
-     }
-     /* SN_PREFCOND: <prefcondcnt> <prefcond> ... */
-@@ -8113,7 +8299,8 @@
-               p = rr == 1 ? ftp->ft_from : ftp->ft_to;
-               l = (int)STRLEN(p);
-               putc(l, fd);
--              fwrite(p, l, (size_t)1, fd);
-+              if (l > 0)
-+                  fwv &= fwrite(p, l, (size_t)1, fd);
-           }
-       }
-@@ -8131,11 +8318,11 @@
-                                                       /* <sectionlen> */
-       put_bytes(fd, (long_u)l, 2);                    /* <sofofromlen> */
--      fwrite(spin->si_sofofr, l, (size_t)1, fd);      /* <sofofrom> */
-+      fwv &= fwrite(spin->si_sofofr, l, (size_t)1, fd); /* <sofofrom> */
-       l = (int)STRLEN(spin->si_sofoto);
-       put_bytes(fd, (long_u)l, 2);                    /* <sofotolen> */
--      fwrite(spin->si_sofoto, l, (size_t)1, fd);      /* <sofoto> */
-+      fwv &= fwrite(spin->si_sofoto, l, (size_t)1, fd); /* <sofoto> */
-     }
-     /* SN_WORDS: <word> ...
-@@ -8160,7 +8347,7 @@
-                   l = (int)STRLEN(hi->hi_key) + 1;
-                   len += l;
-                   if (round == 2)                     /* <word> */
--                      fwrite(hi->hi_key, (size_t)l, (size_t)1, fd);
-+                      fwv &= fwrite(hi->hi_key, (size_t)l, (size_t)1, fd);
-                   --todo;
-               }
-           if (round == 1)
-@@ -8176,7 +8363,7 @@
-       putc(0, fd);                                    /* <sectionflags> */
-       l = spin->si_map.ga_len;
-       put_bytes(fd, (long_u)l, 4);                    /* <sectionlen> */
--      fwrite(spin->si_map.ga_data, (size_t)l, (size_t)1, fd);
-+      fwv &= fwrite(spin->si_map.ga_data, (size_t)l, (size_t)1, fd);
-                                                       /* <mapstr> */
-     }
-@@ -8232,10 +8419,11 @@
-       {
-           p = ((char_u **)(spin->si_comppat.ga_data))[i];
-           putc((int)STRLEN(p), fd);                   /* <comppatlen> */
--          fwrite(p, (size_t)STRLEN(p), (size_t)1, fd);/* <comppattext> */
-+          fwv &= fwrite(p, (size_t)STRLEN(p), (size_t)1, fd);
-+                                                      /* <comppattext> */
-       }
-                                                       /* <compflags> */
--      fwrite(spin->si_compflags, (size_t)STRLEN(spin->si_compflags),
-+      fwv &= fwrite(spin->si_compflags, (size_t)STRLEN(spin->si_compflags),
-                                                              (size_t)1, fd);
-     }
-@@ -8259,7 +8447,8 @@
-       l = (int)STRLEN(spin->si_syllable);
-       put_bytes(fd, (long_u)l, 4);                    /* <sectionlen> */
--      fwrite(spin->si_syllable, (size_t)l, (size_t)1, fd); /* <syllable> */
-+      fwv &= fwrite(spin->si_syllable, (size_t)l, (size_t)1, fd);
-+                                                      /* <syllable> */
-     }
-     /* end of <SECTIONS> */
-@@ -8295,13 +8484,18 @@
-       (void)put_node(fd, tree, 0, regionmask, round == 3);
-     }
--    /* Write another byte to check for errors. */
-+    /* Write another byte to check for errors (file system full). */
-     if (putc(0, fd) == EOF)
-       retval = FAIL;
--
-+theend:
-     if (fclose(fd) == EOF)
-       retval = FAIL;
-+    if (fwv != (size_t)1)
-+      retval = FAIL;
-+    if (retval == FAIL)
-+      EMSG(_(e_write));
-+
-     return retval;
- }
-@@ -9890,6 +10084,7 @@
-     char_u    *p;
-     int               len;
-     int               totlen;
-+    size_t    x = 1;  /* collect return value of fwrite() */
-     if (fd != NULL)
-       put_bytes(fd, (long_u)gap->ga_len, 2);      /* <prefcondcnt> */
-@@ -9906,7 +10101,7 @@
-           if (fd != NULL)
-           {
-               fputc(len, fd);
--              fwrite(p, (size_t)len, (size_t)1, fd);
-+              x &= fwrite(p, (size_t)len, (size_t)1, fd);
-           }
-           totlen += len;
-       }
-@@ -11480,15 +11675,24 @@
-                   vim_strncpy(preword + sp->ts_prewordlen,
-                           tword + sp->ts_splitoff,
-                           sp->ts_twordlen - sp->ts_splitoff);
--                  p = preword;
--                  while (*skiptowhite(p) != NUL)
--                      p = skipwhite(skiptowhite(p));
--                  if (fword_ends && !can_compound(slang, p,
--                                              compflags + sp->ts_compsplit))
--                      /* Compound is not allowed.  But it may still be
--                       * possible if we add another (short) word. */
-+
-+                  /* Verify CHECKCOMPOUNDPATTERN  rules. */
-+                  if (match_checkcompoundpattern(preword,  sp->ts_prewordlen,
-+                                                        &slang->sl_comppat))
-                       compound_ok = FALSE;
-+                  if (compound_ok)
-+                  {
-+                      p = preword;
-+                      while (*skiptowhite(p) != NUL)
-+                          p = skipwhite(skiptowhite(p));
-+                      if (fword_ends && !can_compound(slang, p,
-+                                              compflags + sp->ts_compsplit))
-+                          /* Compound is not allowed.  But it may still be
-+                           * possible if we add another (short) word. */
-+                          compound_ok = FALSE;
-+                  }
-+
-                   /* Get pointer to last char of previous word. */
-                   p = preword + sp->ts_prewordlen;
-                   mb_ptr_back(preword, p);
-@@ -11685,10 +11889,9 @@
-                       && (slang->sl_compsylmax < MAXWLEN
-                           || sp->ts_complen + 1 - sp->ts_compsplit
-                                                         < slang->sl_compmax)
--                      && (byte_in_str(sp->ts_complen == sp->ts_compsplit
--                                          ? slang->sl_compstartflags
--                                          : slang->sl_compallflags,
--                                                  ((unsigned)flags >> 24))))
-+                      && (can_be_compound(sp, slang,
-+                                       compflags, ((unsigned)flags >> 24))))
-+
-               {
-                   try_compound = TRUE;
-                   compflags[sp->ts_complen] = ((unsigned)flags >> 24);
-diff -Naur vim72.orig/src/structs.h vim72/src/structs.h
---- vim72.orig/src/structs.h   2008-07-30 21:02:50.000000000 +0100
-+++ vim72/src/structs.h        2008-12-06 11:37:49.000000000 +0000
-@@ -459,7 +459,7 @@
- typedef struct
- {
-     int               hide;                   /* TRUE when ":hide" was used */
--# ifdef FEAT_BROWSE
-+# ifdef FEAT_BROWSE_CMD
-     int               browse;                 /* TRUE to invoke file dialog */
- # endif
- # ifdef FEAT_WINDOWS
-@@ -1784,10 +1784,15 @@
- #endif
-     /*
--     * The next three specify the offsets for displaying the buffer:
-+     * "w_topline", "w_leftcol" and "w_skipcol" specify the offsets for
-+     * displaying the buffer.
-      */
-     linenr_T  w_topline;          /* buffer line number of the line at the
-                                      top of the window */
-+#ifdef FEAT_AUTOCMD
-+    char      w_topline_was_set;  /* flag set to TRUE when topline is set,
-+                                     e.g. by winrestview() */
-+#endif
- #ifdef FEAT_DIFF
-     int               w_topfill;          /* number of filler lines above w_topline */
-     int               w_old_topfill;      /* w_topfill at last redraw */
-diff -Naur vim72.orig/src/testdir/Makefile vim72/src/testdir/Makefile
---- vim72.orig/src/testdir/Makefile    2008-06-19 21:29:46.000000000 +0100
-+++ vim72/src/testdir/Makefile 2008-12-06 11:37:48.000000000 +0000
-@@ -26,15 +26,17 @@
- .SUFFIXES: .in .out
--nongui:       nolog $(SCRIPTS)
--      @echo
--      @cat test.log
--      @echo ALL DONE
-+nongui:       nolog $(SCRIPTS) report
-+
-+gui:  nolog $(SCRIPTS) $(SCRIPTS_GUI) report
--gui:  nolog $(SCRIPTS) $(SCRIPTS_GUI)
-+report:
-       @echo
--      @cat test.log
--      @echo ALL DONE
-+      @echo 'Test results:'
-+      @/bin/sh -c "if test -f test.log; \
-+              then cat test.log; echo TEST FAILURE; exit 1; \
-+              else echo ALL DONE; \
-+              fi"
- $(SCRIPTS) $(SCRIPTS_GUI): $(VIMPROG)
-@@ -71,4 +73,4 @@
- test60.out: test60.vim
- nolog:
--      -echo Test results: >test.log
-+      -rm -f test.log
-diff -Naur vim72.orig/src/testdir/Make_ming.mak vim72/src/testdir/Make_ming.mak
---- vim72.orig/src/testdir/Make_ming.mak       1970-01-01 01:00:00.000000000 +0100
-+++ vim72/src/testdir/Make_ming.mak    2008-12-06 11:37:48.000000000 +0000
-@@ -0,0 +1,91 @@
-+# Makefile to run tests for Vim, on Dos-like machines
-+# with sh.exe or zsh.exe in the path or not.
-+#
-+# Author: Bill McCarthy
-+#
-+# Note that test54 has been removed until it is fixed.
-+#
-+# Requires a set of Unix tools: echo, diff, etc.
-+
-+ifneq (sh.exe, $(SHELL))
-+DEL = rm -f
-+MV = mv
-+CP = cp
-+DIRSLASH = /
-+else
-+DEL = del
-+MV = rename
-+CP = copy
-+DIRSLASH = \\
-+endif
-+
-+VIMPROG = ..$(DIRSLASH)vim
-+
-+# Omitted:
-+# test2               "\\tmp" doesn't work.
-+# test10      'errorformat' is different
-+# test12      can't unlink a swap file
-+# test25      uses symbolic link
-+# test27      can't edit file with "*" in file name
-+# test31      16 bit version runs out of memory...
-+
-+SCRIPTS16 =   test1.out test19.out test20.out test22.out \
-+              test23.out test24.out test28.out test29.out \
-+              test35.out test36.out test43.out \
-+              test44.out test45.out test46.out test47.out \
-+              test48.out test51.out test53.out            \
-+              test55.out test56.out test57.out test58.out test59.out \
-+              test60.out test61.out test62.out test63.out test64.out
-+
-+# Had to remove test54 which doesn't work yet.
-+#                                              test54.out
-+
-+SCRIPTS =     test3.out test4.out test5.out test6.out test7.out \
-+              test8.out test9.out test11.out test13.out test14.out \
-+              test15.out test17.out test18.out test21.out test26.out \
-+              test30.out test31.out test32.out test33.out test34.out \
-+              test37.out test38.out test39.out test40.out test41.out \
-+              test42.out test52.out test65.out
-+
-+SCRIPTS32 =   test50.out
-+
-+SCRIPTS_GUI = test16.out
-+
-+.SUFFIXES: .in .out
-+
-+vimall:       fixff $(SCRIPTS16) $(SCRIPTS) $(SCRIPTS_GUI) $(SCRIPTS32)
-+      echo ALL DONE
-+
-+nongui:       fixff $(SCRIPTS16) $(SCRIPTS)
-+      echo ALL DONE
-+
-+small:
-+      echo ALL DONE
-+
-+gui:  fixff $(SCRIPTS16) $(SCRIPTS) $(SCRIPTS_GUI)
-+      echo ALL DONE
-+
-+win32:        fixff $(SCRIPTS16) $(SCRIPTS) $(SCRIPTS32)
-+      echo ALL DONE
-+
-+fixff:
-+      -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=dos|upd" +q *.in *.ok
-+
-+clean:
-+      -$(DEL) *.out
-+      -$(DEL) test.ok
-+      -$(DEL) small.vim
-+      -$(DEL) tiny.vim
-+      -$(DEL) mbyte.vim
-+      -$(DEL) X*
-+      -$(DEL) viminfo
-+
-+.in.out:
-+      $(CP) $*.ok test.ok
-+      $(VIMPROG) -u dos.vim -U NONE --noplugin -s dotest.in $*.in
-+      diff test.out $*.ok
-+      -$(DEL) $*.out
-+      $(MV) test.out $*.out
-+      -$(DEL) X*
-+      -$(DEL) test.ok
-+      -$(DEL) viminfo
-diff -Naur vim72.orig/src/testdir/test30.in vim72/src/testdir/test30.in
---- vim72.orig/src/testdir/test30.in   2008-06-25 22:33:01.000000000 +0100
-+++ vim72/src/testdir/test30.in        2008-12-06 11:37:48.000000000 +0000
-@@ -24,10 +24,17 @@
- :set nobin eol
- :bwipe XXUnix XXDos XXMac
- :" create mixed format files
--:!cat XXUnix XXDos >XXUxDs
--:!cat XXUnix XXMac >XXUxMac
--:!cat XXDos XXMac >XXDosMac
--:!cat XXUnix XXDos XXMac >XXUxDsMc
-+:if has("vms")
-+: !copy XXUnix,XXDos XXUxDs.
-+: !copy XXUnix,XXMac XXUxMac.
-+: !copy XXDos,XXMac  XXDosMac.
-+: !copy XXUnix,XXDos,XXMac XXUxDsMc.
-+:else
-+: !cat XXUnix XXDos >XXUxDs
-+: !cat XXUnix XXMac >XXUxMac
-+: !cat XXDos XXMac >XXDosMac
-+: !cat XXUnix XXDos XXMac >XXUxDsMc
-+:endif
- :"
- :" try reading and writing with 'fileformats' empty
- :set fileformat=unix
-diff -Naur vim72.orig/src/testdir/test42.ok vim72/src/testdir/test42.ok
---- vim72.orig/src/testdir/test42.ok   2008-02-20 12:27:37.000000000 +0000
-+++ vim72/src/testdir/test42.ok        2008-12-06 11:37:49.000000000 +0000
-@@ -20,7 +20,7 @@
- ucs-2
--  fileencoding=ucs-2le
-+  fileencoding=utf-16le
-   bomb
- ucs-2le
-diff -Naur vim72.orig/src/testdir/test54.in vim72/src/testdir/test54.in
---- vim72.orig/src/testdir/test54.in   2005-01-01 11:21:16.000000000 +0000
-+++ vim72/src/testdir/test54.in        2008-12-06 11:37:48.000000000 +0000
-@@ -3,8 +3,13 @@
- STARTTEST
- :so small.vim
- :e xx
--:!rm -f test.out
--:au BufLeave <buffer> :!echo buffer-local autommand in %>> test.out
-+:if has("vms")
-+: !del test.out.*
-+: au BufLeave <buffer> :!write sys$output "buffer-local autommand in %" > test.out
-+:else
-+: !rm -f test.out
-+: au BufLeave <buffer> :!echo buffer-local autommand in %>> test.out
-+:endif
- :e somefile           " here, autocommand for xx shall write test.out 
- :                     " but autocommand shall not apply to buffer named <buffer>
- :bwipe xx             " here, autocommand shall be auto-deleted
-diff -Naur vim72.orig/src/ui.c vim72/src/ui.c
---- vim72.orig/src/ui.c        2008-07-14 19:14:56.000000000 +0100
-+++ vim72/src/ui.c     2008-12-06 11:37:50.000000000 +0000
-@@ -1820,7 +1820,7 @@
- #ifdef HAVE_DUP
-           /* Use stderr for stdin, also works for shell commands. */
-           close(0);
--          dup(2);
-+          ignored = dup(2);
- #else
-           read_cmd_fd = 2;    /* read from stderr instead of stdin */
- #endif
-@@ -2020,7 +2020,7 @@
-     if (value == NULL || *length == 0)
-     {
--      clip_free_selection(cbd);       /* ???  [what's the query?] */
-+      clip_free_selection(cbd);       /* nothing received, clear register */
-       *(int *)success = FALSE;
-       return;
-     }
-@@ -2076,7 +2076,7 @@
-       text_prop.value = (unsigned char *)value;
-       text_prop.encoding = *type;
-       text_prop.format = *format;
--      text_prop.nitems = STRLEN(value);
-+      text_prop.nitems = len;
-       status = XmbTextPropertyToTextList(X_DISPLAY, &text_prop,
-                                                        &text_list, &n_text);
-       if (status != Success || n_text < 1)
-@@ -2110,6 +2110,8 @@
-     int               i;
-     int               nbytes = 0;
-     char_u    *buffer;
-+    time_t    start_time;
-+    int               timed_out = FALSE;
-     for (i =
- #ifdef FEAT_MBYTE
-@@ -2129,6 +2131,7 @@
-           case 3:  type = text_atom;          break;
-           default: type = XA_STRING;
-       }
-+      success = MAYBE;
-       XtGetSelectionValue(myShell, cbd->sel_atom, type,
-           clip_x11_request_selection_cb, (XtPointer)&success, CurrentTime);
-@@ -2141,27 +2144,48 @@
-        * characters, then they will appear before the one that requested the
-        * paste!  Don't worry, we will catch up with any other events later.
-        */
--      for (;;)
-+      start_time = time(NULL);
-+      while (success == MAYBE)
-       {
--          if (XCheckTypedEvent(dpy, SelectionNotify, &event))
--              break;
--          if (XCheckTypedEvent(dpy, SelectionRequest, &event))
--              /* We may get a SelectionRequest here and if we don't handle
--               * it we hang.  KDE klipper does this, for example. */
-+          if (XCheckTypedEvent(dpy, SelectionNotify, &event)
-+                  || XCheckTypedEvent(dpy, SelectionRequest, &event)
-+                  || XCheckTypedEvent(dpy, PropertyNotify, &event))
-+          {
-+              /* This is where clip_x11_request_selection_cb() should be
-+               * called.  It may actually happen a bit later, so we loop
-+               * until "success" changes.
-+               * We may get a SelectionRequest here and if we don't handle
-+               * it we hang.  KDE klipper does this, for example.
-+               * We need to handle a PropertyNotify for large selections. */
-               XtDispatchEvent(&event);
-+              continue;
-+          }
-+
-+          /* Time out after 2 to 3 seconds to avoid that we hang when the
-+           * other process doesn't respond.  Note that the SelectionNotify
-+           * event may still come later when the selection owner comes back
-+           * to life and the text gets inserted unexpectedly.  Don't know
-+           * why that happens or how to avoid that :-(. */
-+          if (time(NULL) > start_time + 2)
-+          {
-+              timed_out = TRUE;
-+              break;
-+          }
-           /* Do we need this?  Probably not. */
-           XSync(dpy, False);
--          /* Bernhard Walle solved a slow paste response in an X terminal by
--           * adding: usleep(10000); here. */
-+          /* Wait for 1 msec to avoid that we eat up all CPU time. */
-+          ui_delay(1L, TRUE);
-       }
--      /* this is where clip_x11_request_selection_cb() is actually called */
--      XtDispatchEvent(&event);
--
--      if (success)
-+      if (success == TRUE)
-           return;
-+
-+      /* don't do a retry with another type after timing out, otherwise we
-+       * hang for 15 seconds. */
-+      if (timed_out)
-+          break;
-     }
-     /* Final fallback position - use the X CUT_BUFFER0 store */
-diff -Naur vim72.orig/src/version.c vim72/src/version.c
---- vim72.orig/src/version.c   2008-08-09 15:24:52.000000000 +0100
-+++ vim72/src/version.c        2008-12-06 11:37:50.000000000 +0000
-@@ -677,9 +677,152 @@
- static int included_patches[] =
- {   /* Add new patch number below this line */
- /**/
-+    65,
-+/**/
-+    64,
-+/**/
-+    63,
-+/**/
-+    62,
-+/**/
-+    61,
-+/**/
-+    60,
-+/**/
-+    59,
-+/**/
-+    58,
-+/**/
-+    57,
-+/**/
-+    56,
-+/**/
-+    55,
-+/**/
-+    54,
-+/**/
-+    53,
-+/**/
-+    52,
-+/**/
-+    51,
-+/**/
-+    50,
-+/**/
-+    49,
-+/**/
-+    48,
-+/**/
-+    47,
-+/**/
-+    46,
-+/**/
-+    45,
-+/**/
-+    44,
-+/**/
-+    43,
-+/**/
-+    42,
-+/**/
-+    41,
-+/**/
-+    40,
-+/**/
-+    39,
-+/**/
-+    38,
-+/**/
-+    37,
-+/**/
-+    36,
-+/**/
-+    35,
-+/**/
-+    34,
-+/**/
-+    33,
-+/**/
-+    32,
-+/**/
-+    31,
-+/**/
-+    30,
-+/**/
-+    29,
-+/**/
-+    28,
-+/**/
-+    27,
-+/**/
-+    26,
-+/**/
-+    25,
-+/**/
-+    24,
-+/**/
-+    23,
-+/**/
-+    22,
-+/**/
-+    21,
-+/**/
-+    20,
-+/**/
-+    19,
-+/**/
-+    18,
-+/**/
-+    17,
-+/**/
-+    16,
-+/**/
-+    15,
-+/**/
-+    14,
-+/**/
-+    13,
-+/**/
-+    12,
-+/**/
-+    11,
-+/**/
-+    10,
-+/**/
-+    9,
-+/**/
-+    8,
-+/**/
-+    7,
-+/**/
-+    6,
-+/**/
-+    5,
-+/**/
-+    4,
-+/**/
-+    3,
-+/**/
-+    2,
-+/**/
-+    1,
-+/**/
-     0
- };
-+/*
-+ * Place to put a short description when adding a feature with a patch.
-+ * Keep it short, e.g.,: "relative numbers", "persistent undo".
-+ * Also add a comment marker to separate the lines.
-+ * See the official Vim patches for the diff format: It must use a context of
-+ * one line only.  Use "diff -C2".
-+ */
-+static char *(extra_patches[]) =
-+{   /* Add your patch description below this line */
-+/**/
-+    NULL
-+};
-+
-     int
- highest_patch()
- {
-@@ -786,7 +929,7 @@
-     MSG_PUTS(_("\nRISC OS version"));
- #endif
- #ifdef VMS
--    MSG_PUTS("\nOpenVMS version");
-+    MSG_PUTS(_("\nOpenVMS version"));
- # ifdef HAVE_PATHDEF
-     if (*compiled_arch != NUL)
-     {
-@@ -825,6 +968,19 @@
-       }
-     }
-+    /* Print the list of extra patch descriptions if there is at least one. */
-+    if (extra_patches[0] != NULL)
-+    {
-+      MSG_PUTS(_("\nExtra patches: "));
-+      s = "";
-+      for (i = 0; extra_patches[i] != NULL; ++i)
-+      {
-+          MSG_PUTS(s);
-+          s = ", ";
-+          MSG_PUTS(extra_patches[i]);
-+      }
-+    }
-+
- #ifdef MODIFIED_BY
-     MSG_PUTS("\n");
-     MSG_PUTS(_("Modified by "));
-diff -Naur vim72.orig/src/vim.h vim72/src/vim.h
---- vim72.orig/src/vim.h       2008-08-09 17:03:38.000000000 +0100
-+++ vim72/src/vim.h    2008-12-06 11:37:50.000000000 +0000
-@@ -341,8 +341,14 @@
- #ifdef BACKSLASH_IN_FILENAME
- # define PATH_ESC_CHARS ((char_u *)" \t\n*?[{`%#'\"|!<")
- #else
--# define PATH_ESC_CHARS ((char_u *)" \t\n*?[{`$\\%#'\"|!<")
--# define SHELL_ESC_CHARS ((char_u *)" \t\n*?[{`$\\%#'\"|!<>();&")
-+# ifdef VMS
-+    /* VMS allows a lot of characters in the file name */
-+#  define PATH_ESC_CHARS ((char_u *)" \t\n*?{`\\%#'\"|!")
-+#  define SHELL_ESC_CHARS ((char_u *)" \t\n*?{`\\%#'|!()&")
-+# else
-+#  define PATH_ESC_CHARS ((char_u *)" \t\n*?[{`$\\%#'\"|!<")
-+#  define SHELL_ESC_CHARS ((char_u *)" \t\n*?[{`$\\%#'\"|!<>();&")
-+# endif
- #endif
- #define NUMBUFLEN 30      /* length of a buffer to store a number in ASCII */
-@@ -370,7 +376,7 @@
-    * Define __w64 as an empty token for everything but MSVC 7.x or later.
-    */
- # if !defined(_MSC_VER)       || (_MSC_VER < 1300)
--#  define __w64 
-+#  define __w64
- # endif
- typedef unsigned long __w64   long_u;
- typedef                long __w64     long_i;
-@@ -1728,7 +1734,8 @@
- #define VV_MOUSE_COL  51
- #define VV_OP         52
- #define VV_SEARCHFORWARD 53
--#define VV_LEN                54      /* number of v: vars */
-+#define VV_OLDFILES   54
-+#define VV_LEN                55      /* number of v: vars */
- #ifdef FEAT_CLIPBOARD
-@@ -1979,6 +1986,9 @@
- # endif
- #endif
-+#ifndef FEAT_NETBEANS_INTG
-+# undef NBDEBUG
-+#endif
- #ifdef NBDEBUG /* Netbeans debugging. */
- # include "nbdebug.h"
- #else
-@@ -2054,4 +2064,10 @@
- #define DOSO_VIMRC    1       /* loading vimrc file */
- #define DOSO_GVIMRC   2       /* loading gvimrc file */
-+/* flags for read_viminfo() and children */
-+#define VIF_WANT_INFO         1       /* load non-mark info */
-+#define VIF_WANT_MARKS                2       /* load file marks */
-+#define VIF_FORCEIT           4       /* overwrite info already read */
-+#define VIF_GET_OLDFILES      8       /* load v:oldfiles */
-+
- #endif /* VIM__H */
-diff -Naur vim72.orig/src/window.c vim72/src/window.c
---- vim72.orig/src/window.c    2008-08-06 12:00:30.000000000 +0100
-+++ vim72/src/window.c 2008-12-06 11:37:50.000000000 +0000
-@@ -531,7 +531,8 @@
- # ifdef FEAT_SCROLLBIND
-                       curwin->w_p_scb = FALSE;
- # endif
--                      (void)do_ecmd(0, ptr, NULL, NULL, ECMD_LASTL, ECMD_HIDE);
-+                      (void)do_ecmd(0, ptr, NULL, NULL, ECMD_LASTL,
-+                                                         ECMD_HIDE, NULL);
-                       if (nchar == 'F' && lnum >= 0)
-                       {
-                           curwin->w_cursor.lnum = lnum;
-@@ -4028,14 +4029,14 @@
-           if (mch_dirname(cwd, MAXPATHL) == OK)
-               globaldir = vim_strsave(cwd);
-       }
--      mch_chdir((char *)curwin->w_localdir);
--      shorten_fnames(TRUE);
-+      if (mch_chdir((char *)curwin->w_localdir) == 0)
-+          shorten_fnames(TRUE);
-     }
-     else if (globaldir != NULL)
-     {
-       /* Window doesn't have a local directory and we are not in the global
-        * directory: Change to the global directory. */
--      mch_chdir((char *)globaldir);
-+      ignored = mch_chdir((char *)globaldir);
-       vim_free(globaldir);
-       globaldir = NULL;
-       shorten_fnames(TRUE);
-diff -Naur vim72.orig/src/workshop.c vim72/src/workshop.c
---- vim72.orig/src/workshop.c  2008-06-21 19:53:26.000000000 +0100
-+++ vim72/src/workshop.c       2008-12-06 11:37:50.000000000 +0000
-@@ -1121,8 +1121,12 @@
-                                     ? (char *)curbuf->b_sfname : "<None>");
- #endif
--    strcpy(ffname, (char *) curbuf->b_ffname);
--    *filename = ffname;               /* copy so nobody can change b_ffname */
-+    if (curbuf->b_ffname == NULL)
-+      ffname[0] = NUL;
-+    else
-+      /* copy so nobody can change b_ffname */
-+      strcpy(ffname, (char *) curbuf->b_ffname);
-+    *filename = ffname;
-     *curLine = curwin->w_cursor.lnum;
-     *curCol = curwin->w_cursor.col;
diff --git a/src/patches/vim-7.2-mandir-1.patch b/src/patches/vim-7.2-mandir-1.patch
deleted file mode 100644 (file)
index 4038442..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-Submitted By: Alexander E. Patrakov
-Date: 2006-05-27
-Initial Package Version: 7.0
-Upstream status: LFS specific
-Description: Adjusts installation of manual pages to meet Man-DB expectations.
-
-             Additional change to explicitly install the man pages into
-            /usr/share/man instead of /usr/man by Ag Hatzim.
-
---- vim70/src/Makefile.orig    2006-05-27 12:49:31.767959808 +0300
-+++ vim70/src/Makefile 2006-05-27 12:49:55.778309680 +0300
-@@ -867,7 +867,7 @@
- # Uncomment the next line to install Vim in "/usr/bin"
- #BINDIR   = /usr/bin
- # Uncomment the next line to install Vim manuals in "/usr/share/man/man1"
--#MANDIR   = /usr/share/man
-+MANDIR   = /usr/share/man
- # Uncomment the next line to install Vim help files in "/usr/share/vim"
- #DATADIR  = /usr/share
-@@ -1325,7 +1325,7 @@
- DEST_MAN_PL = $(DEST_MAN_TOP)/pl$(MAN1DIR)
- DEST_MAN_PL_I = $(DEST_MAN_TOP)/pl.ISO8859-2$(MAN1DIR)
- DEST_MAN_PL_U = $(DEST_MAN_TOP)/pl.UTF-8$(MAN1DIR)
--DEST_MAN_RU = $(DEST_MAN_TOP)/ru.KOI8-R$(MAN1DIR)
-+DEST_MAN_RU = $(DEST_MAN_TOP)/ru$(MAN1DIR)
- DEST_MAN_RU_U = $(DEST_MAN_TOP)/ru.UTF-8$(MAN1DIR)
- #          BASIC_SRC: files that are always used
-@@ -1905,52 +1905,24 @@
- # install the language specific files for tools, if they were unpacked
- install-tool-languages:
-       -$(SHELL) ./installman.sh xxd $(DEST_MAN_FR) "-fr" $(INSTALLMANARGS)
--      -$(SHELL) ./installman.sh xxd $(DEST_MAN_FR_I) "-fr" $(INSTALLMANARGS)
--      -$(SHELL) ./installman.sh xxd $(DEST_MAN_FR_U) "-fr.UTF-8" $(INSTALLMANARGS)
-       -$(SHELL) ./installman.sh xxd $(DEST_MAN_IT) "-it" $(INSTALLMANARGS)
--      -$(SHELL) ./installman.sh xxd $(DEST_MAN_IT_I) "-it" $(INSTALLMANARGS)
--      -$(SHELL) ./installman.sh xxd $(DEST_MAN_IT_U) "-it.UTF-8" $(INSTALLMANARGS)
-       -$(SHELL) ./installman.sh xxd $(DEST_MAN_PL) "-pl" $(INSTALLMANARGS)
--      -$(SHELL) ./installman.sh xxd $(DEST_MAN_PL_I) "-pl" $(INSTALLMANARGS)
--      -$(SHELL) ./installman.sh xxd $(DEST_MAN_PL_U) "-pl.UTF-8" $(INSTALLMANARGS)
-       -$(SHELL) ./installman.sh xxd $(DEST_MAN_RU) "-ru" $(INSTALLMANARGS)
--      -$(SHELL) ./installman.sh xxd $(DEST_MAN_RU_U) "-ru.UTF-8" $(INSTALLMANARGS)
- # install the language specific files, if they were unpacked
- install-languages: languages $(DEST_LANG) $(DEST_KMAP)
-       -$(SHELL) ./installman.sh install $(DEST_MAN_FR) "-fr" $(INSTALLMANARGS)
--      -$(SHELL) ./installman.sh install $(DEST_MAN_FR_I) "-fr" $(INSTALLMANARGS)
--      -$(SHELL) ./installman.sh install $(DEST_MAN_FR_U) "-fr.UTF-8" $(INSTALLMANARGS)
-       -$(SHELL) ./installman.sh install $(DEST_MAN_IT) "-it" $(INSTALLMANARGS)
--      -$(SHELL) ./installman.sh install $(DEST_MAN_IT_I) "-it" $(INSTALLMANARGS)
--      -$(SHELL) ./installman.sh install $(DEST_MAN_IT_U) "-it.UTF-8" $(INSTALLMANARGS)
-       -$(SHELL) ./installman.sh install $(DEST_MAN_PL) "-pl" $(INSTALLMANARGS)
--      -$(SHELL) ./installman.sh install $(DEST_MAN_PL_I) "-pl" $(INSTALLMANARGS)
--      -$(SHELL) ./installman.sh install $(DEST_MAN_PL_U) "-pl.UTF-8" $(INSTALLMANARGS)
-       -$(SHELL) ./installman.sh install $(DEST_MAN_RU) "-ru" $(INSTALLMANARGS)
--      -$(SHELL) ./installman.sh install $(DEST_MAN_RU_U) "-ru.UTF-8" $(INSTALLMANARGS)
-       -$(SHELL) ./installml.sh install "$(GUI_MAN_TARGETS)" \
-               $(DEST_MAN_FR) $(INSTALLMLARGS)
-       -$(SHELL) ./installml.sh install "$(GUI_MAN_TARGETS)" \
--              $(DEST_MAN_FR_I) $(INSTALLMLARGS)
--      -$(SHELL) ./installml.sh install "$(GUI_MAN_TARGETS)" \
--              $(DEST_MAN_FR_U) $(INSTALLMLARGS)
--      -$(SHELL) ./installml.sh install "$(GUI_MAN_TARGETS)" \
-               $(DEST_MAN_IT) $(INSTALLMLARGS)
-       -$(SHELL) ./installml.sh install "$(GUI_MAN_TARGETS)" \
--              $(DEST_MAN_IT_I) $(INSTALLMLARGS)
--      -$(SHELL) ./installml.sh install "$(GUI_MAN_TARGETS)" \
--              $(DEST_MAN_IT_U) $(INSTALLMLARGS)
--      -$(SHELL) ./installml.sh install "$(GUI_MAN_TARGETS)" \
-               $(DEST_MAN_PL) $(INSTALLMLARGS)
-       -$(SHELL) ./installml.sh install "$(GUI_MAN_TARGETS)" \
--              $(DEST_MAN_PL_I) $(INSTALLMLARGS)
--      -$(SHELL) ./installml.sh install "$(GUI_MAN_TARGETS)" \
--              $(DEST_MAN_PL_U) $(INSTALLMLARGS)
--      -$(SHELL) ./installml.sh install "$(GUI_MAN_TARGETS)" \
-               $(DEST_MAN_RU) $(INSTALLMLARGS)
--      -$(SHELL) ./installml.sh install "$(GUI_MAN_TARGETS)" \
--              $(DEST_MAN_RU_U) $(INSTALLMLARGS)
-       if test -n "$(MAKEMO)" -a -f $(PODIR)/Makefile; then \
-          cd $(PODIR); $(MAKE) prefix=$(DESTDIR)$(prefix) LOCALEDIR=$(DEST_LANG) \
-          INSTALL_DATA=$(INSTALL_DATA) FILEMOD=$(FILEMOD) install; \
index f943ac83e0dae25e89d8db161e45e6fbf4807725..12c0f1df5f19853160f5c212bb91c15cd8889ec1 100644 (file)
@@ -637,7 +637,42 @@ if ($ip ne $ipcache) {
                            } else {
                                &General::log("Dynamic DNS ip-update for $settings{'HOSTDOMAIN'} : failure (could not connect to server)");
                            }
-                       } else {
+                       }
+                       elsif ($settings{'SERVICE'} eq 'udmedia.de') {
+                           # use proxy ?
+                           my %proxysettings;
+                           &General::readhash("${General::swroot}/proxy/settings", \%proxysettings);
+                           if ($_=$proxysettings{'UPSTREAM_PROXY'}) {
+                               my ($peer, $peerport) = (/^(?:[a-zA-Z ]+\:\/\/)?(?:[A-Za-z0-9\_\.\-]*?(?:\:[A-Za-z0-9\_\.\-]*?)?\@)?([a-zA-Z0-9\.\_\-]*?)(?:\:([0-9]{1,5}))?(?:\/.*?)?$/);
+                               Net::SSLeay::set_proxy($peer,$peerport,$proxysettings{'UPSTREAM_USER'},$proxysettings{'UPSTREAM_PASSWORD'} );
+                           }
+
+                           if ($settings{'HOSTNAME'} eq '') {
+                               $settings{'HOSTDOMAIN'} = $settings{'DOMAIN'};
+                           } else {
+                               $settings{'HOSTDOMAIN'} = "$settings{'HOSTNAME'}.$settings{'DOMAIN'}";
+                           }
+
+                           my ($out, $response) = Net::SSLeay::get_https( 'www.udmedia.de',
+                                                                           443,
+                                                                           "/nic/update?myip=$ip&username=$settings{'HOSTDOMAIN'}&password=$settings{'PASSWORD'}",
+                                                                           Net::SSLeay::make_headers('User-Agent' => 'IPFire',
+                                                                                                     'Authorization' => 'Basic ' . encode_base64("$settings{'LOGIN'}:$settings{'PASSWORD'}")) );
+
+                           # Valid response are 'ok'   'nochange'
+                           if ($response =~ m%HTTP/1\.. 200 OK%) {
+                               if ( $out !~ m/^(ok|nochg)/ ) {
+                                   $out =~ s/\n/ /g;
+                                   &General::log("Dynamic DNS ip-update for $settings{'HOSTDOMAIN'} : failure ($out)");
+                               } else {
+                                   &General::log("Dynamic DNS ip-update for $settings{'HOSTDOMAIN'} : success");
+                                   $success++;
+                               }
+                           } else {
+                               &General::log("Dynamic DNS ip-update for $settings{'HOSTDOMAIN'} : failure (could not connect to server, check your credentials---$out-$response--)");
+                           }
+                       }
+                       else {
                                if ($settings{'WILDCARDS'} eq 'on') {
                                    $settings{'WILDCARDS'} = '-w';
                                } else {
index 7bacec10d6d31a815f56fd20a313b35c36950b7c..48fc6d434dd5ef0e7c5535800f73df6d383edb8a 100644 (file)
@@ -222,25 +222,25 @@ if [ 'x86_64' = $MACHINE -o 'i686' = $MACHINE -o 'i586' = $MACHINE ]; then
        MACHINE=i586
        CROSSTARGET=${MACHINE}-cross-linux-gnu
        BUILDTARGET=i586-pc-linux-gnu
-       CFLAGS="-O2 -march=i586 -pipe -fomit-frame-pointer"
-       CXXFLAGS="-O2 -march=i586 -pipe -fomit-frame-pointer"
-       C2FLAGS="-O2 -march=i586 -mtune=i586 -pipe -fomit-frame-pointer"
-       CXX2FLAGS="-O2 -march=i586 -mtune=i586 -pipe -fomit-frame-pointer"
+       CFLAGS_ARCH="${GLOBAL_CFLAGS} -march=i586 -fomit-frame-pointer"
 elif [ 'armv5tejl' = $MACHINE -o 'armv5tel' = $MACHINE -o 'armv6l' = $MACHINE -o 'armv7l' = $MACHINE ]; then
        echo "`date -u '+%b %e %T'`: Machine is ARM (or equivalent)" >> $LOGFILE
        MACHINE=armv5tel
        MACHINE_TYPE=arm
        CROSSTARGET=${MACHINE}-cross-linux-gnueabi
        BUILDTARGET=${MACHINE}-unknown-linux-gnueabi
-       CFLAGS="-O2 -march=armv5te -mfloat-abi=soft -fomit-frame-pointer -pipe"
-       CXXFLAGS="$CFLAGS"
-       C2FLAGS="$CFLAGS"
-       CXX2FLAGS="$CXXFLAGS"
+       CFLAGS_ARCH="-march=armv5te -mfloat-abi=soft -fomit-frame-pointer"
 else
        echo "`date -u '+%b %e %T'`: Can't determine your architecture - $MACHINE"
        exit 1
 fi
 
+CFLAGS="-O2 -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fPIC"
+CFLAGS="${CFLAGS} -fstack-protector-all --param=ssp-buffer-size=4 ${CFLAGS_ARCH}"
+CXXFLAGS="${CFLAGS}"
+C2FLAGS="${CFLAGS}"
+CXX2FLAGS="${CXXFLAGS}"
+
 # Define immediately
 stdumount() {
        umount $BASEDIR/build/sys                       2>/dev/null;
@@ -414,7 +414,8 @@ lfsmake2() {
        chroot $LFS /tools/bin/env -i   HOME=/root \
                                                TERM=$TERM PS1='\u:\w\$ ' \
                                                PATH=/tools/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
-                                               VERSION=$VERSION \
+                                               VERSION=$VERSION PAKFIRE_CORE="${PAKFIRE_CORE}" \
+                                               SYSTEM_RELEASE="${SYSTEM_RELEASE}" \
                                                CONFIG_ROOT=$CONFIG_ROOT \
                                                NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
                                                CFLAGS="$C2FLAGS" CXXFLAGS="$CXX2FLAGS" \
@@ -453,6 +454,7 @@ ipfiremake() {
                                                CORE=$CORE \
                                                CONFIG_ROOT=$CONFIG_ROOT \
                                                NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
+                                               SYSTEM_RELEASE="$SYSTEM_RELEASE" \
                                                CFLAGS="$C2FLAGS" CXXFLAGS="$CXX2FLAGS" \
                                                CCACHE_DIR=/usr/src/ccache CCACHE_COMPRESS=1 \
                                                CCACHE_COMPILERCHECK="none" \
@@ -521,6 +523,7 @@ installmake() {
                                                TERM=$TERM PS1='\u:\w\$ ' \
                                                PATH=/tools/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin \
                                                VERSION=$VERSION \
+                                               SYSTEM_RELEASE="${SYSTEM_RELEASE}" \
                                                CONFIG_ROOT=$CONFIG_ROOT \
                                                NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
                                                CFLAGS="-Os" CXXFLAGS="-Os" \